blob: edd620821227d7f53aa0a794d370846892dfc51b [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 Komarek5c58de32017-06-06 11:49:32 +0200166Salt Reactor system sample
Ales Komarek54740682017-05-15 07:16:23 +0200167
168.. code-block:: yaml
169
170 salt:
171 master:
172 reactor:
173 salt/minion/*/start:
174 - salt://reactor/minion-started.sls
175
Ales Komarek5c58de32017-06-06 11:49:32 +0200176Run any orchestration pipeline from custom event
177
178.. code-block:: yaml
179
180 salt:
181 master:
182 reactor:
183 salt/orchestrate/start:
184 - salt://salt/reactor/orchestrate_start.sls
185
186Sample event to trigger the basic orchestration pipeline
187
188.. code-block:: bash
189
190 salt-call event.send 'salt/orchestrate/start' "{'orchestrate': 'salt/orchestrate/infra_install.sls'}
191
192Classify node from custom event
193
194.. code-block:: yaml
195
196 salt:
197 master:
198 reactor:
199 reclass/minion/classify:
200 - salt://reclass/reactor/node_register.sls
201
202Sample event to trigger the classification
203
204.. code-block:: bash
205
206 salt-call event.send 'reclass/minion/classify' "{'node_master_ip': '$config_host', 'node_ip': '${node_ip}', 'node_domain': '$node_domain', 'node_cluster': '$node_cluster', 'node_hostname': '$node_hostname', 'node_os': '$node_os'}"
207
Ales Komarek54740682017-05-15 07:16:23 +0200208
209Salt syndic
210-----------
211
212The master of masters
213
214.. code-block:: yaml
215
216 salt:
217 master:
218 enabled: true
219 order_masters: True
220
221Lower syndicated master
222
223.. code-block:: yaml
224
225 salt:
226 syndic:
227 enabled: true
228 master:
229 host: master-of-master-host
230 timeout: 5
231
232Syndicated master with multiple master of masters
233
234.. code-block:: yaml
235
236 salt:
237 syndic:
238 enabled: true
239 masters:
240 - host: master-of-master-host1
241 - host: master-of-master-host2
242 timeout: 5
243
244
245Salt-minion proxy
246-----------------
Jiri Broulika0f46682017-04-20 22:45:01 +0200247
248Salt proxy pillar
249
250.. code-block:: yaml
251
252 salt:
253 minion:
Jiri Broulik88275242017-05-24 17:21:17 +0200254 proxy_minion:
Jiri Broulika0f46682017-04-20 22:45:01 +0200255 master: localhost
256 device:
257 vsrx01.mydomain.local:
258 enabled: true
259 engine: napalm
260 csr1000v.mydomain.local:
261 enabled: true
262 engine: napalm
263
264.. note:: This is pillar of the the real salt-minion
265
266
267Proxy pillar for IOS device
268
269.. code-block:: yaml
270
271 proxy:
272 proxytype: napalm
273 driver: ios
274 host: csr1000v.mydomain.local
275 username: root
276 passwd: r00tme
277
278.. note:: This is pillar of the node thats not able to run salt-minion itself
279
280
281Proxy pillar for JunOS device
282
283.. code-block:: yaml
284
285 proxy:
286 proxytype: napalm
287 driver: junos
288 host: vsrx01.mydomain.local
289 username: root
290 passwd: r00tme
291 optional_args:
292 config_format: set
293
294.. note:: This is pillar of the node thats not able to run salt-minion itself
295
Ales Komarek8fb1da82016-08-21 23:52:03 +0200296
297Salt SSH
298--------
299
300Salt SSH with sudoer using key
301
302.. literalinclude:: tests/pillar/master_ssh_minion_key.sls
303 :language: yaml
304
305Salt SSH with sudoer using password
306
307.. literalinclude:: tests/pillar/master_ssh_minion_password.sls
308 :language: yaml
309
310Salt SSH with root using password
311
312.. literalinclude:: tests/pillar/master_ssh_minion_root.sls
313 :language: yaml
314
315
Filip Pytlounb4b80592015-10-06 16:28:32 +0200316Salt minion
317-----------
318
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100319Simplest Salt minion setup with central configuration node
Filip Pytlounb4b80592015-10-06 16:28:32 +0200320
321.. code-block:: yaml
322
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100323.. literalinclude:: tests/pillar/minion_master.sls
324 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200325
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100326Multi-master Salt minion setup
Filip Pytlounb4b80592015-10-06 16:28:32 +0200327
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100328.. literalinclude:: tests/pillar/minion_multi_master.sls
329 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200330
331Salt minion with salt mine options
332
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100333.. literalinclude:: tests/pillar/minion_mine.sls
334 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200335
336Salt minion with graphing dependencies
337
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100338.. literalinclude:: tests/pillar/minion_graph.sls
339 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200340
Ales Komarek54740682017-05-15 07:16:23 +0200341Salt minion behind HTTP proxy
Ondrej Smolac2d3e6f2017-03-26 17:52:40 +0200342
343.. code-block:: yaml
344
345 salt:
346 minion:
347 proxy:
348 host: 127.0.0.1
349 port: 3128
350
Ales Komarek54740682017-05-15 07:16:23 +0200351Salt minion with PKI certificate authority (CA)
Ales Komarek5d17e4b2016-04-08 11:53:53 +0200352
353.. literalinclude:: tests/pillar/minion_pki_ca.sls
354 :language: yaml
355
Ales Komarek54740682017-05-15 07:16:23 +0200356Salt minion using PKI certificate
Ales Komarek5d17e4b2016-04-08 11:53:53 +0200357
358.. literalinclude:: tests/pillar/minion_pki_cert.sls
359 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200360
Petr Michalec56066ac2017-06-01 10:52:56 +0200361Salt minion trust CA certificates issued by salt CA on a specific host (ie: salt-master node)
362
363.. code-block:: yaml
364
365 salt:
366 minion:
367 trusted_ca_minions:
368 - cfg01
Ales Komarek8fb1da82016-08-21 23:52:03 +0200369
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100370Salt control (cloud/kvm/docker)
371-------------------------------
Filip Pytlounb4b80592015-10-06 16:28:32 +0200372
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100373Salt cloud with local OpenStack provider
Filip Pytlounb4b80592015-10-06 16:28:32 +0200374
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100375.. literalinclude:: tests/pillar/control_cloud_openstack.sls
376 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200377
378Salt cloud with Digital Ocean provider
379
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100380.. literalinclude:: tests/pillar/control_cloud_digitalocean.sls
381 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200382
Ales Komarek8fb1da82016-08-21 23:52:03 +0200383Salt virt with KVM cluster
Filip Pytlounb4b80592015-10-06 16:28:32 +0200384
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100385.. literalinclude:: tests/pillar/control_virt.sls
386 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200387
Filip Pytlounb4b80592015-10-06 16:28:32 +0200388
389Usage
390=====
391
392Working with salt-cloud
393
394.. code-block:: bash
395
396 salt-cloud -m /path/to/map --assume-yes
397
398Debug LIBCLOUD for salt-cloud connection
399
400.. code-block:: bash
401
402 export LIBCLOUD_DEBUG=/dev/stderr; salt-cloud --list-sizes provider_name --log-level all
403
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100404
Ales Komarek54740682017-05-15 07:16:23 +0200405More Information
406================
Filip Pytlounb4b80592015-10-06 16:28:32 +0200407
408* http://salt.readthedocs.org/en/latest/
409* https://github.com/DanielBryan/salt-state-graph
410* http://karlgrz.com/testing-salt-states-rapidly-with-docker/
411* https://mywushublog.com/2013/03/configuration-management-with-salt-stack/
412* http://russell.ballestrini.net/replace-the-nagios-scheduler-and-nrpe-with-salt-stack/
413* https://github.com/saltstack-formulas/salt-formula
414* http://docs.saltstack.com/en/latest/topics/tutorials/multimaster.html
415
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100416
Filip Pytlounb4b80592015-10-06 16:28:32 +0200417salt-cloud
418----------
419
420* http://www.blog.sandro-mathys.ch/2013/07/setting-user-password-when-launching.html
421* http://cloudinit.readthedocs.org/en/latest/topics/examples.html
422* http://salt-cloud.readthedocs.org/en/latest/topics/install/index.html
423* http://docs.saltstack.com/topics/cloud/digitalocean.html
424* http://salt-cloud.readthedocs.org/en/latest/topics/rackspace.html
425* http://salt-cloud.readthedocs.org/en/latest/topics/map.html
426* http://docs.saltstack.com/en/latest/topics/tutorials/multimaster.html
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100427
Filip Pytloun954dbd62017-02-02 13:02:03 +0100428
429Documentation and Bugs
430======================
431
432To learn how to install and update salt-formulas, consult the documentation
433available online at:
434
435 http://salt-formulas.readthedocs.io/
436
437In the unfortunate event that bugs are discovered, they should be reported to
438the appropriate issue tracker. Use Github issue tracker for specific salt
439formula:
440
441 https://github.com/salt-formulas/salt-formula-salt/issues
442
443For feature requests, bug reports or blueprints affecting entire ecosystem,
444use Launchpad salt-formulas project:
445
446 https://launchpad.net/salt-formulas
447
448You can also join salt-formulas-users team and subscribe to mailing list:
449
450 https://launchpad.net/~salt-formulas-users
451
452Developers wishing to work on the salt-formulas projects should always base
453their work on master branch and submit pull request against specific formula.
454
455 https://github.com/salt-formulas/salt-formula-salt
456
457Any questions or feedback is always welcome so feel free to join our IRC
458channel:
459
460 #salt-formulas @ irc.freenode.net