config.yml 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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. - name: Create local temp directory for syncing certs
  54. local_action: command /usr/bin/mktemp -d /tmp/openshift-ansible-XXXXXXX
  55. register: mktemp
  56. - name: Sync master certs to localhost
  57. synchronize:
  58. mode: pull
  59. checksum: yes
  60. src: /var/lib/openshift/openshift.local.certificates
  61. dest: "{{ mktemp.stdout }}"
  62. # TODO: sync generated certs between masters
  63. #
  64. - name: Configure instances
  65. hosts: oo_nodes_to_config
  66. vars_files:
  67. - vars.yml
  68. vars:
  69. openshift_master_group: tag_env-host-type-{{ oo_env }}-openshift-master
  70. openshift_master_ips: "{{ hostvars
  71. | oo_select_keys(groups[openshift_master_group])
  72. | oo_collect(attribute='openshift_master_ip') }}"
  73. openshift_master_hostnames: "{{ hostvars
  74. | oo_select_keys(groups[openshift_master_group])
  75. | oo_collect(attribute='openshift_master_hostname') }}"
  76. openshift_master_public_ips: "{{ hostvars
  77. | oo_select_keys(groups[openshift_master_group])
  78. | oo_collect(attribute='openshift_master_public_ip') }}"
  79. openshift_master_public_hostnames: "{{ hostvars
  80. | oo_select_keys(groups[openshift_master_group])
  81. | oo_collect(attribute='openshift_master_public_hostname') }}"
  82. cert_parent_rel_path: openshift.local.certificates
  83. cert_rel_path: "{{ cert_parent_rel_path }}/node-{{ openshift_node_name }}"
  84. cert_base_path: /var/lib/openshift
  85. cert_parent_path: "{{ cert_base_path }}/{{ cert_parent_rel_path }}"
  86. cert_path: "{{ cert_base_path }}/{{ cert_rel_path }}"
  87. pre_tasks:
  88. - name: Ensure certificate directories exists
  89. file:
  90. path: "{{ item }}"
  91. state: directory
  92. with_items:
  93. - "{{ cert_path }}"
  94. - "{{ cert_parent_path }}/ca"
  95. # TODO: only sync to a node if it's certs have been updated
  96. # TODO: notify restart openshift-node and/or restart openshift-sdn-node,
  97. # possibly test service started time against certificate/config file
  98. # timestamps in openshift-node or openshift-sdn-node to trigger notify
  99. # TODO: also copy ca cert: /var/lib/openshift/openshift.local.certificates/ca/cert.crt
  100. - name: Sync certs to nodes
  101. synchronize:
  102. checksum: yes
  103. src: "{{ item.src }}"
  104. dest: "{{ item.dest }}"
  105. owner: no
  106. group: no
  107. with_items:
  108. - src: "{{ hostvars[groups[openshift_master_group][0]].mktemp.stdout }}/{{ cert_rel_path }}"
  109. dest: "{{ cert_parent_path }}"
  110. - src: "{{ hostvars[groups[openshift_master_group][0]].mktemp.stdout }}/{{ cert_parent_rel_path }}/ca/cert.crt"
  111. dest: "{{ cert_parent_path }}/ca/cert.crt"
  112. - local_action: file name={{ hostvars[groups[openshift_master_group][0]].mktemp.stdout }} state=absent
  113. run_once: true
  114. roles:
  115. - openshift_node
  116. - os_env_extras
  117. - os_env_extras_node