==== Salt ==== Salt is a new approach to infrastructure management. Easy enough to get running in minutes, scalable enough to manage tens of thousands of servers, and fast enough to communicate with them in seconds. Salt delivers a dynamic communication bus for infrastructures that can be used for orchestration, remote execution, configuration management and much more. Sample pillars ============== Salt master ----------- Salt master with base environment and pillar metadata source .. code-block:: yaml salt: master: enabled: true command_timeout: 5 worker_threads: 2 pillar: engine: salt source: engine: git address: 'git@repo.domain.com:salt/pillar-demo.git' branch: 'master' base_environment: prd environment: prd: enabled: true formula: linux: source: git address: 'git@repo.domain.com:salt/formula-linux.git' branch: 'master' salt: source: git address: 'git@repo.domain.com:salt/formula-salt.git' branch: 'master' openssh: source: git address: 'git@repo.domain.com:salt/formula-openssh.git' branch: 'master' Simple Salt master with base environment and custom states .. code-block:: yaml salt: master: ... environment: base: states: - name: gitlab source: git address: 'git@repo.domain.cz:salt/state-gitlab.git' branch: 'master' formulas: ... Salt master with reclass ENC .. code-block:: yaml salt: master: enabled: true ... pillar: engine: reclass data_dir: /srv/salt/reclass Salt master with windows repository .. code-block:: yaml salt: master: enabled: true ... windows_repo: type: git address: 'git@repo.domain.com:salt/win-packages.git' Salt master with API .. code-block:: yaml salt: master: ... api: enabled: true port: 8000 Salt master with preset minions .. code-block:: yaml salt: master: enabled: true ... minions: - name: 'node1.system.location.domain.com' Salt master syndicate master of masters .. code-block:: yaml salt: master: enabled: true ... syndic: mode: master Salt master syndicate (client) master .. code-block:: yaml salt: master: enabled: true ... syndicate: mode: client host: master-master Salt master with custom handlers .. code-block:: yaml salt: master: enabled: true command_timeout: 5 worker_threads: 2 environments: - name: base states: - source: git address: 'git@repo.domain.com:salt/state-ubuntu.git' branch: 'master' pillar: source: git address: 'git@repo.domain.com:salt/pillar-demo.git' branch: 'master' handlers: name: logstash type: udp bind: host: 127.0.0.1 port: 9999 minion: handlers: - engine: udp bind: host: 127.0.0.1 port: 9999 - engine: zmq bind: host: 127.0.0.1 port: 9999 Salt minion ----------- Simplest Salt minion .. code-block:: yaml salt: minion: enabled: true master: host: master.domain.com Multi-master Salt minion .. code-block:: yaml salt: minion: enabled: true masters: - host: master1.domain.com - host: master2.domain.com Salt minion with salt mine options .. code-block:: yaml salt: minion: enabled: true master: host: master.domain.com mine: interval: 60 module: grains.items: [] network.interfaces: [] Salt minion with graphing dependencies .. code-block:: yaml salt: minion: enabled: true graph_states: true master: host: master.domain.com Salt control (cloud/virt) ------------------------- Salt cloud with local OpenStack insecure (ignoring SSL cert errors) provider .. code-block:: yaml salt: control: enabled: true provider: openstack_account: engine: openstack insecure: true region: RegionOne identity_url: 'https://10.0.0.2:35357' tenant: devops user: user password: 'password' fixed_networks: - 123d3332-18be-4d1d-8d4d-5f5a54456554e floating_networks: - public ignore_cidr: 192.168.0.0/16 Salt cloud with Digital Ocean provider .. code-block:: yaml salt: control: enabled: true provider: dony1: engine: digital_ocean region: New York 1 client_key: xxxxxxx api_key: xxxxxxx Salt cloud with cluster definition .. code-block:: yaml salt: control: enabled: true cluster: devops_ase: config: engine: salt host: 147.32.120.1 node: proxy1.ase.cepsos.cz: provider: cepsos_devops image: Ubuntu12.04 x86_64 size: m1.medium node1.ase.cepsos.cz: provider: cepsos_devops image: Ubuntu12.04 x86_64 size: m1.medium node2.ase.cepsos.cz: provider: cepsos_devops image: Ubuntu12.04 x86_64 size: m1.medium node3.ase.cepsos.cz: provider: cepsos_devops image: Ubuntu12.04 x86_64 size: m1.medium Usage ===== Working with salt-cloud .. code-block:: bash salt-cloud -m /path/to/map --assume-yes Debug LIBCLOUD for salt-cloud connection .. code-block:: bash export LIBCLOUD_DEBUG=/dev/stderr; salt-cloud --list-sizes provider_name --log-level all Read more ========= * http://salt.readthedocs.org/en/latest/ * https://github.com/DanielBryan/salt-state-graph * http://karlgrz.com/testing-salt-states-rapidly-with-docker/ * https://mywushublog.com/2013/03/configuration-management-with-salt-stack/ * http://russell.ballestrini.net/replace-the-nagios-scheduler-and-nrpe-with-salt-stack/ * https://github.com/saltstack-formulas/salt-formula * http://docs.saltstack.com/en/latest/topics/tutorials/multimaster.html salt-cloud ---------- * http://www.blog.sandro-mathys.ch/2013/07/setting-user-password-when-launching.html * http://cloudinit.readthedocs.org/en/latest/topics/examples.html * http://salt-cloud.readthedocs.org/en/latest/topics/install/index.html * http://docs.saltstack.com/topics/cloud/digitalocean.html * http://salt-cloud.readthedocs.org/en/latest/topics/rackspace.html * http://salt-cloud.readthedocs.org/en/latest/topics/map.html * http://docs.saltstack.com/en/latest/topics/tutorials/multimaster.html