Skip to content

Instantly share code, notes, and snippets.

@miticojo
Last active January 23, 2018 22:39
Show Gist options
  • Save miticojo/81dbcab9bd47b958a1507902fbd8abad to your computer and use it in GitHub Desktop.
Save miticojo/81dbcab9bd47b958a1507902fbd8abad to your computer and use it in GitHub Desktop.
Openshift Node OS Rolling Update
- hosts: nodes
serial: "20%"
tasks:
- name: make node unschedulable
command: oc adm manage-node {{inventory_hostname}} --schedulable=false
delegate_to: "{{groups.masters.0}}"
retries: 10
delay: 5
register: node_schedulable_result
until: node_schedulable_result|succeeded
- name: drain node from OCP cluster
command: oc adm drain {{inventory_hostname}} --force --ignore-daemonsets=true
register: node_drain_result
failed_when:
- not (node_drain_result.stdout.find('already') != -1)
- node_drain_result.rc != 0
delegate_to: "{{groups.masters.0}}"
- name: update os
yum:
name: "*"
state: latest
update_cache: yes
- name: Check for reboot hint.
shell: LAST_KERNEL=$(rpm -q --last kernel | awk 'NR==1{sub(/kernel-/,""); print $1}'); CURRENT_KERNEL=$(uname -r); if [ $LAST_KERNEL != $CURRENT_KERNEL ]; then echo 'reboot'; else echo 'no'; fi
ignore_errors: true
register: reboot_hint
- name: Restart master system
shell: sleep 2 && shutdown -r now "Machine restart after update"
when: reboot_hint.stdout.find("reboot") != -1
register: rebooting
async: 1
poll: 0
ignore_errors: true
become: yes
- set_fact:
wait_for_host: "{{ ansible_host }}"
- name: Wait for master to restart
local_action:
module: wait_for
host="{{ wait_for_host }}"
state=started
delay=10
timeout=600
port="{{ ansible_port | default(ansible_ssh_port | default(22,boolean=True),boolean=True) }}"
become: no
when: rebooting|changed
- name: make node schedulable again
command: oc adm manage-node {{inventory_hostname}} --schedulable=true
delegate_to: "{{groups.masters.0}}"
retries: 10
delay: 5
register: node_schedulable_result
until: node_schedulable_result|succeeded
@miticojo
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment