# Create master ansible node
sudo apt-get install ansible
sudo apt-get install sshpass -y
# Check version if ansible
ansible --version
# Create host file and add below lines
sudo /etc/ansible/hosts
[plaatsoft]
pi1
pi4
pi5
pi9
# update hostfile (Add all ansible target clients)
sudo vi /etc/hosts
pi1 192.168.2.101
pi4 192.168.2.104
pi5 192.168.2.105
pi9 192.168.2.109
# Generate private/public ssh key
ssh-keygen -t rsa
cat /home/pi/.ssh/id_rsa.pub
# Login each target client / created authorized_keys and insert public ssh key of ansible master node
vi .ssh/authorized_keys
# Ping all clients nodes
ansible all -m ping
# expected output
pi9 | SUCCESS => {
"changed": false,
"ping": "pong"
}
pi5 | SUCCESS => {
"changed": false,
"ping": "pong"
}
pi1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
pi4 | SUCCESS => {
"changed": false,
"ping": "pong"
}
# Now create first playbook
mkdir /etc/ansible/playbook
mkdir /etc/ansible/playbook/files
vi /etc/ansible/playbook/hello1.yml
---
- name: first playbook example
hosts: pi1 pi4 pi5 pi9
tasks:
- name: Create a file called '/tmp/hello1.txt' with the content 'hello world'.
copy:
content: hello world
dest: /tmp/hello1.txt
# Execute first playbook
ansible-playbook hello1.yml
PLAY [This is a hello-world example] ************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************
ok: [pi5]
ok: [pi9]
ok: [pi1]
ok: [pi4]
TASK [Create a file called '/tmp/hello.txt' with the content 'hello world'.] ********************************************************************
ok: [pi9]
ok: [pi5]
ok: [pi1]
ok: [pi4]
PLAY RECAP **************************************************************************************************************************************
pi1 : ok=2 changed=1 unreachable=0 failed=0
pi4 : ok=2 changed=1 unreachable=0 failed=0
pi5 : ok=2 changed=1 unreachable=0 failed=0
pi9 : ok=2 changed=1 unreachable=0 failed=0
# Now create second playbook
vi /etc/ansible/playbook/files/hello.txt
ENTER SOME TEXT
vi /etc/ansible/playbook/hello2.yml
---
- name: This is a second example
hosts: pi1 pi4 pi5 pi9
tasks:
- name: Create a file called '/tmp/hello.txt' with content
copy:
src: ./files/hello2.txt
dest: /tmp/hello2.txt
# Execute second playbook
ansible-playbook hello2.yml
PLAY [This is a second example] *****************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************
ok: [pi5]
ok: [pi9]
ok: [pi1]
ok: [pi4]
TASK [Create a file called '/tmp/hello.txt' with content] ***************************************************************************************
changed: [pi9]
ok: [pi5]
changed: [pi1]
changed: [pi4]
PLAY RECAP **************************************************************************************************************************************
pi1 : ok=2 changed=1 unreachable=0 failed=0
pi4 : ok=2 changed=1 unreachable=0 failed=0
pi5 : ok=2 changed=0 unreachable=0 failed=0
pi9 : ok=2 changed=1 unreachable=0 failed=0