-
-
Save Arka111/285c6d4bc71dfb346e707da597db3937 to your computer and use it in GitHub Desktop.
###### Ansible Installation on EC2 machine | |
Launch 2 AWS Ubuntu Instances, allow all traffic | |
## Install Ansible on Master : | |
sudo apt-get update && sudo apt-get install -y software-properties-common | |
sudo apt-add-repository ppa:ansible/ansible -y | |
sudo apt-get update && sudo apt-get install -y ansible | |
sudo apt-get update && sudo apt-get install -y docker.io | |
sudo apt-get update && sudo apt-get install -y maven | |
sudo apt --fix-broken install -y | |
## Install Python on Slaves | |
sudo apt-get update && sudo apt-get install -y python | |
## SSH Access from Master to Slaves | |
ssh ubuntu@<IP of Slaves> won't work | |
## On Master | |
cd .ssh && ls -lrt | |
show known_hosts and authorized keys | |
ssh-keygen | |
ls -lrt | |
id_rsa.pub | |
copy this content to authorized keys of Slave | |
## On Slave | |
cd .ssh | |
Add the key to authorized keys | |
## On Master | |
Try the 1st ssh ubuntu@<IP of Slaves> should work now | |
## Set up Ansible Host and Test Connection | |
/etc/ansible/hosts file | |
Add Ansible Slave details in the file | |
[group name] | |
slave1 ansible_ssh_host=<IP of Slave> | |
Optional | |
[all:vars] | |
ansible_python_interpreter=/usr/bin/python3 | |
$ansible -m ping all | |
$ansible -m ping slave1 | |
$ansible -m ping [group name] | |
Install something on localhost using ansible | |
ansible localhost -m ansible.builtin.sudo -a "name=docker state=latest" -b | |
ubuntu@ip-172-31-19-63:/etc/ansible/roles$ tree apache2 | |
apache2 | |
├── README.md | |
├── defaults | |
│ └── main.yml | |
├── files | |
│ ├── apache2.conf | |
│ └── copy.html | |
├── handlers | |
│ └── main.yml | |
├── meta | |
│ └── main.yml | |
├── tasks | |
│ ├── configure.yml | |
│ ├── install.yml | |
│ ├── main.yml | |
│ └── service.yml | |
├── templates | |
├── tests | |
│ ├── inventory | |
│ └── test.yml | |
└── vars | |
└── main.yml | |
8 directories, 13 files | |
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/tasks$ ls -lrt | |
total 16 | |
-rw-r--r-- 1 root root 82 Jun 26 11:46 install.yml | |
-rw-r--r-- 1 root root 79 Jun 26 11:47 service.yml | |
-rw-r--r-- 1 root root 243 Jun 26 11:58 configure.yml | |
-rw-r--r-- 1 root root 118 Jun 26 12:02 main.yml | |
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/tasks$ cat main.yml | |
--- | |
# tasks file for apache2 | |
- include_tasks: install.yml | |
- include_tasks: configure.yml | |
- include_tasks: service.yml | |
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/tasks$ cat install.yml | |
--- | |
- name: install apache2 | |
apt: name=apache2 update_cache=yes state=latest | |
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/tasks$ cat configure.yml | |
--- | |
#configure apache2.conf and send copy.html file | |
- name: apache2.conf file | |
copy: src=apache2.conf dest=/etc/apache2/ | |
notify: | |
- restart apache2 service | |
- name: send copy.html file | |
copy: src=copy.html dest=/var/www/html/ | |
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/tasks$ cat service.yml | |
--- | |
- name: starting apache2 service | |
service: name=apache2 state=started | |
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/files$ ls -lrt | |
total 12 | |
-rw-r--r-- 1 root root 7224 Jun 26 11:49 apache2.conf | |
-rw-r--r-- 1 root root 88 Jun 26 11:50 copy.html | |
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/handlers$ ls -lrt | |
total 4 | |
-rw-r--r-- 1 root root 108 Jun 26 11:52 main.yml | |
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/handlers$ cat main.yml | |
--- | |
# handlers file for apache2 | |
- name: restart apache2 service | |
service: name=apache2 state=restarted | |
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/meta$ ls -lrt | |
total 4 | |
-rw-r--r-- 1 root root 1634 Jun 26 11:54 main.yml | |
ubuntu@ip-172-31-19-63:/etc/ansible$ cat site.yml | |
--- | |
- hosts: prod_group | |
become: true | |
roles: | |
- apache2 | |
ansible-playbook site.yml --syntax-check | |
ubuntu@ip-172-31-19-63:/etc/ansible/roles$ tree apache2
apache2
├── README.md
├── defaults
│ └── main.yml
├── files
│ ├── apache2.conf
│ └── copy.html
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── tasks
│ ├── configure.yml
│ ├── install.yml
│ ├── main.yml
│ └── service.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
8 directories, 13 files
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/tasks$ ls -lrt
total 16
-rw-r--r-- 1 root root 82 Jun 26 11:46 install.yml
-rw-r--r-- 1 root root 79 Jun 26 11:47 service.yml
-rw-r--r-- 1 root root 243 Jun 26 11:58 configure.yml
-rw-r--r-- 1 root root 118 Jun 26 12:02 main.yml
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/tasks$ cat main.yml
tasks file for apache2
- include_tasks: install.yml
- include_tasks: configure.yml
- include_tasks: service.yml
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/tasks$ cat install.yml
- name: install apache2
apt: name=apache2 update_cache=yes state=latest
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/tasks$ cat configure.yml
#configure apache2.conf and send copy.html file
-
name: apache2.conf file
copy: src=apache2.conf dest=/etc/apache2/
notify:- restart apache2 service
-
name: send copy.html file
copy: src=copy.html dest=/var/www/html/
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/tasks$ cat service.yml
- name: starting apache2 service
service: name=apache2 state=started
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/files$ ls -lrt
total 12
-rw-r--r-- 1 root root 7224 Jun 26 11:49 apache2.conf
-rw-r--r-- 1 root root 88 Jun 26 11:50 copy.html
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/handlers$ ls -lrt
total 4
-rw-r--r-- 1 root root 108 Jun 26 11:52 main.yml
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/handlers$ cat main.yml
handlers file for apache2
- name: restart apache2 service
service: name=apache2 state=restarted
ubuntu@ip-172-31-19-63:/etc/ansible/roles/apache2/meta$ ls -lrt
total 4
-rw-r--r-- 1 root root 1634 Jun 26 11:54 main.yml
ubuntu@ip-172-31-19-63:/etc/ansible$ cat site.yml
- hosts: prod_group
become: true
roles:- apache2
ansible-playbook site.yml --syntax-check
Ansible Roles
cd /etc/ansible/roles
sudo ansible-galaxy init apache2
cd apache2 && sudo tree apache2
Directory Structure
https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html