Hello Mauricio,
Thanks for showing interest.
Here i am posting each yml code.
it is not working for each host and also we observe playbook is stuck some time after executing some task.
code for patching
=====Main yml=============
runsetup.yml
---
- name: Performing multiple commands
hosts: patch
become: yes
gather_facts: no
any_errors_fatal: false
roles:
- patch_server2
=========================
#cd patch_server2
#tree
.
|-- defaults
| `-- main.yml
|-- files
|-- handlers
| `-- main.yml
|-- meta
| `-- main.yml
|-- README.md
|-- tasks
| |-- after_patch_reboot.yml
| |-- check_uptime.yml
| |-- display_details.yml
| |-- fetch_data.yml
| |-- kernel_com.yml
| |-- kernel_mail.yml
| |-- kernel_pat.yml
| |-- main.yml
| |-- patching.yml
| |-- post_mail.yml
| |-- pre_commands.yml
| `-- pre_mail.yml
|-- templates
|-- tests
| |-- inventory
| `-- test.yml
`-- vars
`-- main.yml
+++++++++++++++++++++++++++++++++++++
cat tasks/main.yml
- import_tasks: pre_commands.yml
- import_tasks: display_details.yml
- import_tasks: fetch_data.yml
- import_tasks: check_uptime.yml
- import_tasks: pre_mail.yml
- import_tasks: patching.yml
- import_tasks: post_mail.yml
- import_tasks: after_patch_reboot.yml
- import_tasks: kernel_pat.yml
- import_tasks: kernel_com.yml
- import_tasks: after_patch_reboot.yml
- import_tasks: kernel_mail.ymlroot@devops:/home/testuser/iddeletion/patch_server2# cat tasks/after_patch_reboot.yml
---
- name: Check the uptime
shell: uptime
register: UPTIME_Post_REBOOT
- name: Reboot server
shell: 'sleep 1 && shutdown -r now "Reboot triggered by Ansible" && sleep 1'
async: 1
poll: 0
ignore_errors: true
register: out
- name: Sending Error mail
mail:
host: localhost
port: 25
to: a@.com
subject: Error...while Rebooting (Repo 7) {{ inventory_hostname }} server.
body: Failed Error - {{ out.results_file }}
delegate_to: 127.0.0.1
when: out.finished == 1
- name: Wait for server to restart
wait_for_connection:
delay: 1
timeout: 60
ignore_errors: true
register: wait_out
- name: Sending Error mail
mail:
host: localhost
port: 25
subject: Error...while server waiting for connection (Repo 7) of {{ inventory_hostname }} server.
body: Failed Error - {{ wait_out }}
delegate_to: 127.0.0.1
when: wait_out.failed == 1
++++++++++++++++++++++++++++++++++++++++++++
#cat tasks/display_details.yml
---
- name: cat command
command: cat {{ inventory_hostname }}
register: out
- debug:
var: out
__________________
---
- name: Fetching from dest to source
fetch:
src: /root/{{ inventory_hostname }}
dest: /home/testuser/iddeletion/patching/
______________________________
#cat tasks/kernel_com.yml
---
- name: check if reboot required after kernel update.
shell: KERNEL_NEW=$(rpm -a -last kernel |head -1 | awk '{print $1}' | sed 's/kernel-//'); KERNEL_NOW=$(uname -r); if [[ $KERNEL_NEW != $KERNEL_NOW ]]; then echo "reboot_needed" ; else echo "reboot_not_needed"; fi
ignore_errors: true
register: reboot_required
-----------------------------------------------------------
# cat tasks/kernel_mail.yml
---
- name: mail(post) notification
mail:
host: localhost
port: 25
subject: 'final(after kernel patching ) reboot.'
body: "kernel patching done(Repo 7)..now rebooting server.."
delegate_to: 127.0.0.1
tags: mail
__________________________________
# cat tasks/kernel_pat.yml
---
- name: Installing Latest Kernel
block:
- name: installing kernel
yum:
name: 'kernel*'
state: latest
register: kup
ignore_errors: True
- name: Sending Error mail
mail:
host: localhost
port: 25
subject: Error...while doing Kernel patching(Repo6) of {{ inventory_hostname }} server.
body: Kernel Patching Failed Error - {{ kup.results }}
delegate_to: 127.0.0.1
when: kup.rc == 1
always:
- debug:
var: kup
_______________________________________________
cat tasks/patching.yml
---
- name: upgrade all packages, excluding kernel related packages
yum:
name: '*'
state: latest
exclude: kernel*, java*
ignore_errors: yes
register: result_output
- debug:
var: result_output
- name: Sending Error mail
mail:
host: localhost
port: 25
subject: Error...while doing patching(Repo6) of {{ inventory_hostname }} server.
body: Patching Failed Error - {{ result_output.results }}
delegate_to: 127.0.0.1
when: result_output.rc == 1
-__________________________
# cat tasks/post_mail.yml
---
- name: mail(post) notification
mail:
host: localhost
port: 25
subject: 'Linux patching has completed and Kernel patching starting.'
body: "Automated Linux patching has completed and kernael patching starting."
delegate_to: 127.0.0.1
tags: mail
___________________________________