main.yml 7.3 KB

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