Operations grimoire/Deploy with Salt: Difference between revisions

From Nasqueron Agora
Line 21: Line 21:


== Salt commands ==
== Salt commands ==
=== Remote server ===
To apply one state or a directory:
To apply one state or a directory:


Line 32: Line 33:


When you've a new state, ensure it's called from <code>top.sls</code> file, as the repository root.
When you've a new state, ensure it's called from <code>top.sls</code> file, as the repository root.
=== Salt master ===


If you wish to deploy directly to the Salt master, replace <code>salt</code> by <code>salt-call --local</code>:
If you wish to deploy directly to the Salt master, replace <code>salt</code> by <code>salt-call --local</code>:


<code>salt-call --local state.apply test</code>
<code>salt-call --local state.apply test</code>
This should run as root, so the recommended alias is <code>alias salt sudo salt</code> (tcsh syntax)

Revision as of 16:17, 28 April 2017

Where to work?

  • We deploy from Ysul using:
    • /opt/nasqueron-operations as our local copy of rOPS, authoritative for Salt
    • /opt/staging for web application content
  • You need to belong to the salt group to be able to control Salt
  • You need to belong to the deploy group to be able to update /opt/staging (salt is a member of deploy)
  • You want this alias: alias salt sudo -u salt salt (tcsh syntax)
  • Check salt-master is run, if not service salt-master start

Deployment workflow

Apply a new Salt state

  1. On your laptop, prepare and upload a change to Differential against rOPS repository
  2. Get the change on Ysul: arc patch D607
  3. Ask Salt to apply the change
  4.  Log on #nasqueron-operations something like [Eglide] New user account: amj (D607)
  5. Once working, you can merge it to master

Deploy a web site

  1. Commit as needed
  2.  Go to /opt/staging relevant subdirectory and fetch code
  3. Ask Salt to apply the matching state (if in doubt, a full run is salt '*' state.highstate)

Salt commands

Remote server

To apply one state or a directory:

salt eglide state.apply roles/shellserver/users

To apply all:

salt eglide state.highstate

Replace eglide by the server name, or * to target all machines.

When you've a new state, ensure it's called from top.sls file, as the repository root.

Salt master

If you wish to deploy directly to the Salt master, replace salt by salt-call --local:

salt-call --local state.apply test

This should run as root, so the recommended alias is alias salt sudo salt (tcsh syntax)