I'd like to manage the configuration of several devices running embedded Linux.

There is a web server in my environment which has a SOAP interface I can use to get/set all the parameters of each of the devices I want to configure. The web server talks to the embedded Linux devices by sending SNMP messages, this is the only option I have for controlling them.

I'd like to use a configuration management tool to define each embedded device and then use the SOAP server to confgiure them, but I can't seem to find any examples with Puppet/Ansible for what I want to do (but maybe I've been googling for the wrong terms).

Puppet device sounds sort of like what I'm trying to do, it seems to be used to configure some types of network equipment but it still talks to the device nodes using ssh and runs commands in a shell on the node rather than using an intermediate proxy to get/set paramaters. I expect I'm going to have to write a custom provider (or the equivalent for a non-Puppet CM tool), is there a way to implement this in any configuration management tool? I'm sure there must be a reasonable way of doing this but I'm struggling to find examples of this sort of scenario.

| improve this question | | | | |
  • 1
    Chef/Puppet work with an agent on the server they're configuring. You need an agentless configuration management tool, preferably one that works with SNMP. – omribahumi Jul 26 '14 at 16:03
  • Please provide more details about the device and its OS. CFEngine has been run on Android and Busy Box. – Neil H Watson Jul 26 '14 at 18:58

My first thought would be this ... Your Central server that allows you to define all the configs could instead of making outbound requests to each device write out the in a format that is easily discovered by each individual node.

I use CFEngine, it's very light weight, fast and will run on just about anything. Each node checks in with a central policy server, by default every five minutes, but you can of course adjust the schedule as you see fit. The policy could have something in it to download that days that was generated by the central server. (The one that used to make SNMP calls) If there is new data then the cfengine agent could process that data and make the necessary adjustments.

| improve this answer | | | | |


Assuming that your devices running embedded Linux can run Python and Ansible, one solution would be to use the Ansible-pull script to have them check out your Ansible playbook from a central location and have the devices run ansible-playbook locally against it. This way you don't need to be able to access the devices via ssh.

You could call ansible-pull from a crontab and/or have it run after the devices boot.

See Ansible's documentation for more information.

| improve this answer | | | | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.