Commit ddd57c4d by Sef Kloninger

validate machine var, remove migrate_db prompt

Added a validation on the machine variable, expected to be passed in
from the command line now, so that the worker play only works on
machines named "util" and the app play on machines named "app".
Otherwise it would be too easy to mix those up.

Now that we're using -e command line options, it's easier to use this to
specify the "modify_db" variable than prompt_vars.  Having every install
block on this question before was such a hassle!  Now we just won't
migrate unless you explicitly say so on the ansible command with
"migrate_db=yes" or "migrate_only=yes".
parent a9702805
...@@ -31,13 +31,19 @@ sure that the stanford-deploy-20130415 ssh key is in your ssh agent. ...@@ -31,13 +31,19 @@ sure that the stanford-deploy-20130415 ssh key is in your ssh agent.
Some specifics: Some specifics:
* To hit multiple machines the -e parameter would look like this: ```"machine=app(1|2|4)"```. * To do database migrations, include this: ```-e "migrate_db=yes"```. The default
behavior is to not do migrations.
* To hit multiple machines the use this: ```-e "machine=app(1|2|4)"```.
Use multiple separate "-e" options to specify multiple vars on the
command line.
* Usually I do with the ```--list-hosts``` option first to verify that I'm * Usually I do with the ```--list-hosts``` option first to verify that I'm
doing something sane before actually running. doing something sane before actually running.
* To do the utility machines, use ```prod-worker.yml```. Those also * To install the utility machines, substitute ```prod-worker.yml```. Those
take the machine variable. are also parameterized on the take the machine variable (util1, util(1|2),
and so forth).
## Ansible Commands - Stage ## Ansible Commands - Stage
......
#- hosts: ~tag_Name_app(1|2)_carn # This uses variable expansion so you can select machine(s) from the command line
- hosts: ~tag_Name_app1_carn # using the -e flag. See README for instructions on how to use.
#- hosts: ~tag_Name_app2_carn - hosts: ~tag_Name_{{machine}}_carn
#- hosts: ~tag_Name_app1_carn_test pre_tasks:
- fail: msg="This playbook only runnable on 'app' machines"
when: "'app' not in machine"
sudo: True sudo: True
vars_prompt:
- name: "migrate_db"
prompt: "Should this playbook run database migrations? (Type 'yes' to run, anything else to skip migrations)"
default: "no"
private: no
vars: vars:
secure_dir: '../../../configuration-secure/ansible' secure_dir: '../../../configuration-secure/ansible'
# this indicates the path to site-specific (with precedence) # this indicates the path to site-specific (with precedence)
......
- name: Basic util setup on carnegie workers - name: Basic util setup on carnegie workers
# this gets all running prod webservers # This uses variable expansion so you can select machine(s) from the command line
# hosts: tag_environment_prod_carn:&tag_function_util # using the -e flag. See README for instructions on how to use.
# or we can get subsets of them by name hosts: ~tag_Name_{{machine}}_carn
# hosts: ~tag_Name_util(10)_carn pre_tasks:
hosts: ~tag_Name_util(1)_carn - fail: msg="This playbook only runnable on 'util' machines"
gather_facts: True when: "'util' not in machine"
sudo: True sudo: True
gather_facts: True
vars: vars:
secure_dir: '../../../edx-secret/ansible' secure_dir: '../../../edx-secret/ansible'
# this indicates the path to site-specific (with precedence) # this indicates the path to site-specific (with precedence)
......
...@@ -9,20 +9,13 @@ ...@@ -9,20 +9,13 @@
# - apt: pkg=libzmq-dev,python-zmq state=present # - apt: pkg=libzmq-dev,python-zmq state=present
# - action: fireball # - action: fireball
# This uses variable expansion so you can select machine(s) from the command line
# this gets all running prod webservers # using the -e flag. See README for instructions on how to use.
#- hosts: tag_environment_prod:&tag_function_webserver - hosts: ~tag_Name_{{machine}}_cme
# or we can get subsets of them by name pre_tasks:
#- hosts: ~tag_Name_app(1|2)_cme - fail: msg="This playbook only runnable on 'app' machines"
- hosts: ~tag_Name_app1_cme when: "'app' not in machine"
#- hosts: ~tag_Name_app2_cme
#- hosts: ~tag_Name_app(1|2)_cme
sudo: True sudo: True
vars_prompt:
- name: "migrate_db"
prompt: "Should this playbook run database migrations? (Type 'yes' to run, anything else to skip migrations)"
default: "no"
private: no
vars: vars:
secure_dir: '../../../edx-secret/ansible' secure_dir: '../../../edx-secret/ansible'
# this indicates the path to site-specific (with precedence) # this indicates the path to site-specific (with precedence)
......
- name: Basic util setup on cme hosts - name: Basic util setup on cme hosts
# this gets all running prod webservers # This uses variable expansion so you can select machine(s) from the command line
# hosts: tag_environment_prod_cme:&tag_function_util # using the -e flag. See README for instructions on how to use.
# or we can get subsets of them by name hosts: ~tag_Name_{{machine}}_cme
hosts: ~tag_Name_util(1)_cme pre_tasks:
- fail: msg="This playbook only runnable on 'util' machines"
when: "'util' not in machine"
sudo: True sudo: True
gather_facts: True gather_facts: True
vars: vars:
......
# This uses variable expansion so you can select machine(s) from the command line # This uses variable expansion so you can select machine(s) from the command line
# using the -e flag. See README for instructions on how to use. # using the -e flag. See README for instructions on how to use.
- hosts: ~tag_Name_{{machine}}_prod - hosts: ~tag_Name_{{machine}}_prod
# pre_tasks:
# This alternative hits all running prod webservers. Left here as an example. - fail: msg="This playbook only runnable on 'app' machines"
#- hosts: tag_environment_prod:&tag_function_webserver when: "'app' not in machine"
sudo: True sudo: True
vars_prompt:
- name: "migrate_db"
prompt: "Should this playbook run database migrations? (Type 'yes' to run, anything else to skip migrations)"
default: "no"
private: no
vars: vars:
secure_dir: '../../../configuration-secure/ansible' secure_dir: '../../../configuration-secure/ansible'
# this indicates the path to site-specific (with precedence) # this indicates the path to site-specific (with precedence)
......
- name: Basic util setup on all hosts - name: Basic util setup on all hosts
# This uses variable expansion so you can select machine(s) from the command line # This uses variable expansion so you can select machine(s) from the command line
# using the -e flag. See README for instructions on how to use. # using the -e flag. See README for instructions on how to use.
hosts: ~tag_Name_{{machine}}_prod hosts: ~tag_Name_{{machine}}_prod
# pre_tasks:
# This alternative hits all running prod webservers. Left here as an example. - fail: msg="This playbook only runnable on 'util' machines"
# hosts: tag_environment_prod:&tag_function_util when: "'util' not in machine"
sudo: True sudo: True
gather_facts: True gather_facts: True
vars: vars:
......
# This uses variable expansion so you can select machine(s) from the command line # This uses variable expansion so you can select machine(s) from the command line
# using the -e flag. See README for instructions on how to use. # using the -e flag. See README for instructions on how to use.
- hosts: ~tag_Name_{{machine}}_stage - hosts: ~tag_Name_{{ machine }}_stage
# pre_tasks:
# This alternative hits all running prod webservers. Left here as an example. - fail: msg="This playbook only runnable on 'app' machines"
#- hosts: tag_environment_stage:&tag_function_webserver when: "'app' not in machine"
sudo: True sudo: True
vars_prompt:
- name: "migrate_db"
prompt: "Should this playbook run database migrations? (Type 'yes' to run, anything else to skip migrations)"
default: "no"
private: no
vars: vars:
not_prod: true not_prod: true
secure_dir: "../../../edx-secret/ansible" secure_dir: "../../../edx-secret/ansible"
...@@ -52,4 +47,3 @@ ...@@ -52,4 +47,3 @@
#- datadog #- datadog
#- splunkforwarder #- splunkforwarder
--- ---
- name: Basic util setup on all hosts - name: Basic util setup on all hosts
# This uses variable expansion so you can select machine(s) from the command line # This uses variable expansion so you can select machine(s) from the command line
# using the -e flag. See README for instructions on how to use. # using the -e flag. See README for instructions on how to use.
hosts: ~tag_Name_{{machine}}_stage hosts: ~tag_Name_{{machine}}_stage
# pre_tasks:
# This alternative hits all running prod webservers. Left here as an example. - fail: msg="This playbook only runnable on 'util' machines"
# hosts: tag_environment_stage:&tag_function_util when: "'util' not in machine"
sudo: True sudo: True
gather_facts: True gather_facts: True
vars: vars:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment