hostsfile
1. General notes
See the full SaltStack Formulas installation and usage instructions.
If you are interested in writing or contributing to formulas, please pay attention to the Writing Formula Section.
If you want to use this formula, please pay attention to the FORMULA
file and/or git tag
, which contains the currently released version.
This formula is versioned according to Semantic
Versioning.
See Formula Versioning Section for more details.
If you need (non-default) configuration, please pay attention to the
pillar.example
file and/or Special notes section.
2. Contributing to this repo
Commit message formatting is significant!!
Please see How to contribute for more details.
4. Available states
4.1. hostsfile
Uses the Salt Mine function
network.ip_addrs
to add minion ids and their regarding ips to the
local hosts file.
At a minimum, you must enable the network.ip_addrs function in pillar or
in /etc/salt/minion
:
mine_functions: network.ip_addrs: []
The formula works best if the minion id is the fqdn and (if the machines have more than one interface) the desired interface to use for this is configured with the mine function:
mine_functions: network.interfaces: [] network.ip_addrs: - eth1 mine_interval: 2
If you are already using network.ip_addrs for something else (perhaps another state that wants information on a different interface than hostsfile should use), you can specify a mine alias in pillar to query instead:
hostsfile: alias: hostsfile_interface mine_functions: hostsfile_interface: mine_function: network.ip_addrs iface: eth0
By default all minions in mine are added to the hosts file, but that can be overridden too:
hostsfile: minions: '*-thisdatacenter-something'
By default specified minions in mine are added to the hosts file:
hostsfile: minions: 'zk[1-5] and kafka[1-5]' type: 'compound'
And you can add explicit entries for non-mine hosts as well:
hostsfile: hosts: server1: 10.10.10.10 server2: 10.10.10.11
To reduce the hostnames for an IP to those given in pillar you can place
them in pillar[hostsfile:only]
:
hostsfile: only: 10.10.10.10: - server1.my.domain - server1 10.10.10.11: - server2.my.domain - server2
To remove an IP from the hostsfile specify an empty list of hostnames:
hostsfile: only: 127.0.1.1: []
5. Testing
Linux testing is done with kitchen-salt
.
5.1. Requirements
-
Ruby
-
Docker
$ gem install bundler
$ bundle install
$ bin/kitchen test [platform]
Where [platform]
is the platform name defined in kitchen.yml
, e.g.
debian-9-2019-2-py3
.
5.2. bin/kitchen converge
Creates the docker instance and runs the TEMPLATE
main state, ready
for testing.