All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Hatle <mark.hatle@windriver.com>
To: Ilya Dmitrichenko <errordeveloper@gmail.com>
Cc: yocto@yoctoproject.org
Subject: Re: configuration management on remote target
Date: Thu, 3 Jan 2013 17:57:09 -0600	[thread overview]
Message-ID: <50E61AD5.6070600@windriver.com> (raw)
In-Reply-To: <CAPhDKbHyqGUd5axL+fQVa0dbCF5yAjEEXmnexbb-ZwVJQKXfyA@mail.gmail.com>

On 1/3/13 5:43 PM, Ilya Dmitrichenko wrote:
> Hi,
>
> As my day job mostly involves configuring servers using puppet configuration
> management system, I had been thinking of what sort of tool would be best to use
> on an embedded devices where on some occasions one would want to update a couple
> of config files and scripts. Perhaps this can be limited just to the `/etc`
> direcotry...
>
> So the best I could come up with so far is to implement it as cron job that
> would pull a git repository, perhaps it would also run a script (git hook) that
> would restart a daemon or do something of that kind.
>
> I suppose that some people will suggest to just use packages, but I'm not very
> keen on maintaining a package repository on some sever out in the internet that
> would be one big single point of failure. Although, perhaps, on some occasion,
> this may be the only way.
> Another reason why I wouldn't like to use git to manage configuration, as that
> way all configs are going to be at hand from one directory tree, which is, IMO,
> much quicker to manage and validate rather then a recipes spread across
> subdirectories.

There are different systems out there that need to be managed (as well as 
different philosophies of how to manage them.)  Solving all of the problems 
isn't going to work.  Solving a specific problem has a chance.  :)

It's fairly typical that a device can be maintained as files, packages, or 
filesystem images.  Each of those approaches requires a very different 
upgrade/maintenance mechanism.  In addition since embedded systems do not have 
an admin console, if they fail during the upgrade process you can brick a user, 
so a fail safe is almost always required!

In each of the above methods, you can do things like transfer an individual file 
(or files) and related reset commands after an upgrade has occurred.. send up a 
package (or packages) and automate that -- or even upgrade the filesystem, but 
in each of these cases bandwidth may be at a premium.  Most field upgrade 
systems want a "delta" (diff) based system, where only the changes have to be 
sent, not the whole file.

> Firstly, I'd appreciate any feedback on this!
>
> And I do have a few rather more specific questions ;)

> a) How often OE users do not implement any system updates over the wire in their
> products, although the product is able to access the internet?

Due to the complexity of upgrading, this is fairly typical on embedded systems 
in my experience...but it's being tolerated less and less over time.  (They 
usually have some kind of an upgrade mechanism, they just don't do it over the 
internet.)

> b) Has anyone here use the configuration tools like puppet, chef or cfendgine
> and understands the benefits?
>
> c) Has anyone succeeded building git without having to include perl on the
> target? I'd probably get ways with just a subset of git commands.
> I have also had a look at libgit2, but not sure if I'd be able to implement
> something as robust as git itself with libgit2...

Last time I looked (a few months back) it was not possible to build a functional 
git system w/o perl -- or at least I wasn't able to.  I hope this continues to 
get better, as perl is -very- heavy weight for an embedded system.


So if you want the ultimate works for everyone system.. it really needs to be a 
field upgrade tool of some kind.  Basically providing the infrastructure to 
push/pull the update, a way to use a delta of the update to what is already 
installed on the device to construct the "file" to save bandwidth, a way to 
apply the update and control the associated behavior.  Then people can use that 
to implement file, package or image based upgrades... fail safe behavior is also 
usually device specific and would be implemented based on the toolkit.

>
> Cheers,
> --
> Ilya
>
>
>
> _______________________________________________
> yocto mailing list
> yocto@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
>



  reply	other threads:[~2013-01-03 23:57 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-03 23:43 configuration management on remote target Ilya Dmitrichenko
2013-01-03 23:57 ` Mark Hatle [this message]
2013-01-05 20:41   ` Ilya Dmitrichenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50E61AD5.6070600@windriver.com \
    --to=mark.hatle@windriver.com \
    --cc=errordeveloper@gmail.com \
    --cc=yocto@yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.