Ansible Modules (Contd..)
- Lets try to install lamp stack on ubuntu 18.04 and centos 7
- Lets create a hosts file with the following entries with centos and ubuntu as group names
[centos]
172.31.4.122
[ubuntu]
172.31.3.192
- Lets create lamp_centos.yaml
---
- name: install lamp stack on Centos
become: yes
hosts: centos
tasks:
- name: install apache
yum:
name: httpd
state: present
- name: start and enable apache
service:
name: httpd
enabled: yes
state: started
- Lets create lamp_ubuntu.yaml file
---
- name: 'Install and configure lamp'
hosts: ubuntu
become: yes
tasks:
- name: install apache2 and update ubuntu package definitions
apt:
name: apache2
update_cache: yes
state: present
- name: enable and start apache2
service:
name: apache2
enabled: yes
state: started
- Now lets execute playbook on centos group
ansible-playbook -i hosts lamp_centos.yaml
- If you need more logs execute the following commands
ansible-playbook -v -i hosts lamp_centos.yaml
ansible-playbook -vv -i hosts lamp_centos.yaml
ansible-playbook -vvv -i hosts lamp_centos.yaml
- Now navigate to http://publicurl:centos
- Now lets execute the lamp yaml written so far on ubuntu
ansible-playbook -i hosts lamp_ubuntu.yaml
- Now navigate to http://publicurl:ubuntu
- Groups in inventory file are for logical grouping of servers
[webserver]
192.168.10.11
192.168.10.111
192.168.10.112
192.168.10.113
[dbserver]
192.168.10.10
192.168.10.102
192.168.10.103
192.168.10.104
- Now for centos & ubuntu we will be skipping mysql installation.
- For centos node the php packages which we need to install are
- php
- php-mysql
- php-fpm
- Lets try to restart apache, Now the centos yaml will look like
---
- name: install lamp stack on Centos
become: yes
hosts: centos
tasks:
- name: install apache
yum:
name: httpd
state: present
- name: start and enable apache
service:
name: httpd
enabled: yes
state: started
- name: install php
yum:
name: php
state: present
- name: install php-mysql
yum:
name: php-mysql
state: present
- name: install php-fpm
yum:
name: php-fpm
state: present
- name: restart apache
service:
name: httpd
state: restarted
- For ubuntu we need to install the following php packages and restart apache
- php
- libapache2-mod-php
- php-mysql
- php-cli
- Now the lamp_ubuntu.yaml will be like
---
- name: 'Install and configure lamp'
hosts: ubuntu
become: yes
tasks:
- name: install apache2 and update ubuntu package definitions
apt:
name: apache2
update_cache: yes
state: present
- name: enable and start apache2
service:
name: apache2
enabled: yes
state: started
- name: install php
apt:
name: php
state: present
- name: install libapache2-mod-php
apt:
name: libapache2-mod-php
state: present
- name: install php-mysql
apt:
name: php-mysql
state: present
- name: install php-cli
apt:
name: php-cli
state: present
- name: restart apache
service:
name: apache2
state: restarted
- Now lets execute this playbook
ansible-playbook -i hosts lamp_ubuntu.yaml
ansible-playbook -i hosts lamp_centos.yaml
- We still have work on lamp stack left, but we have following questions to be addressed
- Why should i copy paste tasks with different values? Can’t i use some thing like looping structure
- name: install php-mysql yum: name: php-mysql state: present - name: install php-fpm yum: name: php-fpm state: present
- Why should i write different playbooks per os, can’t we write one?
Ansible Modules (Contd..)
- Lets try to install lamp stack on ubuntu 18.04 and centos 7
- Lets create a hosts file with the following entries with centos and ubuntu as group names
[centos]
172.31.4.122
[ubuntu]
172.31.3.192
- Lets create lamp_centos.yaml
---
- name: install lamp stack on Centos
become: yes
hosts: centos
tasks:
- name: install apache
yum:
name: httpd
state: present
- name: start and enable apache
service:
name: httpd
enabled: yes
state: started
- Lets create lamp_ubuntu.yaml file
---
- name: 'Install and configure lamp'
hosts: ubuntu
become: yes
tasks:
- name: install apache2 and update ubuntu package definitions
apt:
name: apache2
update_cache: yes
state: present
- name: enable and start apache2
service:
name: apache2
enabled: yes
state: started
- Now lets execute playbook on centos group
ansible-playbook -i hosts lamp_centos.yaml
- If you need more logs execute the following commands
ansible-playbook -v -i hosts lamp_centos.yaml
ansible-playbook -vv -i hosts lamp_centos.yaml
ansible-playbook -vvv -i hosts lamp_centos.yaml
- Now navigate to http://publicurl:centos
- Now lets execute the lamp yaml written so far on ubuntu
ansible-playbook -i hosts lamp_ubuntu.yaml
- Now navigate to http://publicurl:ubuntu
- Groups in inventory file are for logical grouping of servers
[webserver]
192.168.10.11
192.168.10.111
192.168.10.112
192.168.10.113
[dbserver]
192.168.10.10
192.168.10.102
192.168.10.103
192.168.10.104
- Now for centos & ubuntu we will be skipping mysql installation.
- For centos node the php packages which we need to install are
- php
- php-mysql
- php-fpm
- Lets try to restart apache, Now the centos yaml will look like
---
- name: install lamp stack on Centos
become: yes
hosts: centos
tasks:
- name: install apache
yum:
name: httpd
state: present
- name: start and enable apache
service:
name: httpd
enabled: yes
state: started
- name: install php
yum:
name: php
state: present
- name: install php-mysql
yum:
name: php-mysql
state: present
- name: install php-fpm
yum:
name: php-fpm
state: present
- name: restart apache
service:
name: httpd
state: restarted
- For ubuntu we need to install the following php packages and restart apache
- php
- libapache2-mod-php
- php-mysql
- php-cli
- Now the lamp_ubuntu.yaml will be like
---
- name: 'Install and configure lamp'
hosts: ubuntu
become: yes
tasks:
- name: install apache2 and update ubuntu package definitions
apt:
name: apache2
update_cache: yes
state: present
- name: enable and start apache2
service:
name: apache2
enabled: yes
state: started
- name: install php
apt:
name: php
state: present
- name: install libapache2-mod-php
apt:
name: libapache2-mod-php
state: present
- name: install php-mysql
apt:
name: php-mysql
state: present
- name: install php-cli
apt:
name: php-cli
state: present
- name: restart apache
service:
name: apache2
state: restarted
- Now lets execute this playbook
ansible-playbook -i hosts lamp_ubuntu.yaml
ansible-playbook -i hosts lamp_centos.yaml
- We still have work on lamp stack left, but we have following questions to be addressed
- Why should i copy paste tasks with different values? Can’t i use some thing like looping structure
- name: install php-mysql yum: name: php-mysql state: present - name: install php-fpm yum: name: php-fpm state: present
- Why should i write different playbooks per os, can’t we write one?