blob: 364e59a251836e146a69e833c31a6eb01e001ddc [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 Komareke7844d12017-06-08 12:00:01 +0200166Salt synchronise node pillar and modules after start
Ales Komarek54740682017-05-15 07:16:23 +0200167
168.. code-block:: yaml
169
170 salt:
171 master:
172 reactor:
173 salt/minion/*/start:
Ales Komareke7844d12017-06-08 12:00:01 +0200174 - salt://salt/reactor/node_start.sls
Ales Komarek54740682017-05-15 07:16:23 +0200175
Ales Komareke7844d12017-06-08 12:00:01 +0200176Trigger basic node install
177
178.. code-block:: yaml
179
180 salt:
181 master:
182 reactor:
183 salt/minion/install:
184 - salt://salt/reactor/node_install.sls
185
186Sample event to trigger the node installation
187
188.. code-block:: bash
189
190 salt-call event.send 'salt/minion/install'
191
Ales Komarek213fbe02017-08-21 16:39:05 +0200192Run any defined orchestration pipeline
Ales Komarek5c58de32017-06-06 11:49:32 +0200193
194.. code-block:: yaml
195
196 salt:
197 master:
198 reactor:
199 salt/orchestrate/start:
200 - salt://salt/reactor/orchestrate_start.sls
201
Ales Komareke7844d12017-06-08 12:00:01 +0200202Event to trigger the orchestration pipeline
Ales Komarek5c58de32017-06-06 11:49:32 +0200203
204.. code-block:: bash
205
Ales Komareke7844d12017-06-08 12:00:01 +0200206 salt-call event.send 'salt/orchestrate/start' "{'orchestrate': 'salt/orchestrate/infra_install.sls'}"
Ales Komarek5c58de32017-06-06 11:49:32 +0200207
Ales Komarek3ed7c432017-08-24 16:15:49 +0200208Synchronise modules and pillars on minion start.
209
210.. code-block:: yaml
211
212 salt:
213 master:
214 reactor:
215 'salt/minion/*/start':
216 - salt://salt/reactor/minion_start.sls
217
Ales Komarek213fbe02017-08-21 16:39:05 +0200218Add and/or remove the minion key
Ales Komarek5c58de32017-06-06 11:49:32 +0200219
220.. code-block:: yaml
221
222 salt:
223 master:
224 reactor:
Ales Komarek213fbe02017-08-21 16:39:05 +0200225 salt/key/create:
226 - salt://salt/reactor/key_create.sls
227 salt/key/remove:
228 - salt://salt/reactor/key_remove.sls
Ales Komarek5c58de32017-06-06 11:49:32 +0200229
Ales Komarek213fbe02017-08-21 16:39:05 +0200230Event to trigger the key creation
Ales Komarek5c58de32017-06-06 11:49:32 +0200231
232.. code-block:: bash
233
Adam Tengler62188962017-09-04 13:34:44 +0000234 salt-call event.send 'salt/key/create' \
235 > "{'node_id': 'id-of-minion', 'node_host': '172.16.10.100', 'orch_post_create': 'kubernetes.orchestrate.compute_install', 'post_create_pillar': {'node_name': 'id-of-minion'}}"
Ales Komarek5c58de32017-06-06 11:49:32 +0200236
Ales Komarek213fbe02017-08-21 16:39:05 +0200237.. note::
238
239 You can add pass additional `orch_pre_create`, `orch_post_create`,
240 `orch_pre_remove` or `orch_post_remove` parameters to the event to call
241 extra orchestrate files. This can be useful for example for
242 registering/unregistering nodes from the monitoring alarms or dashboards.
243
244 The key creation event needs to be run from other machine than the one
245 being registered.
246
247Event to trigger the key removal
248
249.. code-block:: bash
250
251 salt-call event.send 'salt/key/remove'
Ales Komarek54740682017-05-15 07:16:23 +0200252
253Salt syndic
254-----------
255
256The master of masters
257
258.. code-block:: yaml
259
260 salt:
261 master:
262 enabled: true
263 order_masters: True
264
265Lower syndicated master
266
267.. code-block:: yaml
268
269 salt:
270 syndic:
271 enabled: true
272 master:
273 host: master-of-master-host
274 timeout: 5
275
276Syndicated master with multiple master of masters
277
278.. code-block:: yaml
279
280 salt:
281 syndic:
282 enabled: true
283 masters:
284 - host: master-of-master-host1
285 - host: master-of-master-host2
286 timeout: 5
287
288
289Salt-minion proxy
290-----------------
Jiri Broulika0f46682017-04-20 22:45:01 +0200291
292Salt proxy pillar
293
294.. code-block:: yaml
295
296 salt:
297 minion:
Jiri Broulik88275242017-05-24 17:21:17 +0200298 proxy_minion:
Jiri Broulika0f46682017-04-20 22:45:01 +0200299 master: localhost
300 device:
301 vsrx01.mydomain.local:
302 enabled: true
303 engine: napalm
304 csr1000v.mydomain.local:
305 enabled: true
306 engine: napalm
307
308.. note:: This is pillar of the the real salt-minion
309
310
311Proxy pillar for IOS device
312
313.. code-block:: yaml
314
315 proxy:
316 proxytype: napalm
317 driver: ios
318 host: csr1000v.mydomain.local
319 username: root
320 passwd: r00tme
321
322.. note:: This is pillar of the node thats not able to run salt-minion itself
323
324
325Proxy pillar for JunOS device
326
327.. code-block:: yaml
328
329 proxy:
330 proxytype: napalm
331 driver: junos
332 host: vsrx01.mydomain.local
333 username: root
334 passwd: r00tme
335 optional_args:
336 config_format: set
337
338.. note:: This is pillar of the node thats not able to run salt-minion itself
339
Ales Komarek8fb1da82016-08-21 23:52:03 +0200340
341Salt SSH
342--------
343
344Salt SSH with sudoer using key
345
346.. literalinclude:: tests/pillar/master_ssh_minion_key.sls
347 :language: yaml
348
349Salt SSH with sudoer using password
350
351.. literalinclude:: tests/pillar/master_ssh_minion_password.sls
352 :language: yaml
353
354Salt SSH with root using password
355
356.. literalinclude:: tests/pillar/master_ssh_minion_root.sls
357 :language: yaml
358
359
Filip Pytlounb4b80592015-10-06 16:28:32 +0200360Salt minion
361-----------
362
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100363Simplest Salt minion setup with central configuration node
Filip Pytlounb4b80592015-10-06 16:28:32 +0200364
365.. code-block:: yaml
366
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100367.. literalinclude:: tests/pillar/minion_master.sls
368 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200369
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100370Multi-master Salt minion setup
Filip Pytlounb4b80592015-10-06 16:28:32 +0200371
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100372.. literalinclude:: tests/pillar/minion_multi_master.sls
373 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200374
375Salt minion with salt mine options
376
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100377.. literalinclude:: tests/pillar/minion_mine.sls
378 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200379
380Salt minion with graphing dependencies
381
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100382.. literalinclude:: tests/pillar/minion_graph.sls
383 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200384
Ales Komarek54740682017-05-15 07:16:23 +0200385Salt minion behind HTTP proxy
Ondrej Smolac2d3e6f2017-03-26 17:52:40 +0200386
387.. code-block:: yaml
388
389 salt:
390 minion:
391 proxy:
392 host: 127.0.0.1
393 port: 3128
394
Sam Stoelingabb4c04b2017-06-26 15:47:19 -0700395Salt minion to specify non-default HTTP backend. The default tornado backend
396does not respect HTTP proxy settings set as environment variables. This is
397useful for cases where you need to set no_proxy lists.
398
399.. code-block:: yaml
400
401 salt:
402 minion:
403 backend: urllib2
404
405
Ales Komarek54740682017-05-15 07:16:23 +0200406Salt minion with PKI certificate authority (CA)
Ales Komarek5d17e4b2016-04-08 11:53:53 +0200407
408.. literalinclude:: tests/pillar/minion_pki_ca.sls
409 :language: yaml
410
Ales Komarek54740682017-05-15 07:16:23 +0200411Salt minion using PKI certificate
Ales Komarek5d17e4b2016-04-08 11:53:53 +0200412
413.. literalinclude:: tests/pillar/minion_pki_cert.sls
414 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200415
Petr Michalec56066ac2017-06-01 10:52:56 +0200416Salt minion trust CA certificates issued by salt CA on a specific host (ie: salt-master node)
417
418.. code-block:: yaml
419
420 salt:
421 minion:
422 trusted_ca_minions:
423 - cfg01
Ales Komarek8fb1da82016-08-21 23:52:03 +0200424
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100425Salt control (cloud/kvm/docker)
426-------------------------------
Filip Pytlounb4b80592015-10-06 16:28:32 +0200427
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100428Salt cloud with local OpenStack provider
Filip Pytlounb4b80592015-10-06 16:28:32 +0200429
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100430.. literalinclude:: tests/pillar/control_cloud_openstack.sls
431 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200432
433Salt cloud with Digital Ocean provider
434
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100435.. literalinclude:: tests/pillar/control_cloud_digitalocean.sls
436 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200437
Ales Komarek8fb1da82016-08-21 23:52:03 +0200438Salt virt with KVM cluster
Filip Pytlounb4b80592015-10-06 16:28:32 +0200439
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100440.. literalinclude:: tests/pillar/control_virt.sls
441 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200442
Filip Pytlounb4b80592015-10-06 16:28:32 +0200443
444Usage
445=====
446
447Working with salt-cloud
448
449.. code-block:: bash
450
451 salt-cloud -m /path/to/map --assume-yes
452
453Debug LIBCLOUD for salt-cloud connection
454
455.. code-block:: bash
456
457 export LIBCLOUD_DEBUG=/dev/stderr; salt-cloud --list-sizes provider_name --log-level all
458
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100459
Ales Komarek54740682017-05-15 07:16:23 +0200460More Information
461================
Filip Pytlounb4b80592015-10-06 16:28:32 +0200462
463* http://salt.readthedocs.org/en/latest/
464* https://github.com/DanielBryan/salt-state-graph
465* http://karlgrz.com/testing-salt-states-rapidly-with-docker/
466* https://mywushublog.com/2013/03/configuration-management-with-salt-stack/
467* http://russell.ballestrini.net/replace-the-nagios-scheduler-and-nrpe-with-salt-stack/
468* https://github.com/saltstack-formulas/salt-formula
469* http://docs.saltstack.com/en/latest/topics/tutorials/multimaster.html
470
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100471
Filip Pytlounb4b80592015-10-06 16:28:32 +0200472salt-cloud
473----------
474
475* http://www.blog.sandro-mathys.ch/2013/07/setting-user-password-when-launching.html
476* http://cloudinit.readthedocs.org/en/latest/topics/examples.html
477* http://salt-cloud.readthedocs.org/en/latest/topics/install/index.html
478* http://docs.saltstack.com/topics/cloud/digitalocean.html
479* http://salt-cloud.readthedocs.org/en/latest/topics/rackspace.html
480* http://salt-cloud.readthedocs.org/en/latest/topics/map.html
481* http://docs.saltstack.com/en/latest/topics/tutorials/multimaster.html
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100482
Filip Pytloun954dbd62017-02-02 13:02:03 +0100483
484Documentation and Bugs
485======================
486
487To learn how to install and update salt-formulas, consult the documentation
488available online at:
489
490 http://salt-formulas.readthedocs.io/
491
492In the unfortunate event that bugs are discovered, they should be reported to
493the appropriate issue tracker. Use Github issue tracker for specific salt
494formula:
495
496 https://github.com/salt-formulas/salt-formula-salt/issues
497
498For feature requests, bug reports or blueprints affecting entire ecosystem,
499use Launchpad salt-formulas project:
500
501 https://launchpad.net/salt-formulas
502
503You can also join salt-formulas-users team and subscribe to mailing list:
504
505 https://launchpad.net/~salt-formulas-users
506
507Developers wishing to work on the salt-formulas projects should always base
508their work on master branch and submit pull request against specific formula.
509
510 https://github.com/salt-formulas/salt-formula-salt
511
512Any questions or feedback is always welcome so feel free to join our IRC
513channel:
514
515 #salt-formulas @ irc.freenode.net