configure_firewall.yml
[student@workstation lab-task-control]$ cat configure_firewall.yml
---
- yum:
name: "{{ fw_package }}"
state: latest
tags: production
- service:
name: "{{ fw_service }}"
state: started
tags: production
- firewalld:
service: "{{ item }}"
immediate: true
permanent: true
state: enabled
with_items:
- http
- https
tags: production
configure_web.yml
[student@workstation lab-task-control]$ cat configure_web.yml
---
- shell:
rpm -q httpd
register: rpm_check
failed_when: rpm_check.rc == 1
- block:
- get_url:
url : "{{ https_uri }}"
dest: /etc/httpd/conf.d/
- file:
path: /etc/httpd/conf.d/ssl
state: directory
mode: 0755
- file:
path: /var/www/html/logs
state: directory
mode: 0755
- stat:
path: /etc/httpd/conf.d/ssl.conf
register: ssl_file
- shell:
mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bak
when: ssl_file.stat.exists
- unarchive:
src: "{{ ssl_uri }}"
dest: /etc/httpd/conf.d/ssl/
copy: no
notify:
- restart_services
- copy:
content: "{{ ansible_fqdn }} ({{ ansible_default_ipv4.address }}) has been customized by Ansible \n"
dest: /var/www/html/index.html
when:
rpm_check.rc == 0
install_packages.yml
[student@workstation lab-task-control]$ cat install_packages.yml
---
- name: Installs the required packages
yum:
name: "{{ item }}"
with_items:
- "{{ web_package }}"
- "{{ ssl_package }}"
when:
- inventory_hostname in groups["webservers"]
- "(ansible_memory_mb.real.total) > (memory)"
- name: Starts the service
service:
name: "{{ web_service }}"
state: started
playbook.yml
[student@workstation lab-task-control]$ cat playbook.yml
---
- hosts: webservers
tasks:
- block:
- include: install_packages.yml
vars:
memory: 256
web_package: httpd
ssl_package: mod_ssl
web_service: httpd
- include: configure_web.yml
vars:
https_uri: http://materials.example.com/task_control/https.conf
ssl_uri: http://materials.example.com/task_control/ssl.tar.gz
- include: configure_firewall.yml
vars:
fw_package: firewalld
fw_service: firewalld
tags: production
rescue:
- yum:
name: httpd
state: latest
notify:
- restart_services
- debug:
msg: "Failed to import and run all the tasks; installing the whb server manually"
always:
- shell:
cmd: "systemctl status httpd"
handlers:
- name: restart_services
service:
name: "{{ item }}"
state: restarted
with_items:
- httpd
- firewalld