main.yml 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. ---
  2. # TODO: add validation for openshift_master_identity_providers
  3. # TODO: add ability to configure certificates given either a local file to
  4. # point to or certificate contents, set in default cert locations.
  5. - assert:
  6. that:
  7. - openshift_master_oauth_grant_method in openshift_master_valid_grant_methods
  8. when: openshift_master_oauth_grant_method is defined
  9. - name: Displaying openshift_master_ha
  10. debug: var=openshift_master_ha
  11. - name: openshift_master_cluster_password
  12. debug: var=openshift_master_cluster_password
  13. - name: openshift.master.cluster_defer_ha
  14. debug: var=openshift.master.cluster_defer_ha
  15. - fail:
  16. msg: "openshift_master_cluster_password must be set for multi-master installations"
  17. when: openshift_master_ha | bool and not openshift.master.cluster_defer_ha | bool and openshift_master_cluster_password is not defined
  18. - name: Set master facts
  19. openshift_facts:
  20. role: master
  21. local_facts:
  22. cluster_hostname: "{{ openshift_master_cluster_hostname | default(None) }}"
  23. cluster_public_hostname: "{{ openshift_master_cluster_public_hostname | default(None) }}"
  24. cluster_defer_ha: "{{ openshift_master_cluster_defer_ha | default(None) }}"
  25. debug_level: "{{ openshift_master_debug_level | default(openshift.common.debug_level) }}"
  26. api_port: "{{ openshift_master_api_port | default(None) }}"
  27. api_url: "{{ openshift_master_api_url | default(None) }}"
  28. api_use_ssl: "{{ openshift_master_api_use_ssl | default(None) }}"
  29. public_api_url: "{{ openshift_master_public_api_url | default('https://' ~ openshift.common.public_ip ~ ':8443') }}"
  30. console_path: "{{ openshift_master_console_path | default(None) }}"
  31. console_port: "{{ openshift_master_console_port | default(None) }}"
  32. console_url: "{{ openshift_master_console_url | default(None) }}"
  33. console_use_ssl: "{{ openshift_master_console_use_ssl | default(None) }}"
  34. public_console_url: "{{ openshift_master_public_console_url | default(None) }}"
  35. etcd_hosts: "{{ openshift_master_etcd_hosts | default(None)}}"
  36. etcd_port: "{{ openshift_master_etcd_port | default(None) }}"
  37. etcd_use_ssl: "{{ openshift_master_etcd_use_ssl | default(None) }}"
  38. etcd_urls: "{{ openshift_master_etcd_urls | default(None) }}"
  39. embedded_etcd: "{{ openshift_master_embedded_etcd | default(None) }}"
  40. embedded_kube: "{{ openshift_master_embedded_kube | default(None) }}"
  41. embedded_dns: "{{ openshift_master_embedded_dns | default(None) }}"
  42. dns_port: "{{ openshift_master_dns_port | default(None) }}"
  43. bind_addr: "{{ openshift_master_bind_addr | default(None) }}"
  44. portal_net: "{{ openshift_master_portal_net | default(None) }}"
  45. session_max_seconds: "{{ openshift_master_session_max_seconds | default(None) }}"
  46. session_name: "{{ openshift_master_session_name | default(None) }}"
  47. session_secrets_file: "{{ openshift_master_session_secrets_file | default(None) }}"
  48. access_token_max_seconds: "{{ openshift_master_access_token_max_seconds | default(None) }}"
  49. auth_token_max_seconds: "{{ openshift_master_auth_token_max_seconds | default(None) }}"
  50. identity_providers: "{{ openshift_master_identity_providers | default(None) }}"
  51. registry_url: "{{ oreg_url | default(None) }}"
  52. oauth_grant_method: "{{ openshift_master_oauth_grant_method | default(None) }}"
  53. sdn_cluster_network_cidr: "{{ osm_cluster_network_cidr | default(None) }}"
  54. sdn_host_subnet_length: "{{ osm_host_subnet_length | default(None) }}"
  55. default_subdomain: "{{ osm_default_subdomain | default(None) }}"
  56. custom_cors_origins: "{{ osm_custom_cors_origins | default(None) }}"
  57. default_node_selector: "{{ osm_default_node_selector | default(None) }}"
  58. api_server_args: "{{ osm_api_server_args | default(None) }}"
  59. controller_args: "{{ osm_controller_args | default(None) }}"
  60. - name: Install Master package
  61. yum: pkg={{ openshift.common.service_type }}-master{{ openshift_version }} state=present
  62. register: install_result
  63. - name: Check for RPM generated config marker file /etc/origin/.config_managed
  64. stat: path=/etc/origin/.rpmgenerated
  65. register: rpmgenerated_config
  66. - name: Remove RPM generated config files
  67. file:
  68. path: "{{ item }}"
  69. state: absent
  70. when: openshift.common.service_type in ['atomic-enterprise','openshift-enterprise'] and rpmgenerated_config.stat.exists == true
  71. with_items:
  72. - "{{ openshift.common.config_base }}/master"
  73. - "{{ openshift.common.config_base }}/node"
  74. - "{{ openshift.common.config_base }}/.rpmgenerated"
  75. # TODO: These values need to be configurable
  76. - name: Set dns facts
  77. openshift_facts:
  78. role: dns
  79. local_facts:
  80. ip: "{{ openshift_master_cluster_vip | default(openshift.common.ip, true) | default(None) }}"
  81. domain: cluster.local
  82. when: openshift.master.embedded_dns
  83. - name: Create config parent directory if it doesn't exist
  84. file:
  85. path: "{{ openshift_master_config_dir }}"
  86. state: directory
  87. - name: Create the policy file if it does not already exist
  88. command: >
  89. {{ openshift.common.admin_binary }} create-bootstrap-policy-file
  90. --filename={{ openshift_master_policy }}
  91. args:
  92. creates: "{{ openshift_master_policy }}"
  93. notify:
  94. - restart master
  95. - name: Create the scheduler config
  96. template:
  97. dest: "{{ openshift_master_scheduler_conf }}"
  98. src: scheduler.json.j2
  99. backup: true
  100. notify:
  101. - restart master
  102. - name: Install httpd-tools if needed
  103. yum: pkg=httpd-tools state=present
  104. when: item.kind == 'HTPasswdPasswordIdentityProvider'
  105. with_items: openshift.master.identity_providers
  106. - name: Ensure htpasswd directory exists
  107. file:
  108. path: "{{ item.filename | dirname }}"
  109. state: directory
  110. when: item.kind == 'HTPasswdPasswordIdentityProvider'
  111. with_items: openshift.master.identity_providers
  112. - name: Create the htpasswd file if needed
  113. copy:
  114. dest: "{{ item.filename }}"
  115. content: ""
  116. mode: 0600
  117. force: no
  118. when: item.kind == 'HTPasswdPasswordIdentityProvider'
  119. with_items: openshift.master.identity_providers
  120. # TODO: add the validate parameter when there is a validation command to run
  121. - name: Create master config
  122. template:
  123. dest: "{{ openshift_master_config_file }}"
  124. src: master.yaml.v1.j2
  125. backup: true
  126. notify:
  127. - restart master
  128. - name: Configure master settings
  129. lineinfile:
  130. dest: /etc/sysconfig/{{ openshift.common.service_type }}-master
  131. regexp: "{{ item.regex }}"
  132. line: "{{ item.line }}"
  133. with_items:
  134. - regex: '^OPTIONS='
  135. line: "OPTIONS=--loglevel={{ openshift.master.debug_level }}"
  136. - regex: '^CONFIG_FILE='
  137. line: "CONFIG_FILE={{ openshift_master_config_file }}"
  138. notify:
  139. - restart master
  140. - name: Start and enable master
  141. service: name={{ openshift.common.service_type }}-master enabled=yes state=started
  142. when: not openshift_master_ha | bool
  143. register: start_result
  144. - name: pause to prevent service restart from interfering with bootstrapping
  145. pause: seconds=30
  146. when: start_result | changed
  147. - name: Install cluster packages
  148. yum: pkg=pcs state=present
  149. when: openshift_master_ha | bool and not openshift.master.cluster_defer_ha | bool
  150. register: install_result
  151. - name: Start and enable cluster service
  152. service: name=pcsd enabled=yes state=started
  153. when: openshift_master_ha | bool and not openshift.master.cluster_defer_ha | bool
  154. - name: Set the cluster user password
  155. shell: echo {{ openshift_master_cluster_password | quote }} | passwd --stdin hacluster
  156. when: install_result | changed
  157. - name: Create the client config dir(s)
  158. file:
  159. path: "~{{ item }}/.kube"
  160. state: directory
  161. mode: 0700
  162. owner: "{{ item }}"
  163. group: "{{ item }}"
  164. with_items:
  165. - root
  166. - "{{ ansible_ssh_user }}"
  167. # TODO: Update this file if the contents of the source file are not present in
  168. # the dest file, will need to make sure to ignore things that could be added
  169. - name: Copy the admin client config(s)
  170. command: cp {{ openshift_master_config_dir }}/admin.kubeconfig ~{{ item }}/.kube/config
  171. args:
  172. creates: ~{{ item }}/.kube/config
  173. with_items:
  174. - root
  175. - "{{ ansible_ssh_user }}"
  176. - name: Update the permissions on the admin client config(s)
  177. file:
  178. path: "~{{ item }}/.kube/config"
  179. state: file
  180. mode: 0700
  181. owner: "{{ item }}"
  182. group: "{{ item }}"
  183. with_items:
  184. - root
  185. - "{{ ansible_ssh_user }}"