demo for roles completed

This commit is contained in:
Ilgar_Naghiyev
2020-03-09 14:26:17 +01:00
parent e6cf0372a2
commit cea5aef3f0

103
README.md
View File

@@ -43,7 +43,7 @@ Red Hat Certified Specialist in Ansible Automation (EX407) Preparation Course
- [LAB: Working with Ansible Templates, Variables, and Facts](#lab-working-with-ansible-templates-variables-and-facts)
- [Create and Work with Roles](#create-and-work-with-roles)
- [Working with Ansible Roles Lecture](#working-with-ansible-roles-lecture)
- [Demo: Creating and Applying a Role in Ansible](#demo-creating-and-applying-a-role-in-ansible)
## Understanding Core Components of Ansible
@@ -1262,4 +1262,105 @@ Best practice dictates that you properly namespace your variables when working w
- The **templates** directory contains templates which can be deployed via this role
- Templates within this directory may be referenced without a path throughout the role.
### Demo: Creating and Applying a Role in Ansible
In this terminal-side demonstration, a new role is created and then applied to a target host.
- `ansible-galaxy role init apache` - create an **apache** role with default structure by using *ansible-galaxy*
```
[cloud_user@innaghiyev2c ~]$ ll /etc/ansible/roles/apache/
total 4
drwxrwxr-x. 2 cloud_user cloud_user 21 Mar 9 08:27 defaults
drwxrwxr-x. 2 cloud_user cloud_user 6 Mar 9 08:27 files
drwxrwxr-x. 2 cloud_user cloud_user 21 Mar 9 08:27 handlers
drwxrwxr-x. 2 cloud_user cloud_user 21 Mar 9 08:27 meta
-rw-rw-r--. 1 cloud_user cloud_user 1328 Mar 9 08:27 README.md
drwxrwxr-x. 2 cloud_user cloud_user 21 Mar 9 08:27 tasks
drwxrwxr-x. 2 cloud_user cloud_user 6 Mar 9 08:27 templates
drwxrwxr-x. 2 cloud_user cloud_user 37 Mar 9 08:27 tests
drwxrwxr-x. 2 cloud_user cloud_user 21 Mar 9 08:27 vars
```
- `vim /etc/ansible/roles/tasks/main.yml` - we're going to start from `tasks`
```
---
# tasks file for apache
- name: install apache
yum: name=httpd state=latest
- name: copy httpd.conf template
template:
src: httpd.conf.j2
dest: /etc/httpd/conf/httpd.conf
notify: restart httpd
- name: enable and start service
service:
name: httpd
enabled: yes
state: started
```
- `ls -l /etc/ansible/roles/apache/templates` - our templates for apache role stored in **templates** directory, no need to define full path for it
```
[cloud_user@innaghiyev2c templates]$ ls -l
total 12
-rw-r--r--. 1 root root 11765 Mar 9 08:47 httpd.conf.j2
```
- `vim /etc/ansible/roles/apache/defaults/main.yml` - we're going to setup default attributes.
```
---
# defaults file for apache
apache_server_admin: admin@example.com
```
- `/etc/ansible/roles/apache/handlers/main.yml` - configuring handler
```
---
# handlers file for apache
- name: restart apache service
service: name=httpd state=restarted
listen: "restart httpd"
```
- `/etc/ansible/roles/install.yml` - configure playbook to use **apache** role
```
---
- hosts: labservers
become: yes
roles:
- apache
```
- `ansible-playbook install.yml` - finally run your playbook and check for results.
```
PLAY RECAP **********************************************************************************************************************************************************
innaghiyev1c.mylabserver.com : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
innaghiyev2c.mylabserver.com : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
innaghiyev3c.mylabserver.com : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
```
- `vim /etc/ansible/roles/install.yml` - let's change our default variable for **apache_server_admin**
```
---
- hosts: labservers
become: yes
roles:
- apache
vars:
apache_server_admin: beson@example.com
```
- `vim -R /etc/httpd/conf/httpd.conf` - as we can see new **ServerAdmin** value has been updated
```
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin beson@example.com
```