pull/63/head
bennojoy 11 years ago
parent 953c9f1f14
commit 61186b3e04
  1. 2
      README.md
  2. 32
      lamp_haproxy/README.md
  3. 2
      lamp_haproxy/roles/common/tasks/main.yml
  4. 6
      lamp_haproxy/site.yml

@ -2,5 +2,5 @@
Ansible Examples Ansible Examples
---------------- ----------------
This repository contains examples and best practises for building Ansible Playbooks. This repository contains examples and best practices for building Ansible Playbooks.

@ -1,43 +1,37 @@
Lamp Stack + LoadBalancer(haproxy) + add/remove nodes from cluster + Serial Rolling update of webserserver Lamp Stack + load balancer(haproxy) + add/remove nodes from cluster + Serial Rolling update of webserserver
---------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------
This example is an extension of the simple lamp deployment, In this example we deploy a lampstack with a LoadBalancer in front. This example is an extension of the simple lamp deployment, In this example we deploy a lampstack with a LoadBalancer in front.
This also has the capablity to add/remove nodes from the deployment. It also includes examples to do a rolling update of a stack This also has the capability to add/remove nodes from the deployment. It also includes examples to do a rolling update of a stack
without affecting the service. without affecting the service.
###Setup Entire Site. ***Setup Entire Site.
Firstly we setup the entire stack, configure the 'hosts' inventory file to include the names of your hosts on which the stack would be deployed. Firstly we setup the entire stack, configure the 'hosts' inventory file to include the names of your hosts on which the stack would be deployed.
[webservers] [webservers]
web3 web3
web2 web2
[dbservers] [dbservers]
web3 web3
[lbservers] [lbservers]
web2 lbserver
After which we execute the following command to deploy the site.
After which we execute the following command to deploy the whole site.
ansible-playbook -i hosts site.yml ansible-playbook -i hosts site.yml
The deployment can be verified by accessing the webpage." lynx http://<ip-of-lb>:8888. multiple access should land you up in diffrent webservers. The deployment can be verified by accessing the webpage." lynx http://<ip-of-lb>:8888. multiple access should land you up in different webservers.
###Remove a node from the cluster. ***Remove a node from the cluster.
Removal of a node from the cluster would be as simple as executing the following command: Removal of a node from the cluster would be as simple as executing the following command:
ansible-playbook -i hosts playbooks/remove_webservers.yml --limit=web2
ansible-playbook -i hosts roles/remove_webservers.yml --limit=web2 ***Adding a node to the cluster.
Adding a node to the cluster can be done by executing the following command
###Adding a node to the cluster. ansible-playbook -i hosts playbooks/add_webservers.yml --limit=web2
Adding a node to the cluster can be done by executing the following command:
ansible-playbook -i hosts roles/add_webservers.yml --limit=web2
###Rolling update of the entire site or a single hosts ***Rolling update of the entire site or a single hosts
Rolling updates are the preffered way to do an update as this wont affect the end users, In this example the hosts are updated in serial fashion, which means Rolling updates are the preffered way to do an update as this wont affect the end users, In this example the hosts are updated in serial fashion, which means
that only one server would be updated at one time, this behaviour can be changed by setting the 'serial' keyword in webservers.yml file. that only one server would be updated at one time, this behaviour can be changed by setting the 'serial' keyword in webservers.yml file.
Once the code has been updated in the repository which can be defined in the group_vars/all file, execute the following command: Once the code has been updated in the repository which can be defined in the group_vars/all file, execute the following command:
ansible-playbook -i hosts playbooks/rolling_update.yml
ansible-playbook -i hosts roles/rolling_update.yml

@ -6,7 +6,7 @@
tags: ntp tags: ntp
- name: Configure ntp file - name: Configure ntp file
template: src=common/templates/ntp.conf.j2 dest=/etc/ntp.conf template: src=../roles/common/templates/ntp.conf.j2 dest=/etc/ntp.conf
tags: ntp tags: ntp
notify: restart ntp notify: restart ntp

@ -1,6 +1,6 @@
--- ---
#This Playbook deploys the whole application stack in this site. #This Playbook deploys the whole application stack in this site.
- include: roles/db.yml - include: playbooks/db.yml
- include: roles/web.yml - include: playbooks/web.yml
- include: roles/haproxy.yml - include: playbooks/haproxy.yml