Once you have ansible installed and ssh connectivity between the control server and other hosts established you can set up following directly layout with playbooks and execute the examples listed here.
These playbook examples are also available from my Github repository - https://github.com/shahkamran/ansibleplaybooks.
~/.
---+ansible.cfg
---+dev
---+hosts
---+playbooks/
-------------+webserver.yml
These playbook examples are also available from my Github repository - https://github.com/shahkamran/ansibleplaybooks.
~/.
---+ansible.cfg
---+dev
---+hosts
---+playbooks/
-------------+webserver.yml
-------------+database.yml
-------------+loadbalancer.yml
So where do you start?
You set up your hosts file similar to /etc/hosts but a local one with IP address translation to your systems.
#hosts
192.168.0.1 control
192.168.0.2 app01
192.168.0.3 app02
192.168.0.4 db01
192.168.0.5 lb01
Next you set up your environment in dev file by creating groups of hosts.
#dev
[cc]
control ansible_connection=local
[apps]
app01
app02
[dbs]
db01
[lbs]
lb01
This brings us to the playbooks that you can use as test to execute and build environment.
#loadbalancer.yml
---
- hosts: lbs
become: true
tasks:
- name: install nginx
apt: name=nginx state=present update_cache=yes
- name: ensure nginx started
service: name=nginx state=started enabled=yes
You can run above using command below;
ansible-playbook loadbalancer.yml
Lets get the web servers set up as well on app servers.
#webserver.yml
---
- hosts: apps
become: true
tasks:
- name: install web server components
apt: name={{item}} state=present update_cache=yes
with_items:
- apache2
- libapache2-mod-wsgi
- python-pip
- python-virtualenv
- name: ensure apache2 started
service: name=apache2 state=started enabled=yes
- name: ensure mod_wsgi enabled
apache2_module: state=present name=wsgi
notify: Restart Apache2
handlers:
- name: Restart Apache2
service: name=apache2 state=restarted
Run following;
ansible-playbook webserver.yml
And the database goes here.
#database.yml
---
- hosts: dbs
become: true
tasks:
- name: install mysql-server
apt: name=mysql-server state=present update_cache=yes
- name: ensure mysql-server started
service: name=mysql state=started enabled=yes
Get it up and running by;
ansible-playbook database.yml
That is all your environment set up now. If you want you can play with the examples above and enhance your usage, for example you can create a playbook to restart the whole application stack using below playbook.
#stack_restart.yml
---
# Bring stack down
- hosts: lbs
become: true
tasks:
- service: name=nginx state=stopped
- hosts: apps
become: true
tasks:
- service: name=apache2 state=stopped
# Restart mysql
- hosts: dbs
become: true
tasks:
- service: name=mysql state=restarted
# Bring stack up
- hosts: apps
become: true
tasks:
- service: name=apache2 state=started
- hosts: lbs
become: true
tasks:
- service: name=nginx state=started
You restart your stack using command below;
ansible-playbook stack_restart.yml
Hope you find these useful.