wire_aggregator.yml 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. ---
  2. - name: Make temp cert dir
  3. command: mktemp -d /tmp/openshift-service-catalog-ansible-XXXXXX
  4. register: certtemp
  5. changed_when: False
  6. - name: Check for First Master Aggregator Signer cert
  7. stat:
  8. path: /etc/origin/master/front-proxy-ca.crt
  9. register: first_proxy_ca_crt
  10. changed_when: false
  11. delegate_to: "{{ first_master }}"
  12. - name: Check for First Master Aggregator Signer key
  13. stat:
  14. path: /etc/origin/master/front-proxy-ca.crt
  15. register: first_proxy_ca_key
  16. changed_when: false
  17. delegate_to: "{{ first_master }}"
  18. # TODO: this currently has a bug where hostnames are required
  19. - name: Creating First Master Aggregator signer certs
  20. command: >
  21. oc adm ca create-signer-cert
  22. --cert=/etc/origin/master/front-proxy-ca.crt
  23. --key=/etc/origin/master/front-proxy-ca.key
  24. --serial=/etc/origin/master/ca.serial.txt
  25. delegate_to: "{{ first_master }}"
  26. when:
  27. - not first_proxy_ca_crt.stat.exists
  28. - not first_proxy_ca_key.stat.exists
  29. - name: Check for Aggregator Signer cert
  30. stat:
  31. path: /etc/origin/master/front-proxy-ca.crt
  32. register: proxy_ca_crt
  33. changed_when: false
  34. - name: Check for Aggregator Signer key
  35. stat:
  36. path: /etc/origin/master/front-proxy-ca.crt
  37. register: proxy_ca_key
  38. changed_when: false
  39. - name: Copy Aggregator Signer certs from first master
  40. fetch:
  41. src: "/etc/origin/master/{{ item }}"
  42. dest: "{{ certtemp.stdout }}/{{ item }}"
  43. with_items:
  44. - front-proxy-ca.crt
  45. - front-proxy-ca.key
  46. delegate_to: "{{ first_master }}"
  47. when:
  48. - not proxy_ca_key.stat.exists
  49. - not proxy_ca_crt.stat.exists
  50. - name: Copy Aggregator Signer certs to host
  51. copy:
  52. src: "{{ certtemp.stdout }}/{{ item }}"
  53. dest: "/etc/origin/master/{{ item }}"
  54. with_items:
  55. - front-proxy-ca.crt
  56. - front-proxy-ca.key
  57. when:
  58. - not proxy_ca_key.stat.exists
  59. - not proxy_ca_crt.stat.exists
  60. # oc_adm_ca_server_cert:
  61. # cert: /etc/origin/master/front-proxy-ca.crt
  62. # key: /etc/origin/master/front-proxy-ca.key
  63. - name: Check for first master api-client config
  64. stat:
  65. path: /etc/origin/master/aggregator-front-proxy.kubeconfig
  66. register: first_front_proxy_kubeconfig
  67. delegate_to: "{{ first_master }}"
  68. - name: Create first master api-client config for Aggregator
  69. command: >
  70. oc adm create-api-client-config
  71. --certificate-authority=/etc/origin/master/front-proxy-ca.crt
  72. --signer-cert=/etc/origin/master/front-proxy-ca.crt
  73. --signer-key=/etc/origin/master/front-proxy-ca.key
  74. --user aggregator-front-proxy
  75. --client-dir=/etc/origin/master
  76. --signer-serial=/etc/origin/master/ca.serial.txt
  77. delegate_to: "{{ first_master }}"
  78. when:
  79. - not first_front_proxy_kubeconfig.stat.exists
  80. - name: Check for api-client config
  81. stat:
  82. path: /etc/origin/master/aggregator-front-proxy.kubeconfig
  83. register: front_proxy_kubeconfig
  84. - name: Copy api-client config from first master
  85. fetch:
  86. src: "/etc/origin/master/{{ item }}"
  87. dest: "{{ certtemp.stdout }}/{{ item }}"
  88. delegate_to: "{{ first_master }}"
  89. with_items:
  90. - aggregator-front-proxy.crt
  91. - aggregator-front-proxy.key
  92. - aggregator-front-proxy.kubeconfig
  93. when:
  94. - not front_proxy_kubeconfig.stat.exists
  95. - name: Copy api-client config to host
  96. copy:
  97. src: "{{ certtemp.stdout }}/{{ item }}"
  98. dest: "/etc/origin/master/{{ item }}"
  99. with_items:
  100. - aggregator-front-proxy.crt
  101. - aggregator-front-proxy.key
  102. - aggregator-front-proxy.kubeconfig
  103. when:
  104. - not front_proxy_kubeconfig.stat.exists
  105. - name: Update master config
  106. yedit:
  107. state: present
  108. src: /etc/origin/master/master-config.yaml
  109. edits:
  110. - key: aggregatorConfig.proxyClientInfo.certFile
  111. value: aggregator-front-proxy.crt
  112. - key: aggregatorConfig.proxyClientInfo.keyFile
  113. value: aggregator-front-proxy.key
  114. - key: authConfig.requestHeader.clientCA
  115. value: front-proxy-ca.crt
  116. - key: authConfig.requestHeader.clientCommonNames
  117. value: [aggregator-front-proxy]
  118. - key: authConfig.requestHeader.usernameHeaders
  119. value: [X-Remote-User]
  120. - key: authConfig.requestHeader.groupHeaders
  121. value: [X-Remote-Group]
  122. - key: authConfig.requestHeader.extraHeaderPrefixes
  123. value: [X-Remote-Extra-]
  124. register: yedit_output
  125. #restart master serially here
  126. - name: restart master
  127. systemd: name={{ openshift.common.service_type }}-master state=restarted
  128. when:
  129. - yedit_output.changed
  130. - openshift.master.ha is not defined or not openshift.master.ha | bool
  131. - name: restart master api
  132. systemd: name={{ openshift.common.service_type }}-master-api state=restarted
  133. when:
  134. - yedit_output.changed
  135. - openshift.master.ha is defined and openshift.master.ha | bool
  136. - openshift.master.cluster_method == 'native'
  137. - name: restart master controllers
  138. systemd: name={{ openshift.common.service_type }}-master-controllers state=restarted
  139. when:
  140. - yedit_output.changed
  141. - openshift.master.ha is defined and openshift.master.ha | bool
  142. - openshift.master.cluster_method == 'native'
  143. - name: Verify API Server
  144. # Using curl here since the uri module requires python-httplib2 and
  145. # wait_for port doesn't provide health information.
  146. command: >
  147. curl --silent --tlsv1.2
  148. {% if openshift.common.version_gte_3_2_or_1_2 | bool %}
  149. --cacert {{ openshift.common.config_base }}/master/ca-bundle.crt
  150. {% else %}
  151. --cacert {{ openshift.common.config_base }}/master/ca.crt
  152. {% endif %}
  153. {{ openshift.master.api_url }}/healthz/ready
  154. args:
  155. # Disables the following warning:
  156. # Consider using get_url or uri module rather than running curl
  157. warn: no
  158. register: api_available_output
  159. until: api_available_output.stdout == 'ok'
  160. retries: 120
  161. delay: 1
  162. changed_when: false
  163. when:
  164. - yedit_output.changed
  165. - name: Delete temp directory
  166. file:
  167. name: "{{ certtemp.stdout }}"
  168. state: absent
  169. changed_when: False