Operations grimoire/Odderon

From Nasqueron Agora

📕📁📜 Old technical information :: content warning

⌛ This Nasqueron Operations Grimoire page hasn't been updated for a long time.

☣ As our infrastructure evolves quickly, there is a good chance this information is outdated or now inaccurate. Be careful and consider update it.

➡️ To assert the information is still up-to-date or not, you can check the history of the relevant role in our Operations repository.

Odderon is hosted on Eglide, runs as odderon.

Deployment

Deployment is managed by SaltStack, with code update from Git.

  1. Commit code generic change to master, code specific to Odderon to production
  2. If needed, rebase production against master
  3. To update the repository against production branch: salt eglide state.apply roles/shellserver/odderon/

The darkbot is in written in C, so it must be compiled.

Upgrade code

  1. Forward the production branch against the desired commit.
    1. For example to rebase against the master branch: git fetch && git checkout production && git rebase origin/master
    2. Push to DevCentral: git push origin production
  2. Deploy and restart the bot:
    1. Deploy with salt eglide state.apply roles/shellserver/odderon/code
    2. When happy, you can restart the bot through %restart on IRC or through sudo service restart odderon

Ensure /opt/odderon/LOCKED doesn't exist during the upgrade process: it blocks the states to run

Allow user access top code

Users in nasqueron-irc group can sudo -u odderon. This group is managed at pillar/users/shellgroups.sls.

Block deployment

Code update doesn't occur if a LOCKED file exists.

So to block update from Git: touch /opt/odderon/LOCKED

To resume update: rm /opt/odderon/LOCKED

Reference

A walkthrough to prepare this SaltStack role has been documented: