mail.example.com
[webservers]
foo.example.com
bar.example.com
[dbservers]
one.example.com
two.example.com
three.example.com
[defaults]
hostfile = plugins/inventory/ec2.py
hash_behaviour = merge
- hosts: tag_Role_app
remote_user: ubuntu
sudo: yes
sudo_user: root
roles:
- { role: common, tags: common }
- { role: erlang, tags: erlang }
- { role: backend, tags: backend }
- { role: battle, tags: battle }
- name: Backend repository directory created
file: path={{backend.dir}} state=directory
owner={{backend.user}} group={{backend.user}}
- name: Backend repository up to date
sudo: yes
sudo_user: "{{backend.user}}"
git: repo={{backend.git_repo}} version={{backend.git_version}}
dest={{backend.dir}} accept_hostkey=yes
key_file=/home/{{backend.user}}/.ssh/{{backend.key}}
notify:
- Release created
- Backend restarted
- Notify Slack that backend is updated
- name: Backend log directory created
file: path=/var/log/{{app}} owner={{backend.user}} group={{backend.user}}
state=directory
- name: Backend service is installed
template: src=init_script dest=/etc/init.d/{{app}} mode=0755
- name: Backend configuration directory created
file: path=/etc/{{app}} state=directory
- name: Backend configuration is set
template: src=sys.config
dest=/etc/{{app}}/sys.config
notify: Backend restarted
.
├── Makefile
├── Vagrantfile
├── ansible.cfg
├── appservers.yml
├── ec2_create_environment.yml
├── ec2_security.yml
├── group_vars
│ └── all.yml
├── library
│ └── sshknownhosts/...
├── localhost
├── plugins
│ └── inventory/ec2.py
├── roles
│ ├── backend
│ │ ├── handlers/main.yml
│ │ ├── tasks/main.yml
│ │ ├── templates
│ │ │ └── ...
│ │ └── vars/main.yml
│ ├── battle
│ │ ├── tasks/main.yml
│ │ └── vars/main.yml
│ ├── common
│ │ ├── tasks/main.yml
│ │ └── vars/main.yml
│ └── erlang
│ ├── files/erlang-pin-999
│ └── tasks/main.yml
├── site.yml
└── vagrant
├── hosts
└── provision.sh
21 directories, 29 files
$ ansible-playbook site.yml --tags erlang --limit tag_Env_development
PLAY [tag_Role_app] ***********************************************************
GATHERING FACTS ***************************************************************
ok: [54.77.52.128]
TASK: [erlang | Erlang repository added] **************************************
ok: [54.77.52.128]
TASK: [erlang | Erlang Solutions key added] ***********************************
skipping: [54.77.52.128]
TASK: [erlang | apt-cache is up to date] **************************************
skipping: [54.77.52.128]
TASK: [erlang | Erlang pinned to version and repository] **********************
changed: [54.77.52.128]
TASK: [erlang | Erlang installed] *********************************************
ok: [54.77.52.128] => (item=erlang-base,erlang-dev)
PLAY RECAP ********************************************************************
54.77.52.128 : ok=4 changed=1 unreachable=0 failed=0
$ ansible-playbook --tags erlang --limit tag_Env_development
$ ansible-playbook --tags battle --limit tag_Env_staging
$ ansible-playbook --limit tag_Name_staging-app-02
$ ansible-playbook ec2_create_environment.yml --inventory=localhost --extra-vars="env=prototype"
$ ansible-playbook -i vagrant/hosts site.yml --limit tag_Env_development --tags battle
$ tower-cli job launch --format human --monitor --job-template 38