Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Process documentation

...

bundle exec cap staging maintenance:enable REASON="a test of maintenance mode" UNTIL="12pm Eastern Time"
  • Deploy as usual / desired
  • Do anything else needed on the server that required the downtime
bundle exec cap staging maintenance:disable

...

  1. (Note: ansible-vault password and all current AWS keys are in shared network drive)
  2. Generate a new ssh key on AWS (EC2 > Keypairs)
    1. place it in ~/.ssh
    2. chmod 0600.
    1. useful command if you're having problems with the key: $ openssl rsa -in chf_prod.pem -check
  3. Check ansible variables
    1. $ ansible-vault edit group_vars/all
    2. Look for # Use these temporarily for new instances
    3. ensure your ssh key is listed under keys_to_add
  4. run the ansible playbook
    1. $ ansible-playbook -i ../hosts create_ec2.yml --private-key=/Users/aheadley/.ssh/chf_prod.pem --ask-vault-pass
    2. OR, if you're re-running scripts on an existing machine: 
      1. $ ansible-playbook -i ../hosts [playbook] --ask-vault-pass
    3. note that if there's a failure during postgres setup handlers may not run – watch out for this. if this happens it's potentially best to start over completely.
  5. Assign an elastic IP to the new box
  6. Ask IT to give you a DNS entry for the elastic IP if desired
  7. Consider naming the aws volumes for 'root' and 'data' – this isn't done in the scripts (but probably could be!)
  8. Set up to use capistrano (below) or just deploy with capistrano (above)

...

  • This keeps us from publishing server names, etc, in the cap config files which live in our public repo.
  • don't change the Host designation without:
    • Changing it in capistrano, e.g. deploy/staging.rb, to match
    • Clearing it with everyone who might deploy (they'll have to change their ssh config as well.
  • this will use your personal ssh key – the one that matches your public key on github, which is added to the deploy user by ansible scripts.

 

Git repositories for ansible - structure and use

Code lives at https://github.com/curationexperts/ansible-hydra

Local configuration lives at https://bitbucket.org/ChemicalHeritageFoundation/ansible-inventory

  • Aside: pull requests can be submitted via branches; there's really no need to fork this repo since we'll all be owners.

To use, clone each of these into the same parent directly (I like to use ~/src). Commands above have been adjusted to assume this organization. If you want to put them in different directories, just point to the hosts file wherever you decided to put it.

This design works because ansible looks for group_vars in a location relative to the inventory / hosts file you pass on the command line.

General Notes

Notes from conversations with Alicia

...