scaleup.yml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. ---
  2. - name: create new nodes
  3. hosts: localhost
  4. connection: local
  5. tasks:
  6. - import_tasks: ssh_bastion.yml
  7. - import_tasks: get_machinesets.yml
  8. - include_tasks: create_machineset.yml
  9. loop: "{{ machineset.resources }}"
  10. when:
  11. - item.status.replicas is defined
  12. - item.status.replicas != 0
  13. - name: wait for nodes to become available
  14. hosts: new_workers
  15. gather_facts: false
  16. tasks:
  17. - wait_for_connection: {}
  18. - setup: {}
  19. - name: Copy ops-mirror.pem
  20. copy:
  21. src: ../../inventory/dynamic/injected/ops-mirror.pem
  22. dest: /var/lib/yum/ops-mirror.pem
  23. owner: root
  24. group: root
  25. mode: 0644
  26. - name: Initialize openshift repos
  27. import_role:
  28. name: openshift_repos
  29. vars:
  30. openshift_version: "4.0"
  31. - import_playbook: ../../playbooks/scaleup.yml
  32. vars:
  33. openshift_kubeconfig_path: "{{ kubeconfig_path }}"
  34. - name: wait for nodes to join
  35. hosts: new_workers
  36. tasks:
  37. - name: HACK disable selinux
  38. selinux:
  39. policy: targeted
  40. state: permissive
  41. - name: Create core user for storage tests to pass
  42. user:
  43. name: core
  44. group: wheel
  45. - name: Make sure core user has ssh config directory
  46. file:
  47. name: /home/core/.ssh
  48. state: directory
  49. owner: core
  50. group: wheel
  51. mode: 0700
  52. - name: Install nfs-utils for storage tests
  53. package:
  54. name: nfs-utils
  55. state: present
  56. - name: Wait for new nodes to be ready
  57. k8s_facts:
  58. kubeconfig: "{{ kubeconfig_path }}"
  59. kind: Node
  60. name: "{{ node_name }}"
  61. delegate_to: localhost
  62. register: new_machine
  63. until:
  64. - new_machine.resources is defined
  65. - new_machine.resources | length > 0
  66. - new_machine.resources[0].status is defined
  67. - new_machine.resources[0].status.conditions is defined
  68. - new_machine.resources[0].status.conditions | selectattr('type', 'match', '^Ready$') | map(attribute='status') | join | bool == True
  69. # Give the node three minutes to come back online.
  70. retries: 48
  71. delay: 30
  72. ignore_errors: true
  73. - when: new_machine is failed
  74. block:
  75. - name: Collect a list of containers
  76. command: crictl ps -a -q
  77. register: crictl_ps_output
  78. - name: Collect container logs
  79. command: "crictl logs {{ item }}"
  80. register: crictl_logs_output
  81. with_items: "{{ crictl_ps_output.stdout_lines }}"
  82. ignore_errors: true
  83. - name: Get crio logs
  84. command: journalctl --no-pager -u cri-o
  85. register: crio_logs
  86. ignore_errors: true
  87. - name: Get kubelet logs
  88. command: journalctl --no-pager -u kubelet
  89. register: kubelet_logs
  90. ignore_errors: tru
  91. - debug:
  92. var: crictl_logs_output
  93. - debug:
  94. msg: "{{ kubelet_logs.stdout_lines }}"
  95. - debug:
  96. msg: "{{ crio_logs.stdout_lines }}"
  97. - fail:
  98. msg: Node failed to become Ready
  99. - name: Remove CoreOS nodes
  100. hosts: localhost
  101. connection: local
  102. tasks:
  103. - name: Mark CoreOS nodes as unschedulable
  104. command: >
  105. oc adm cordon {{ item | lower }}
  106. --config={{ kubeconfig_path }}
  107. with_items: "{{ pre_scaleup_workers_name }}"
  108. - name: Drain CoreOS nodes
  109. command: >
  110. oc adm drain {{ item | lower }}
  111. --config={{ kubeconfig_path }}
  112. --force --delete-local-data --ignore-daemonsets
  113. --timeout=0s
  114. with_items: "{{ pre_scaleup_workers_name }}"
  115. - name: remove existing machinesets
  116. k8s:
  117. api_version: machine.openshift.io/v1beta1
  118. kubeconfig: "{{ kubeconfig_path }}"
  119. namespace: openshift-machine-api
  120. kind: MachineSet
  121. name: "{{ item }}"
  122. state: absent
  123. with_items: "{{ pre_scaleup_machineset_names }}"
  124. - name: Delete CoreOS nodes
  125. k8s:
  126. kubeconfig: "{{ kubeconfig_path }}"
  127. kind: Node
  128. name: "{{ item }}"
  129. state: absent
  130. with_items: "{{ pre_scaleup_workers_name }}"