blob: 90d62ef8f1fc7ef5eb3ec291e6c20260f95f0a1a [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 Komareka9fc6e72017-09-06 15:02:40 +0200148
149Salt engine definition for saltgraph metadata collector
150
151.. code-block:: yaml
152
153 salt:
154 master:
155 engine:
156 graph_metadata:
157 engine: saltgraph
158 host: 127.0.0.1
159 port: 5432
160 user: salt
161 password: salt
162 database: salt
163
164Salt engine definition for sending events from docker events
165
166.. code-block:: yaml
167
168 salt:
169 master:
170 engine:
171 docker_events:
172 docker_url: unix://var/run/docker.sock
173
Ales Komarek54740682017-05-15 07:16:23 +0200174Salt master peer setup for remote certificate signing
Jakub Pavlikd4859842016-05-23 10:48:04 +0200175
176.. code-block:: yaml
177
178 salt:
179 master:
180 peer:
181 ".*":
182 - x509.sign_remote_certificate
Filip Pytlounb4b80592015-10-06 16:28:32 +0200183
Tomáš Kukrál8922aef2017-05-10 10:27:04 +0200184Configure verbosity of state output (used for `salt` command)
185
186.. code-block:: yaml
187
188 salt:
189 master:
Tomáš Kukrál044667b2017-05-11 10:12:15 +0200190 state_output: changes
Tomáš Kukrál8922aef2017-05-10 10:27:04 +0200191
Ales Komareke7844d12017-06-08 12:00:01 +0200192Salt synchronise node pillar and modules after start
Ales Komarek54740682017-05-15 07:16:23 +0200193
194.. code-block:: yaml
195
196 salt:
197 master:
198 reactor:
199 salt/minion/*/start:
Ales Komareke7844d12017-06-08 12:00:01 +0200200 - salt://salt/reactor/node_start.sls
Ales Komarek54740682017-05-15 07:16:23 +0200201
Ales Komareke7844d12017-06-08 12:00:01 +0200202Trigger basic node install
203
204.. code-block:: yaml
205
206 salt:
207 master:
208 reactor:
209 salt/minion/install:
210 - salt://salt/reactor/node_install.sls
211
212Sample event to trigger the node installation
213
214.. code-block:: bash
215
216 salt-call event.send 'salt/minion/install'
217
Ales Komarek213fbe02017-08-21 16:39:05 +0200218Run any defined orchestration pipeline
Ales Komarek5c58de32017-06-06 11:49:32 +0200219
220.. code-block:: yaml
221
222 salt:
223 master:
224 reactor:
225 salt/orchestrate/start:
226 - salt://salt/reactor/orchestrate_start.sls
227
Ales Komareke7844d12017-06-08 12:00:01 +0200228Event to trigger the orchestration pipeline
Ales Komarek5c58de32017-06-06 11:49:32 +0200229
230.. code-block:: bash
231
Ales Komareke7844d12017-06-08 12:00:01 +0200232 salt-call event.send 'salt/orchestrate/start' "{'orchestrate': 'salt/orchestrate/infra_install.sls'}"
Ales Komarek5c58de32017-06-06 11:49:32 +0200233
Ales Komarek3ed7c432017-08-24 16:15:49 +0200234Synchronise modules and pillars on minion start.
235
236.. code-block:: yaml
237
238 salt:
239 master:
240 reactor:
241 'salt/minion/*/start':
242 - salt://salt/reactor/minion_start.sls
243
Ales Komarek213fbe02017-08-21 16:39:05 +0200244Add and/or remove the minion key
Ales Komarek5c58de32017-06-06 11:49:32 +0200245
246.. code-block:: yaml
247
248 salt:
249 master:
250 reactor:
Ales Komarek213fbe02017-08-21 16:39:05 +0200251 salt/key/create:
252 - salt://salt/reactor/key_create.sls
253 salt/key/remove:
254 - salt://salt/reactor/key_remove.sls
Ales Komarek5c58de32017-06-06 11:49:32 +0200255
Ales Komarek213fbe02017-08-21 16:39:05 +0200256Event to trigger the key creation
Ales Komarek5c58de32017-06-06 11:49:32 +0200257
258.. code-block:: bash
259
Adam Tengler62188962017-09-04 13:34:44 +0000260 salt-call event.send 'salt/key/create' \
261 > "{'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 +0200262
Ales Komarek213fbe02017-08-21 16:39:05 +0200263.. note::
264
265 You can add pass additional `orch_pre_create`, `orch_post_create`,
266 `orch_pre_remove` or `orch_post_remove` parameters to the event to call
267 extra orchestrate files. This can be useful for example for
268 registering/unregistering nodes from the monitoring alarms or dashboards.
269
270 The key creation event needs to be run from other machine than the one
271 being registered.
272
273Event to trigger the key removal
274
275.. code-block:: bash
276
277 salt-call event.send 'salt/key/remove'
Ales Komarek54740682017-05-15 07:16:23 +0200278
279Salt syndic
280-----------
281
282The master of masters
283
284.. code-block:: yaml
285
286 salt:
287 master:
288 enabled: true
289 order_masters: True
290
291Lower syndicated master
292
293.. code-block:: yaml
294
295 salt:
296 syndic:
297 enabled: true
298 master:
299 host: master-of-master-host
300 timeout: 5
301
302Syndicated master with multiple master of masters
303
304.. code-block:: yaml
305
306 salt:
307 syndic:
308 enabled: true
309 masters:
310 - host: master-of-master-host1
311 - host: master-of-master-host2
312 timeout: 5
313
314
315Salt-minion proxy
316-----------------
Jiri Broulika0f46682017-04-20 22:45:01 +0200317
318Salt proxy pillar
319
320.. code-block:: yaml
321
322 salt:
323 minion:
Jiri Broulik88275242017-05-24 17:21:17 +0200324 proxy_minion:
Jiri Broulika0f46682017-04-20 22:45:01 +0200325 master: localhost
326 device:
327 vsrx01.mydomain.local:
328 enabled: true
329 engine: napalm
330 csr1000v.mydomain.local:
331 enabled: true
332 engine: napalm
333
334.. note:: This is pillar of the the real salt-minion
335
336
337Proxy pillar for IOS device
338
339.. code-block:: yaml
340
341 proxy:
342 proxytype: napalm
343 driver: ios
344 host: csr1000v.mydomain.local
345 username: root
346 passwd: r00tme
347
348.. note:: This is pillar of the node thats not able to run salt-minion itself
349
350
351Proxy pillar for JunOS device
352
353.. code-block:: yaml
354
355 proxy:
356 proxytype: napalm
357 driver: junos
358 host: vsrx01.mydomain.local
359 username: root
360 passwd: r00tme
361 optional_args:
362 config_format: set
363
364.. note:: This is pillar of the node thats not able to run salt-minion itself
365
Ales Komarek8fb1da82016-08-21 23:52:03 +0200366
367Salt SSH
368--------
369
370Salt SSH with sudoer using key
371
372.. literalinclude:: tests/pillar/master_ssh_minion_key.sls
373 :language: yaml
374
375Salt SSH with sudoer using password
376
377.. literalinclude:: tests/pillar/master_ssh_minion_password.sls
378 :language: yaml
379
380Salt SSH with root using password
381
382.. literalinclude:: tests/pillar/master_ssh_minion_root.sls
383 :language: yaml
384
385
Filip Pytlounb4b80592015-10-06 16:28:32 +0200386Salt minion
387-----------
388
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100389Simplest Salt minion setup with central configuration node
Filip Pytlounb4b80592015-10-06 16:28:32 +0200390
391.. code-block:: yaml
392
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100393.. literalinclude:: tests/pillar/minion_master.sls
394 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200395
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100396Multi-master Salt minion setup
Filip Pytlounb4b80592015-10-06 16:28:32 +0200397
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100398.. literalinclude:: tests/pillar/minion_multi_master.sls
399 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200400
401Salt minion with salt mine options
402
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100403.. literalinclude:: tests/pillar/minion_mine.sls
404 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200405
406Salt minion with graphing dependencies
407
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100408.. literalinclude:: tests/pillar/minion_graph.sls
409 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200410
Ales Komarek54740682017-05-15 07:16:23 +0200411Salt minion behind HTTP proxy
Ondrej Smolac2d3e6f2017-03-26 17:52:40 +0200412
413.. code-block:: yaml
414
415 salt:
416 minion:
417 proxy:
418 host: 127.0.0.1
419 port: 3128
420
Sam Stoelingabb4c04b2017-06-26 15:47:19 -0700421Salt minion to specify non-default HTTP backend. The default tornado backend
422does not respect HTTP proxy settings set as environment variables. This is
423useful for cases where you need to set no_proxy lists.
424
425.. code-block:: yaml
426
427 salt:
428 minion:
429 backend: urllib2
430
431
Ales Komarek54740682017-05-15 07:16:23 +0200432Salt minion with PKI certificate authority (CA)
Ales Komarek5d17e4b2016-04-08 11:53:53 +0200433
434.. literalinclude:: tests/pillar/minion_pki_ca.sls
435 :language: yaml
436
Ales Komarek54740682017-05-15 07:16:23 +0200437Salt minion using PKI certificate
Ales Komarek5d17e4b2016-04-08 11:53:53 +0200438
439.. literalinclude:: tests/pillar/minion_pki_cert.sls
440 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200441
Petr Michalec56066ac2017-06-01 10:52:56 +0200442Salt minion trust CA certificates issued by salt CA on a specific host (ie: salt-master node)
443
444.. code-block:: yaml
445
446 salt:
447 minion:
448 trusted_ca_minions:
449 - cfg01
Ales Komarek8fb1da82016-08-21 23:52:03 +0200450
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100451Salt control (cloud/kvm/docker)
452-------------------------------
Filip Pytlounb4b80592015-10-06 16:28:32 +0200453
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100454Salt cloud with local OpenStack provider
Filip Pytlounb4b80592015-10-06 16:28:32 +0200455
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100456.. literalinclude:: tests/pillar/control_cloud_openstack.sls
457 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200458
459Salt cloud with Digital Ocean provider
460
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100461.. literalinclude:: tests/pillar/control_cloud_digitalocean.sls
462 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200463
Ales Komarek8fb1da82016-08-21 23:52:03 +0200464Salt virt with KVM cluster
Filip Pytlounb4b80592015-10-06 16:28:32 +0200465
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100466.. literalinclude:: tests/pillar/control_virt.sls
467 :language: yaml
Filip Pytlounb4b80592015-10-06 16:28:32 +0200468
Filip Pytlounb4b80592015-10-06 16:28:32 +0200469
470Usage
471=====
472
473Working with salt-cloud
474
475.. code-block:: bash
476
477 salt-cloud -m /path/to/map --assume-yes
478
479Debug LIBCLOUD for salt-cloud connection
480
481.. code-block:: bash
482
483 export LIBCLOUD_DEBUG=/dev/stderr; salt-cloud --list-sizes provider_name --log-level all
484
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100485
Ales Komarek54740682017-05-15 07:16:23 +0200486More Information
487================
Filip Pytlounb4b80592015-10-06 16:28:32 +0200488
489* http://salt.readthedocs.org/en/latest/
490* https://github.com/DanielBryan/salt-state-graph
491* http://karlgrz.com/testing-salt-states-rapidly-with-docker/
492* https://mywushublog.com/2013/03/configuration-management-with-salt-stack/
493* http://russell.ballestrini.net/replace-the-nagios-scheduler-and-nrpe-with-salt-stack/
494* https://github.com/saltstack-formulas/salt-formula
495* http://docs.saltstack.com/en/latest/topics/tutorials/multimaster.html
496
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100497
Filip Pytlounb4b80592015-10-06 16:28:32 +0200498salt-cloud
499----------
500
501* http://www.blog.sandro-mathys.ch/2013/07/setting-user-password-when-launching.html
502* http://cloudinit.readthedocs.org/en/latest/topics/examples.html
503* http://salt-cloud.readthedocs.org/en/latest/topics/install/index.html
504* http://docs.saltstack.com/topics/cloud/digitalocean.html
505* http://salt-cloud.readthedocs.org/en/latest/topics/rackspace.html
506* http://salt-cloud.readthedocs.org/en/latest/topics/map.html
507* http://docs.saltstack.com/en/latest/topics/tutorials/multimaster.html
Ales Komarek8ba9c0b2016-02-21 14:59:59 +0100508
Filip Pytloun954dbd62017-02-02 13:02:03 +0100509
510Documentation and Bugs
511======================
512
513To learn how to install and update salt-formulas, consult the documentation
514available online at:
515
516 http://salt-formulas.readthedocs.io/
517
518In the unfortunate event that bugs are discovered, they should be reported to
519the appropriate issue tracker. Use Github issue tracker for specific salt
520formula:
521
522 https://github.com/salt-formulas/salt-formula-salt/issues
523
524For feature requests, bug reports or blueprints affecting entire ecosystem,
525use Launchpad salt-formulas project:
526
527 https://launchpad.net/salt-formulas
528
529You can also join salt-formulas-users team and subscribe to mailing list:
530
531 https://launchpad.net/~salt-formulas-users
532
533Developers wishing to work on the salt-formulas projects should always base
534their work on master branch and submit pull request against specific formula.
535
536 https://github.com/salt-formulas/salt-formula-salt
537
538Any questions or feedback is always welcome so feel free to join our IRC
539channel:
540
541 #salt-formulas @ irc.freenode.net