Good lord, I thought our patching process was complicated :)

I don't have a specific answer to solve your issue; but, I do have some 
suggestions.

It looks like your playbook is designed to run non-interactively - kicked 
off from something like tower or control-m.  My first suggestion is to 
start simple, run the plays for a local ansible-playbook command if 
possible.  That will allow you to troubleshoot issues immediately rather 
than waiting for emails.

It appears you're separating kernel and non-kernel patching.  FWIW, that's 
not absolutely necessary.  ``yum -y update`` will update rpms that support 
it, and install (not update) new kernels.  Our specific patching task looks 
like:

  - name: Patch All Hosts
    yum:
      name: '*'
      state: latest
      update_cache: yes
    no_log: True

and seems to work fine.

I see you have 'sleep # && reboot' or some such.  Assuming a reasonably 
recent version of ansible, the reboot module is much more straight forward.

Long story short: When designing new processes, I generally try to keep 
things as simple as possible and add complexity when needed.  If this is an 
established process and you inherited it, you may need to redesign in a 
test environment.

Sorry i couldn't be more help.

Doug O'Leary

On Tuesday, November 12, 2019 at 5:45:22 AM UTC-6, Sadanand Alegaonkar 
wrote:
>
>
>
> On Tuesday, November 12, 2019 at 4:29:24 PM UTC+5:30, Mauricio Tavares 
> wrote:
>>
>> On Tue, Nov 12, 2019 at 5:32 AM Sadanand Alegaonkar 
>> <[email protected]> wrote: 
>> > 
>> > Hello Team, 
>> > 
>> > we are going to introduce patching through Ansible. 
>> > 
>> > Following step manually we perform. 
>> >  1. pre artifacts. 
>> >   2. Before patching plain reboot. 
>> >   3. Patching excluding kernel and reboot 
>> >   4. Kernel patching and reboot. 
>> > 
>> > Above steps we tried to do through ansible and we achieve our goal 
>> partially. 
>> > 
>> > For one host patching, error mail came successfully, if we tired to 
>> patch server  more than one server error mail will came for last server. 
>> > 
>> > we need error mail should came for each hosts while performing 
>> patching. 
>> > 
>> > Your help is more appreciable. 
>> > 
>>
>> Without more information, I can only make assumptions. 
>> Assuming your email sending code is inside the task that does the update. 
>> Assuming said task is called for each server you are upgrading. 
>> I would expect it to work. 
>>
>>
>> > Regards, 
>> > Sadanand 
>> > 
>> > 
>> > 
>> > 
>> > 
>> > 
>> > -- 
>> > You received this message because you are subscribed to the Google 
>> Groups "Ansible Project" group. 
>> > To unsubscribe from this group and stop receiving emails from it, send 
>> an email to [email protected]. 
>> > To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/7eca24ab-f006-4606-9afb-45d303d447f0%40googlegroups.com.
>>  
>>
>>
>
>
>
> 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: [email protected]
>     from: [email protected] <javascript:>
>     cc: [email protected] <javascript:>
>     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
>     to: [email protected] <javascript:>
>     from: [email protected] <javascript:>
>     cc: [email protected] <javascript:>
>     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
>     to: [email protected] <javascript:>
>     from: [email protected] <javascript:>
>     cc: [email protected] <javascript:>
>     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
>        to: [email protected] <javascript:>
>        from: [email protected] <javascript:>
>        cc: [email protected] <javascript:>
>        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
>     to: [email protected] <javascript:>
>     from: [email protected] <javascript:>
>     cc: [email protected] <javascript:>
>     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
>     to: [email protected] <javascript:>
>     from: [email protected] <javascript:>
>     cc: [email protected] <javascript:>
>     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
> ___________________________________
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/20296b2b-b215-4c74-9613-3c5ccec93e5d%40googlegroups.com.

Reply via email to