sync.yml 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. ---
  2. - name: Ensure project exists
  3. oc_project:
  4. name: openshift-node
  5. state: present
  6. node_selector:
  7. - ""
  8. - name: Make temp directory for templates
  9. command: mktemp -d /tmp/ansible-XXXXXX
  10. register: mktemp
  11. changed_when: False
  12. - name: Copy templates to temp directory
  13. copy:
  14. src: "{{ item }}"
  15. dest: "{{ mktemp.stdout }}/{{ item | basename }}"
  16. with_fileglob:
  17. - "files/*.yaml"
  18. - name: Update the image tag
  19. yedit:
  20. src: "{{ mktemp.stdout }}/sync-images.yaml"
  21. key: 'tag.from.name'
  22. value: "{{ osn_image }}"
  23. - name: Ensure the service account can run privileged
  24. oc_adm_policy_user:
  25. namespace: "openshift-node"
  26. resource_kind: scc
  27. resource_name: privileged
  28. state: present
  29. user: "system:serviceaccount:openshift-node:sync"
  30. # TODO: temporary until we fix apply for image stream tags
  31. - name: Remove the image stream tag
  32. command: >
  33. {{ openshift_client_binary }}
  34. --config={{ openshift.common.config_base }}/master/admin.kubeconfig
  35. delete -n openshift-node istag node:v3.11 --ignore-not-found
  36. register: l_os_istag_del
  37. # The istag might not be there, so we want to not fail in that case.
  38. failed_when:
  39. - l_os_istag_del.rc != 0
  40. - "'have a resource type' not in l_os_istag_del.stderr"
  41. - name: Apply the config
  42. shell: >
  43. {{ openshift_client_binary }} --config={{ openshift.common.config_base }}/master/admin.kubeconfig apply -f {{ mktemp.stdout }}
  44. - name: Remove temp directory
  45. file:
  46. state: absent
  47. name: "{{ mktemp.stdout }}"
  48. changed_when: False
  49. - name: Wait for the sync daemonset to become ready and available
  50. oc_obj:
  51. state: list
  52. kind: daemonset
  53. name: sync
  54. namespace: openshift-node
  55. register: __status_of_sync_ds
  56. until:
  57. - __status_of_sync_ds.results is defined
  58. - __status_of_sync_ds.results.results is defined
  59. - __status_of_sync_ds.results.results | length > 0
  60. - __status_of_sync_ds.results.results[0].status is defined
  61. - __status_of_sync_ds.results.results[0].status.numberAvailable is defined
  62. - __status_of_sync_ds.results.results[0].status.desiredNumberScheduled is defined
  63. - __status_of_sync_ds.results.results[0].status.numberAvailable == __status_of_sync_ds.results.results[0].status.desiredNumberScheduled
  64. retries: 60
  65. delay: 10
  66. - name: Wait for sync DS to set annotations on master nodes
  67. oc_obj:
  68. state: list
  69. kind: node
  70. selector: ""
  71. register: node_status
  72. until:
  73. - node_status.results is defined
  74. - node_status.results.results is defined
  75. - node_status.results.results | length > 0
  76. - node_status.results.results[0]['items']
  77. | map(attribute='metadata.annotations') | map('list') | flatten
  78. | select('match', '[\"node.openshift.io/md5sum\"]') | list | length ==
  79. node_status.results.results[0]['items'] | length
  80. retries: 60
  81. delay: 10
  82. # Sync DS may have restarted masters
  83. - name: Verify api server is available
  84. command: >
  85. curl --silent --tlsv1.2
  86. --cacert {{ openshift.common.config_base }}/master/ca-bundle.crt
  87. {{ openshift.master.api_url }}/healthz/ready
  88. args:
  89. # Disables the following warning:
  90. # Consider using get_url or uri module rather than running curl
  91. warn: no
  92. register: api_available_output
  93. until: api_available_output.stdout == 'ok'
  94. retries: 120
  95. delay: 1
  96. changed_when: false