Operations grimoire/Deploy with Salt

From Nasqueron Agora
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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)