I’ve been working on creating a blog/video series about taking a ROS prototype to production using snaps and Ubuntu Core. Barring any unforeseen circumstances, I plan to publish one part per week. I will update this topic as the series continues.
Part 1: ROS Prototype to Production on Ubuntu Core
What you’ll actually see documented through the series itself is amd64-specific, but that’s only due to time constraints. All the same principles apply for other architectures: I’ve tested this series for the arm64 DragonBoard 410c, and have included it as reference information. Thank you for speaking up-- I’ll make sure I do the same for the rpi2/3.
Please follow along with the rest of the series, and if at the end you don’t quite understand what you need to do to apply it to ARM targets, I’d be happy to add a 6th part to the series devoted to discussing other architectures.
I would like to see a blog post/video related to mixing public/private snaps. For example, if I want to produce an image for factory production that involves both public snaps (e.g. from Ubuntu Store) and private snaps (special sauce) then what’s the best way to go about doing so?
I’ve only just begun reading through the docs, but I assume it will involve setting up a custom store.
I’d be happy to create a post about that. Can you explain a little more what you’re trying to do? There are a few possibilities that come to mind that we can converge on as I learn more about what you’re trying to do.
You can place private snaps in the store, but that means you actually need to authenticate as yourself on the target before you can update them (they’re private, thus invisible, unless the user to whom they belong is logged in).
You can leave snaps out of the store completely and place them into the image via --extra-snaps as mentioned in part 5, but then you run into the same issue: you can’t update them.
You can create a brand store, which is essentially your curated store, where you can release your snap like normal while keeping it private to the brand store.
You can purchase and host the commercial version of the store on premises.
You can set up your own open source store that corresponds to the snap store’s APIs (there’s at least one out there).
There are other options that get a little more complicated. Let me know if any of those sound interesting, and I’ll get started on another post.
working in a small team (dev team having access to in-house snaps)
installing in-house snaps on robots at the factory floor (ie. snaps not accessible public unless authorized)
deployed robots can received updates automatically (no end-user interaction required)
Perhaps something along the lines of your first two points would work for such a use case? Or, depending on cost, the brand store or commercial version (same thing?) installed locally may be a preferred solution.
When I get some more time to play around with snaps, I’m sure things will become more clear to me
Indeed, I’d say both of these can probably be satisfied by private snaps (which gives you updates) or just using --extra-snaps (which doesn’t give you updates because there’s no store in the loop).
To clarify, deployed in this case meaning not in-house? i.e. to customers? Indeed, private snaps won’t scale, and --extra-snaps won’t update. In this case, assuming you want to continue to keep those snaps private from the general public, a brand store will probably be easiest. It still uses Canonical’s hosted store, so you don’t need to maintain anything. If you want it onsite, that’s the other option, but unless that’s a requirement for you I’d say it’s just more work . It’s also probably more expensive (but that’s just conjecture on my part: I’m just an engineer).
Want me to put a post together discussing these three options (--extra-snaps, private, and brand stores)?
I was asked by several people how I made those videos, so I wrote up an article showing what I did and what I used. It was made very cheaply and with open-source software, so it might be useful to others wanting to do something similar.
@jacob my humble apologies for the delay, it’s been quite a summer!
I’ve written an article covering a few different ways to create an Ubuntu Core image using private snaps. Not all of the methods I mentioned in my brainstorm were possible, I’m afraid, and I didn’t have time to play with the open-source store, but this should at least get you started.