config.yml 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. - name: node/config.yml, populate oo_nodes_to_config host group if needed
  2. hosts: localhost
  3. gather_facts: no
  4. tasks:
  5. - name: Evaluate oo_host_group_exp
  6. add_host: "name={{ item }} groups=oo_nodes_to_config"
  7. with_items: "{{ oo_host_group_exp | default('') }}"
  8. when: oo_host_group_exp is defined
  9. - name: Find masters for env
  10. add_host: "name={{ item }} groups=oo_masters_for_node_config"
  11. with_items: groups['tag_env-host-type-' + oo_env + '-openshift-master']
  12. - name: Gather facts for masters in {{ oo_env }}
  13. hosts: "tag_env-host-type-{{ oo_env }}-openshift-master"
  14. tasks:
  15. - set_fact:
  16. openshift_master_ip: "{{ openshift_ip }}"
  17. openshift_master_api_url: "{{ openshift_api_url }}"
  18. openshift_master_webui_url: "{{ openshift_webui_url }}"
  19. openshift_master_hostname: "{{ openshift_hostname }}"
  20. openshift_master_public_ip: "{{ openshift_public_ip }}"
  21. openshift_master_api_public_url: "{{ openshift_api_public_url }}"
  22. openshift_master_webui_public_url: "{{ openshift_webui_public_url }}"
  23. openshift_master_public_hostnames: "{{ openshift_public_hostname }}"
  24. - name: Gather facts for hosts to configure
  25. hosts: tag_env-host-type-{{ oo_env }}-openshift-node
  26. tasks:
  27. - set_fact:
  28. openshift_node_hostname: "{{ openshift_hostname }}"
  29. openshift_node_name: "{{ openshift_hostname }}"
  30. openshift_node_cpu: "{{ openshift_node_cpu if openshift_node_cpu else ansible_processor_cores }}"
  31. openshift_node_memory: "{{ openshift_node_memory if openshift_node_memory else (ansible_memtotal_mb|int * 1024 * 1024 * 0.75)|int }}"
  32. openshift_node_pod_cidr: "{{ openshift_node_pod_cidr if openshift_node_pod_cidr else None }}"
  33. openshift_node_host_ip: "{{ openshift_ip }}"
  34. openshift_node_labels: "{{ openshift_node_labels if openshift_node_labels else {} }}"
  35. openshift_node_annotations: "{{ openshift_node_annotations if openshift_node_annotations else {} }}"
  36. - name: Register nodes
  37. hosts: tag_env-host-type-{{ oo_env }}-openshift-master[0]
  38. vars:
  39. openshift_node_group: tag_env-host-type-{{ oo_env }}-openshift-node
  40. openshift_nodes: "{{ hostvars
  41. | oo_select_keys(groups[openshift_node_group]) }}"
  42. openshift_master_group: tag_env-host-type-{{ oo_env }}-openshift-master
  43. openshift_master_urls: "{{ hostvars
  44. | oo_select_keys(groups[openshift_master_group])
  45. | oo_collect(attribute='openshift_master_api_url') }}"
  46. openshift_master_public_urls: "{{ hostvars
  47. | oo_select_keys(groups[openshift_master_group])
  48. | oo_collect(attribute='openshift_master_api_public_url') }}"
  49. pre_tasks:
  50. roles:
  51. - openshift_register_nodes
  52. tasks:
  53. tasks:
  54. - name: Create local temp directory for syncing certs
  55. local_action: command /usr/bin/mktemp -d /tmp/openshift-ansible-XXXXXXX
  56. register: mktemp
  57. - name: Sync master certs to localhost
  58. synchronize:
  59. mode: pull
  60. checksum: yes
  61. src: /var/lib/openshift/openshift.local.certificates
  62. dest: "{{ mktemp.stdout }}"
  63. # TODO: sync generated certs between masters
  64. #
  65. - name: Configure instances
  66. hosts: oo_nodes_to_config
  67. vars_files:
  68. - vars.yml
  69. vars:
  70. openshift_master_group: tag_env-host-type-{{ oo_env }}-openshift-master
  71. openshift_master_ips: "{{ hostvars
  72. | oo_select_keys(groups[openshift_master_group])
  73. | oo_collect(attribute='openshift_master_ip') }}"
  74. openshift_master_hostnames: "{{ hostvars
  75. | oo_select_keys(groups[openshift_master_group])
  76. | oo_collect(attribute='openshift_master_hostname') }}"
  77. openshift_master_public_ips: "{{ hostvars
  78. | oo_select_keys(groups[openshift_master_group])
  79. | oo_collect(attribute='openshift_master_public_ip') }}"
  80. openshift_master_public_hostnames: "{{ hostvars
  81. | oo_select_keys(groups[openshift_master_group])
  82. | oo_collect(attribute='openshift_master_public_hostname') }}"
  83. cert_parent_rel_path: openshift.local.certificates
  84. cert_rel_path: "{{ cert_parent_rel_path }}/node-{{ openshift_node_name }}"
  85. cert_base_path: /var/lib/openshift
  86. cert_parent_path: "{{ cert_base_path }}/{{ cert_parent_rel_path }}"
  87. cert_path: "{{ cert_base_path }}/{{ cert_rel_path }}"
  88. pre_tasks:
  89. - name: Ensure certificate directories exists
  90. file:
  91. path: "{{ item }}"
  92. state: directory
  93. with_items:
  94. - "{{ cert_path }}"
  95. - "{{ cert_parent_path }}/ca"
  96. # TODO: only sync to a node if it's certs have been updated
  97. # TODO: notify restart openshift-node and/or restart openshift-sdn-node,
  98. # possibly test service started time against certificate/config file
  99. # timestamps in openshift-node or openshift-sdn-node to trigger notify
  100. # TODO: also copy ca cert: /var/lib/openshift/openshift.local.certificates/ca/cert.crt
  101. - name: Sync certs to nodes
  102. synchronize:
  103. checksum: yes
  104. src: "{{ item.src }}"
  105. dest: "{{ item.dest }}"
  106. owner: no
  107. group: no
  108. with_items:
  109. - src: "{{ hostvars[groups[openshift_master_group][0]].mktemp.stdout }}/{{ cert_rel_path }}"
  110. dest: "{{ cert_parent_path }}"
  111. - src: "{{ hostvars[groups[openshift_master_group][0]].mktemp.stdout }}/{{ cert_parent_rel_path }}/ca/cert.crt"
  112. dest: "{{ cert_parent_path }}/ca/cert.crt"
  113. - local_action: file name={{ hostvars[groups[openshift_master_group][0]].mktemp.stdout }} state=absent
  114. run_once: true
  115. roles:
  116. - openshift_node
  117. - os_env_extras
  118. - os_env_extras_node