blob: 3c42d0029a87f18c4fb16c4f2cfa12c981a98dff [file] [log] [blame]
Filip Pytlounb4b80592015-10-06 16:28:32 +02001
Ales Komarek54740682017-05-15 07:16:23 +02002============
3Salt Formula
4============
Filip Pytlounb4b80592015-10-06 16:28:32 +02005
Ales Komarek54740682017-05-15 07:16:23 +02006Salt is a new approach to infrastructure management. Easy enough to get
7running in minutes, scalable enough to manage tens of thousands of servers,
8and fast enough to communicate with them in seconds.
Filip Pytlounb4b80592015-10-06 16:28:32 +02009
Ales Komarek54740682017-05-15 07:16:23 +020010Salt delivers a dynamic communication bus for infrastructures that can be used
11for orchestration, remote execution, configuration management and much more.
Filip Pytlounb4b80592015-10-06 16:28:32 +020012
Ales Komarek54740682017-05-15 07:16:23 +020013
14Sample Metadata
15===============
16
Filip Pytlounb4b80592015-10-06 16:28:32 +020017
18Salt master
19-----------
20
Ales Komarek54740682017-05-15 07:16:23 +020021Salt master with base formulas and pillar metadata backend
Filip Pytlounb4b80592015-10-06 16:28:32 +020022
Ales Komarek8ba9c0b2016-02-21 14:59:59 +010023.. literalinclude:: tests/pillar/master_single_pillar.sls
24 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +020025
Ales Komarek54740682017-05-15 07:16:23 +020026Salt master with reclass ENC metadata backend
Filip Pytlounb4b80592015-10-06 16:28:32 +020027
Ales Komarek8ba9c0b2016-02-21 14:59:59 +010028.. literalinclude:: tests/pillar/master_single_reclass.sls
29 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +020030
31Salt master with API
32
Ales Komarekb2c8ff62016-08-22 00:20:01 +020033.. literalinclude:: tests/pillar/master_api.sls
34 :language: yaml
Ales Komarekcdb280f2016-07-27 15:37:51 +020035
36Salt master with defined user ACLs
37
Ales Komarekb2c8ff62016-08-22 00:20:01 +020038.. literalinclude:: tests/pillar/master_acl.sls
39 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +020040
41Salt master with preset minions
42
43.. code-block:: yaml
44
45 salt:
46 master:
47 enabled: true
Filip Pytlounb4b80592015-10-06 16:28:32 +020048 minions:
49 - name: 'node1.system.location.domain.com'
50
Ales Komarek54740682017-05-15 07:16:23 +020051Salt master with pip based installation (optional)
Adam Tenglercaedd972016-05-04 16:44:00 +020052
53.. code-block:: yaml
54
55 salt:
56 master:
57 enabled: true
58 ...
59 source:
60 engine: pip
61 version: 2016.3.0rc2
62
Ales Komarek54740682017-05-15 07:16:23 +020063Install formula through system package management
Adam Tengler3eb85ad2016-05-06 02:52:40 +020064
65.. code-block:: yaml
66
67 salt:
68 master:
69 enabled: true
70 ...
71 environment:
72 prd:
Petr Michalec7a2f1d22017-05-17 22:08:32 +020073 keystone:
Adam Tengler3eb85ad2016-05-06 02:52:40 +020074 source: pkg
75 name: salt-formula-keystone
Petr Michalec7a2f1d22017-05-17 22:08:32 +020076 nova:
77 source: pkg
78 name: salt-formula-keystone
79 version: 0.1+0~20160818133412.24~1.gbp6e1ebb
80 postresql:
81 source: pkg
82 name: salt-formula-postgresql
83 version: purged
84
85Formula keystone is installed latest version and the formulas without version are installed in one call to aptpkg module.
86If the version attribute is present sls iterates over formulas and take action to install specific version or remove it.
87The version attribute may have these values ``[latest|purged|removed|<VERSION>]``.
Adam Tengler3eb85ad2016-05-06 02:52:40 +020088
89Clone master branch of keystone formula as local feature branch
90
91.. code-block:: yaml
92
93 salt:
94 master:
95 enabled: true
96 ...
97 environment:
98 dev:
99 formula:
100 keystone:
101 source: git
102 address: git@github.com:openstack/salt-formula-keystone.git
103 revision: master
104 branch: feature
105
106Salt master with specified formula refs (for example for Gerrit review)
107
108.. code-block:: yaml
109
110 salt:
111 master:
112 enabled: true
113 ...
114 environment:
115 dev:
116 formula:
117 keystone:
118 source: git
119 address: https://git.openstack.org/openstack/salt-formula-keystone
120 revision: refs/changes/56/123456/1
121
Ales Komarek54740682017-05-15 07:16:23 +0200122Salt master with logging handlers
Filip Pytlounb4b80592015-10-06 16:28:32 +0200123
124.. code-block:: yaml
125
126 salt:
127 master:
128 enabled: true
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100129 handler:
130 handler01:
131 engine: udp
132 bind:
133 host: 127.0.0.1
134 port: 9999
Filip Pytlounb4b80592015-10-06 16:28:32 +0200135 minion:
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100136 handler:
137 handler01:
138 engine: udp
139 bind:
140 host: 127.0.0.1
141 port: 9999
142 handler02:
143 engine: zmq
144 bind:
145 host: 127.0.0.1
146 port: 9999
147
Ales Komarek54740682017-05-15 07:16:23 +0200148Salt master peer setup for remote certificate signing
Jakub Pavlikd4859842016-05-23 10:48:04 +0200149
150.. code-block:: yaml
151
152 salt:
153 master:
154 peer:
155 ".*":
156 - x509.sign_remote_certificate
Filip Pytlounb4b80592015-10-06 16:28:32 +0200157
Tomáš Kukrál8922aef2017-05-10 10:27:04 +0200158Configure verbosity of state output (used for `salt` command)
159
160.. code-block:: yaml
161
162 salt:
163 master:
Tomáš Kukrál044667b2017-05-11 10:12:15 +0200164 state_output: changes
Tomáš Kukrál8922aef2017-05-10 10:27:04 +0200165
Ales Komarek54740682017-05-15 07:16:23 +0200166Salt Reactor system configuration
167
168.. code-block:: yaml
169
170 salt:
171 master:
172 reactor:
173 salt/minion/*/start:
174 - salt://reactor/minion-started.sls
175
176
177Salt syndic
178-----------
179
180The master of masters
181
182.. code-block:: yaml
183
184 salt:
185 master:
186 enabled: true
187 order_masters: True
188
189Lower syndicated master
190
191.. code-block:: yaml
192
193 salt:
194 syndic:
195 enabled: true
196 master:
197 host: master-of-master-host
198 timeout: 5
199
200Syndicated master with multiple master of masters
201
202.. code-block:: yaml
203
204 salt:
205 syndic:
206 enabled: true
207 masters:
208 - host: master-of-master-host1
209 - host: master-of-master-host2
210 timeout: 5
211
212
213Salt-minion proxy
214-----------------
Jiri Broulika0f46682017-04-20 22:45:01 +0200215
216Salt proxy pillar
217
218.. code-block:: yaml
219
220 salt:
221 minion:
222 proxy:
223 master: localhost
224 device:
225 vsrx01.mydomain.local:
226 enabled: true
227 engine: napalm
228 csr1000v.mydomain.local:
229 enabled: true
230 engine: napalm
231
232.. note:: This is pillar of the the real salt-minion
233
234
235Proxy pillar for IOS device
236
237.. code-block:: yaml
238
239 proxy:
240 proxytype: napalm
241 driver: ios
242 host: csr1000v.mydomain.local
243 username: root
244 passwd: r00tme
245
246.. note:: This is pillar of the node thats not able to run salt-minion itself
247
248
249Proxy pillar for JunOS device
250
251.. code-block:: yaml
252
253 proxy:
254 proxytype: napalm
255 driver: junos
256 host: vsrx01.mydomain.local
257 username: root
258 passwd: r00tme
259 optional_args:
260 config_format: set
261
262.. note:: This is pillar of the node thats not able to run salt-minion itself
263
Ales Komarek8fb1da82016-08-21 23:52:03 +0200264
265Salt SSH
266--------
267
268Salt SSH with sudoer using key
269
270.. literalinclude:: tests/pillar/master_ssh_minion_key.sls
271 :language: yaml
272
273Salt SSH with sudoer using password
274
275.. literalinclude:: tests/pillar/master_ssh_minion_password.sls
276 :language: yaml
277
278Salt SSH with root using password
279
280.. literalinclude:: tests/pillar/master_ssh_minion_root.sls
281 :language: yaml
282
283
Filip Pytlounb4b80592015-10-06 16:28:32 +0200284Salt minion
285-----------
286
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100287Simplest Salt minion setup with central configuration node
Filip Pytlounb4b80592015-10-06 16:28:32 +0200288
289.. code-block:: yaml
290
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100291.. literalinclude:: tests/pillar/minion_master.sls
292 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200293
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100294Multi-master Salt minion setup
Filip Pytlounb4b80592015-10-06 16:28:32 +0200295
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100296.. literalinclude:: tests/pillar/minion_multi_master.sls
297 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200298
299Salt minion with salt mine options
300
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100301.. literalinclude:: tests/pillar/minion_mine.sls
302 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200303
304Salt minion with graphing dependencies
305
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100306.. literalinclude:: tests/pillar/minion_graph.sls
307 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200308
Ales Komarek54740682017-05-15 07:16:23 +0200309Salt minion behind HTTP proxy
Ondrej Smolac2d3e6f2017-03-26 17:52:40 +0200310
311.. code-block:: yaml
312
313 salt:
314 minion:
315 proxy:
316 host: 127.0.0.1
317 port: 3128
318
Ales Komarek54740682017-05-15 07:16:23 +0200319Salt minion with PKI certificate authority (CA)
Ales Komarek5d17e4b2016-04-08 11:53:53 +0200320
321.. literalinclude:: tests/pillar/minion_pki_ca.sls
322 :language: yaml
323
Ales Komarek54740682017-05-15 07:16:23 +0200324Salt minion using PKI certificate
Ales Komarek5d17e4b2016-04-08 11:53:53 +0200325
326.. literalinclude:: tests/pillar/minion_pki_cert.sls
327 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200328
Ales Komarek8fb1da82016-08-21 23:52:03 +0200329
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100330Salt control (cloud/kvm/docker)
331-------------------------------
Filip Pytlounb4b80592015-10-06 16:28:32 +0200332
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100333Salt cloud with local OpenStack provider
Filip Pytlounb4b80592015-10-06 16:28:32 +0200334
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100335.. literalinclude:: tests/pillar/control_cloud_openstack.sls
336 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200337
338Salt cloud with Digital Ocean provider
339
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100340.. literalinclude:: tests/pillar/control_cloud_digitalocean.sls
341 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200342
Ales Komarek8fb1da82016-08-21 23:52:03 +0200343Salt virt with KVM cluster
Filip Pytlounb4b80592015-10-06 16:28:32 +0200344
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100345.. literalinclude:: tests/pillar/control_virt.sls
346 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200347
Filip Pytlounb4b80592015-10-06 16:28:32 +0200348
349Usage
350=====
351
352Working with salt-cloud
353
354.. code-block:: bash
355
356 salt-cloud -m /path/to/map --assume-yes
357
358Debug LIBCLOUD for salt-cloud connection
359
360.. code-block:: bash
361
362 export LIBCLOUD_DEBUG=/dev/stderr; salt-cloud --list-sizes provider_name --log-level all
363
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100364
Ales Komarek54740682017-05-15 07:16:23 +0200365More Information
366================
Filip Pytlounb4b80592015-10-06 16:28:32 +0200367
368* http://salt.readthedocs.org/en/latest/
369* https://github.com/DanielBryan/salt-state-graph
370* http://karlgrz.com/testing-salt-states-rapidly-with-docker/
371* https://mywushublog.com/2013/03/configuration-management-with-salt-stack/
372* http://russell.ballestrini.net/replace-the-nagios-scheduler-and-nrpe-with-salt-stack/
373* https://github.com/saltstack-formulas/salt-formula
374* http://docs.saltstack.com/en/latest/topics/tutorials/multimaster.html
375
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100376
Filip Pytlounb4b80592015-10-06 16:28:32 +0200377salt-cloud
378----------
379
380* http://www.blog.sandro-mathys.ch/2013/07/setting-user-password-when-launching.html
381* http://cloudinit.readthedocs.org/en/latest/topics/examples.html
382* http://salt-cloud.readthedocs.org/en/latest/topics/install/index.html
383* http://docs.saltstack.com/topics/cloud/digitalocean.html
384* http://salt-cloud.readthedocs.org/en/latest/topics/rackspace.html
385* http://salt-cloud.readthedocs.org/en/latest/topics/map.html
386* http://docs.saltstack.com/en/latest/topics/tutorials/multimaster.html
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100387
Filip Pytloun954dbd62017-02-02 13:02:03 +0100388
389Documentation and Bugs
390======================
391
392To learn how to install and update salt-formulas, consult the documentation
393available online at:
394
395 http://salt-formulas.readthedocs.io/
396
397In the unfortunate event that bugs are discovered, they should be reported to
398the appropriate issue tracker. Use Github issue tracker for specific salt
399formula:
400
401 https://github.com/salt-formulas/salt-formula-salt/issues
402
403For feature requests, bug reports or blueprints affecting entire ecosystem,
404use Launchpad salt-formulas project:
405
406 https://launchpad.net/salt-formulas
407
408You can also join salt-formulas-users team and subscribe to mailing list:
409
410 https://launchpad.net/~salt-formulas-users
411
412Developers wishing to work on the salt-formulas projects should always base
413their work on master branch and submit pull request against specific formula.
414
415 https://github.com/salt-formulas/salt-formula-salt
416
417Any questions or feedback is always welcome so feel free to join our IRC
418channel:
419
420 #salt-formulas @ irc.freenode.net