https://www.devopsschool.com/blog/ansible-playbook-lab-excercise-part-2/
-
-
Save devops-school/39243de4e9f23d9687b3ecfeeecaf3d0 to your computer and use it in GitHub Desktop.
-
name: create a group "group"
hosts: deploy
tasks:- name: create the group
group: name=group
- name: create the group
-
name: create a user called “deploy-user” which is part of group called “group” and with /bin/bash shell
hosts: deploy
tasks:- name: create the user
user: name=deploy-user group=group shell=/bin/bash
- name: create the user
-
name: this is setup an httpd webserver
hosts: deploy
tasks:- name: install the httpd apps
yum: name=httpd - name: start the httpd service
service: name=httpd state=started
- name: install the httpd apps
-
name: create a file called “index.html” in /var/www/html with some dummy html contents
hosts: deploy
tasks:-
name: create a directory
file: path=/home/Ahamed/ state=directory -
name: create a file
file: dest=/home/Ahamed/index.html mode=644 state=touch -
name: adding content to the index.html
lineinfile: dest=/home/Ahamed/index.html line='\nWelcome to HP Ansible class
\n' -
name: copy index.html to /var/www/html
copy: src=/home/Ahamed/index.html dest=/var/www/html/ -
name: install a package called “git”, “wget”
yum: name=git -
name: install a package called "wget"
yum: name=wget -
name: clone git repo. https://github.com/scmgalaxy/ansible-role-template
git: repo=https://github.com/scmgalaxy/ansible-role-template clone=yes dest=/home/Ahamed/git
...
-
ansible window -i inventory -m win_file -a "path=C:\hp\Ashutosh state=directory"
ansible window -i inventory -m win_lineinfile -a "path=C:\hp\Ashutosh\index.html line='
Welcome to HP Ansible
'"Windows exercise
ansible all -i ec2-13-233-119-65.ap-south-1.compute.amazonaws.com, -m win_file -a "path=\c\hp\sanjeev\ state=directory" -u Administrator -c winrm --ask-pass -e ansible_winrm_server_cert_validation=ignore
ansible all -i ec2-13-233-119-65.ap-south-1.compute.amazonaws.com, -m win_file -a "path=\c\hp\sanjeev\index.html state=touch" -u Administrator -c winrm --ask-pass -e ansible_winrm_server_cert_validation=ignore
ansible all -i ec2-13-233-119-65.ap-south-1.compute.amazonaws.com, -m win_lineinfile -a "path=\c\hp\sanjeev\index.html line='<html> <h1> Welcome to HP Ansible class </h1> </html>' state=present" -u Administrator -c winrm --ask-pass -e ansible_winrm_server_cert_validation=ignore
[root@localhost ~]# cat inventory [webservices] 10.76.137.151 ansible_become=yes ansible_user=tester ansible_password=tester1 ansible_become_pass=tester1 10.76.138.14 ansible_become=yes ansible_user=tester ansible_password=tester1 ansible_become_pass=tester1 #127.0.0.1 ansible_connection=local [root@localhost ~]# cat one.yaml --- - name: "Lab exercise 4 - 1" hosts: webservices tasks: - name: Create a group called deploy group: name=deploy state=present ... [root@localhost ~]# cat two.yaml --- - name: "Lab exercise 4 - 2" hosts: webservices tasks: - name: Create a user called deploy-user which is part of group called deploy user: name=deploy-user group=deploy ... [root@localhost ~]# cat three.yaml --- - name: "Lab exercise 4 - 3" hosts: webservices tasks: - name: Command to install package named httpd yum: name=httpd state=present ... [root@localhost ~]# cat four.yaml --- - name: "Lab exercise 4 - 4" hosts: webservices tasks: - name: Commands to start and enable the service named “httpd” service: name=httpd state=started ... [root@localhost ~]# cat five.yaml --- - name: "Lab exercise 4 - 5" hosts: webservices tasks: - name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents. file: path=/var/www/html state=directory - name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents. file: dest=/var/www/html/index.html mode=600 state=touch - name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents. lineinfile: dest=/var/www/html/index.html line='<html> <h1> Welcome to HP Ansible classes </h1> </html> ' ... [root@localhost ~]# cat six.yaml --- - name: "Lab exercise 4 - 6" hosts: webservices tasks: - name: Command to reboot a machine. reboot: ... [root@localhost ~]# cat seven.yaml --- - name: "Lab exercise 4 - 7" hosts: webservices tasks: - name: Commands to install a package called “git”, “wget”. yum: name=git,wget state=present ... [root@localhost ~]# cat eight.yaml --- - name: "Lab exercise 4 - 8" hosts: webservices tasks: - name: Command to create a temp directory to host the repo file: path=/tmp/test state=directory - name: Command to clone git repo git: repo=https://github.com/scmgalaxy/ansible-role-template clone=yes dest=/tmp/test ... [root@localhost ~]# cat nine.yaml --- - name: "Lab exercise 4 - 9 Merging of all previous commands" hosts: webservices tasks: - name: Create a group called deploy group: name=deploy state=present - name: Create a user called deploy-user which is part of group called deploy user: name=deploy-user group=deploy - name: Command to install package named httpd yum: name=httpd state=present - name: Commands to start and enable the service named “httpd” service: name=httpd state=started - name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents. file: path=/var/www/html state=directory - name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents. file: dest=/var/www/html/index.html mode=600 state=touch - name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents. lineinfile: dest=/var/www/html/index.html line='<html> <h1> Welcome to HP Ansible classes </h1> </html> ' - name: Commands to install a package called “git”, “wget”. yum: name=git,wget state=present - name: Command to create a temp directory to host the repo file: path=/tmp/test state=directory - name: Command to clone git repo git: repo=https://github.com/scmgalaxy/ansible-role-template clone=yes dest=/tmp/test - name: Command to reboot a machine. reboot: ... `
Lab Exercise 5:
Connecting to Windows ARS from Linux Ansible ACS server and creating a directory "Swetha" under C:\hp, creating a file "index.html" with some contents.
[root@localhost ~]#
[root@localhost ~]# cat windows.yaml
- name: "Lab exercise 5"
hosts: win
tasks:- name: Create directory Swetha
win_file: path=C:\hp\Swetha state=directory - name: create the file
win_file: path=C:\hp\Swetha\index.html state=touch - name: write the contents of the file
win_lineinfile: path=C:\hp\Swetha\index.html line='Welcome to HPE Ansible classes
'
...
- name: Create directory Swetha
[root@localhost ~]# cat inventory
[win]
ec2-13-233-119-65.ap-south-1.compute.amazonaws.com ansible_user=Administrator ansible_password=WsgPP?V%&JWvp.AwfKcacQp@22I!8QF! ansible_connection=winrm ansible_winrm_transport=basic ansible_winrm_server_cert_validation=ignore
[root@localhost ~]# ansible-playbook -i inventory windows.yaml
- name: create file and copy
hosts: localhost
tasks:- name: create file
file: dest=/opt/test.txt mode=600 state=touch
when: ansible_os_family == "RedHat" - name: copy file
copy: src=/opt/test.txt dest=/var/www/html/test.txt
when: ansible_os_family == "RedHat" - name: copy contents
copy: dest=/opt/index.html content='this is linux redhat
'
when: ansible_os_family == "RedHat" - name: copy file
copy: src=/opt/index.html dest=/var/www/html/index.html
- name: create file
[root@localhost ~]# cat inventory [webservices] 10.76.137.151 ansible_become=yes ansible_user=tester ansible_password=tester1 ansible_become_pass=tester1 10.76.138.14 ansible_become=yes ansible_user=tester ansible_password=tester1 ansible_become_pass=tester1 #127.0.0.1 ansible_connection=local [root@localhost ~]# cat one.yaml --- - name: "Lab exercise 4 - 1" hosts: webservices tasks: - name: Create a group called deploy group: name=deploy state=present ... [root@localhost ~]# cat two.yaml --- - name: "Lab exercise 4 - 2" hosts: webservices tasks: - name: Create a user called deploy-user which is part of group called deploy user: name=deploy-user group=deploy ... [root@localhost ~]# cat three.yaml --- - name: "Lab exercise 4 - 3" hosts: webservices tasks: - name: Command to install package named httpd yum: name=httpd state=present ... [root@localhost ~]# cat four.yaml --- - name: "Lab exercise 4 - 4" hosts: webservices tasks: - name: Commands to start and enable the service named “httpd” service: name=httpd state=started ... [root@localhost ~]# cat five.yaml --- - name: "Lab exercise 4 - 5" hosts: webservices tasks: - name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents. file: path=/var/www/html state=directory - name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents. file: dest=/var/www/html/index.html mode=600 state=touch - name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents. lineinfile: dest=/var/www/html/index.html line='<html> <h1> Welcome to HP Ansible classes </h1> </html> ' ... [root@localhost ~]# cat six.yaml --- - name: "Lab exercise 4 - 6" hosts: webservices tasks: - name: Command to reboot a machine. reboot: ... [root@localhost ~]# cat seven.yaml --- - name: "Lab exercise 4 - 7" hosts: webservices tasks: - name: Commands to install a package called “git”, “wget”. yum: name=git,wget state=present ... [root@localhost ~]# cat eight.yaml --- - name: "Lab exercise 4 - 8" hosts: webservices tasks: - name: Command to create a temp directory to host the repo file: path=/tmp/test state=directory - name: Command to clone git repo git: repo=https://github.com/scmgalaxy/ansible-role-template clone=yes dest=/tmp/test ... [root@localhost ~]# cat nine.yaml --- - name: "Lab exercise 4 - 9 Merging of all previous commands" hosts: webservices tasks: - name: Create a group called deploy group: name=deploy state=present - name: Create a user called deploy-user which is part of group called deploy user: name=deploy-user group=deploy - name: Command to install package named httpd yum: name=httpd state=present - name: Commands to start and enable the service named “httpd” service: name=httpd state=started - name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents. file: path=/var/www/html state=directory - name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents. file: dest=/var/www/html/index.html mode=600 state=touch - name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents. lineinfile: dest=/var/www/html/index.html line='<html> <h1> Welcome to HP Ansible classes </h1> </html> ' - name: Commands to install a package called “git”, “wget”. yum: name=git,wget state=present - name: Command to create a temp directory to host the repo file: path=/tmp/test state=directory - name: Command to clone git repo git: repo=https://github.com/scmgalaxy/ansible-role-template clone=yes dest=/tmp/test - name: Command to reboot a machine. reboot: ...
Lab Exercise 6:
Mention "This is windows" in windows OS.
C:\hp\Swetha\index.html
Mention "This is linux" in Linux OS.
/var/www/html/index.html
[root@localhost ~]# ansible-playbook -i inventory cond.yaml
[root@localhost ~]# cat inventory
[both]
ec2-13-233-119-65.ap-south-1.compute.amazonaws.com ansible_user=Administrator ansible_password=WsgPP?V%&JWvp.AwfKcacQp@22I!8QF! ansible_connection=winrm ansible_winrm_transport=basic ansible_winrm_server_cert_validation=ignore
10.76.137.151 ansible_become=yes ansible_user=tester ansible_password=tester1 ansible_become_pass=tester1
10.76.138.14 ansible_become=yes ansible_user=tester ansible_password=tester1 ansible_become_pass=tester1
[root@localhost ~]#
[root@localhost ~]# cat cond.yaml
- name: "Lab exercise 5"
hosts: both
tasks:-
name: Create directory Swetha
win_file: path=C:\hp\Swetha state=directory
when: ansible_os_family != "RedHat" -
name: create the file
win_file: path=C:\hp\Swetha\index.html state=touch
when: ansible_os_family != "RedHat" -
name: write the contents of the file
win_lineinfile: path=C:\hp\Swetha\index.html line='This is Windows...
'
when: ansible_os_family != "RedHat" -
name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents.
file: path=/var/www/html state=directory
when: ansible_os_family == "RedHat" -
name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents.
file: dest=/var/www/html/index.html mode=600 state=touch
when: ansible_os_family == "RedHat" -
name: Commands to create a file called “index.html” in /var/www/html with some dummy html contents.
lineinfile: dest=/var/www/html/index.html line='This is RedHat Linux
'
when: ansible_os_family == "RedHat"
-
...
- name: test for conditional
hosts: all
tasks:- name:
win_lineinfile:
path: C:\hp\Ashutosh\index.html
line: 'this is window server'
when:- ansible_distribution == "window"
- name: copy on linux
lineinfile:
path: /var/www/html/index.html
line: 'this is linux'
when:- ansible_os_family == "RedHat"
...
- ansible_os_family == "RedHat"
- name:
- name: create a directory and file and append content"
hosts: deploy
tasks:- name: create directory
win_file: path=C:\hp\Sultan state=directory - name: create a file
win_file: path=C:\hp\Sultan\index.html state=touch - name: adding content to the file
win_lineinfile: path=C:\hp\Sultan\index.html line='Operating system is Red-hat
'
when: ansible_facts['os_family'] == "RedHat"
...
- name: create directory
Lab4 - Windows
---
- name: Create a file on windows server server
hosts: windows
tasks:
- name: Create a dir
win_file:
path: C:\hp\neetesh
state: directory
- name: Create a file
win_file:
path: C:\hp\neetesh\index.html
state: touch
- name: push contents to the file
win_copy:
src: /home/tester/index.html
dest: C:\hp\neetesh\index.html
Lab5- Conditonals
---
- name: Gather facts for Redhat and windows
hosts: mix
tasks:
- name: Gather windows facts
win_copy:
src: /home/tester/index.html
dest: C:\hp\neetesh\index.html
when: ansible_distribution == "window"
- name: Get the linux facts
lineinfile: dest=/var/www/html/index.html line='<html> <h1> This is Redhat machine </h1> </html>'
when: ansible_os_family == "RedHat"
cat combined.yaml
hosts: test
tasks:
group: name=deploytest state=present
user: name=deploytest group=deploytest shell=/bin/bash
yum: name=git state=latest
service: name=httpd state=started
file: dest=/var/www/html/index1.html state=touch owner=root mode=755
yum: name=unzip state=latest
git: repo=https://github.com/scmgalaxy/ansible-role-template dest=/home/murali clone=yes
...
[root@see1 ansible]# cat inventory
[test]
127.0.0.1 ansible_connection=local
15.213.56.127 ansible_user=root ansible_become=yes
15.213.56.128 ansible_user=root ansible_become=yes
[root@see1 ansible]#
[root@see1 ansible]# ansible-playbook -i inventory combined.yaml