ansiblechef-infrapuppetsalt-projectconfiguration-management

Manage custom, machine specific configuration files in Salt


I am relatively new to Configuration Management tools for big infrastructure. The company will be using Salt for Linux and Windows, but I guess the question does not relate to specific tool.

The thing I don't get is, let's imagine we have 30 machines in cloud and couple of custom services installed for each of them. Versions can be different, depending on customer subscription. And each service has a config file that can have machine specific data. How you update config files for those services using Salt, or Puppet, Chef, Ansible kind of tools.


Solution

  • I don't know about Salt but in general in Configuration Management tools there is groups of hosts for several machines with the same configuration, templates and variables for customization for each machine for example you can specify variable port=8888 for host1 and port=9999 for host2 but nginx-template will be something like this:

    server {
            listen       {{port}};
           }
    

    for the both servers. The same idea with machine specific data example(ansible):

    - name: start container with mon
      docker:
        name: test-mongo
        state: reloaded
        image: mongo
      when: master_ip == ansible_default_ipv4.address
    

    where master_ip is my variable and ansible_default_ipv4.address is ip which ansible was connected to this host.

    Hope this helps.