config.yml 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. ---
  2. - name: Set etcd facts needed for generating certs
  3. hosts: oo_etcd_to_config
  4. any_errors_fatal: true
  5. roles:
  6. - openshift_facts
  7. tasks:
  8. - openshift_facts:
  9. role: etcd
  10. local_facts:
  11. etcd_image: "{{ osm_etcd_image | default(None) }}"
  12. - name: Check status of etcd certificates
  13. stat:
  14. path: "{{ item }}"
  15. with_items:
  16. - /etc/etcd/server.crt
  17. - /etc/etcd/peer.crt
  18. - /etc/etcd/ca.crt
  19. register: g_etcd_server_cert_stat_result
  20. - set_fact:
  21. etcd_server_certs_missing: "{{ g_etcd_server_cert_stat_result.results | oo_collect(attribute='stat.exists')
  22. | list | intersect([false])}}"
  23. etcd_cert_subdir: etcd-{{ openshift.common.hostname }}
  24. etcd_cert_config_dir: /etc/etcd
  25. etcd_cert_prefix:
  26. etcd_hostname: "{{ openshift.common.hostname }}"
  27. etcd_ip: "{{ openshift.common.ip }}"
  28. - name: Create temp directory for syncing certs
  29. hosts: localhost
  30. connection: local
  31. become: no
  32. gather_facts: no
  33. tasks:
  34. - name: Create local temp directory for syncing certs
  35. local_action: command mktemp -d /tmp/openshift-ansible-XXXXXXX
  36. register: g_etcd_mktemp
  37. changed_when: False
  38. - name: Configure etcd certificates
  39. hosts: oo_first_etcd
  40. vars:
  41. etcd_generated_certs_dir: /etc/etcd/generated_certs
  42. etcd_needing_server_certs: "{{ hostvars
  43. | oo_select_keys(groups['oo_etcd_to_config'])
  44. | oo_filter_list(filter_attr='etcd_server_certs_missing') }}"
  45. sync_tmpdir: "{{ hostvars.localhost.g_etcd_mktemp.stdout }}"
  46. roles:
  47. - openshift_etcd_certificates
  48. post_tasks:
  49. - name: Create a tarball of the etcd certs
  50. command: >
  51. tar -czvf {{ etcd_generated_certs_dir }}/{{ item.etcd_cert_subdir }}.tgz
  52. -C {{ etcd_generated_certs_dir }}/{{ item.etcd_cert_subdir }} .
  53. args:
  54. creates: "{{ etcd_generated_certs_dir }}/{{ item.etcd_cert_subdir }}.tgz"
  55. with_items: "{{ etcd_needing_server_certs | default([]) }}"
  56. - name: Retrieve the etcd cert tarballs
  57. fetch:
  58. src: "{{ etcd_generated_certs_dir }}/{{ item.etcd_cert_subdir }}.tgz"
  59. dest: "{{ sync_tmpdir }}/"
  60. flat: yes
  61. fail_on_missing: yes
  62. validate_checksum: yes
  63. with_items: "{{ etcd_needing_server_certs | default([]) }}"
  64. # Configure a first etcd host to avoid conflicts in choosing a leader
  65. # if other members come online too quickly.
  66. - name: Configure first etcd host
  67. hosts: oo_first_etcd
  68. vars:
  69. sync_tmpdir: "{{ hostvars.localhost.g_etcd_mktemp.stdout }}"
  70. etcd_url_scheme: https
  71. etcd_peer_url_scheme: https
  72. etcd_peers: "{{ groups.oo_etcd_to_config | default([], true) }}"
  73. pre_tasks:
  74. - name: Ensure certificate directory exists
  75. file:
  76. path: "{{ etcd_cert_config_dir }}"
  77. state: directory
  78. - name: Unarchive the tarball on the etcd host
  79. unarchive:
  80. src: "{{ sync_tmpdir }}/{{ etcd_cert_subdir }}.tgz"
  81. dest: "{{ etcd_cert_config_dir }}"
  82. when: etcd_server_certs_missing
  83. roles:
  84. - openshift_etcd
  85. - nickhammond.logrotate
  86. # Configure the remaining etcd hosts, skipping the first one we dealt with above.
  87. - name: Configure remaining etcd hosts
  88. hosts: oo_etcd_to_config:!oo_first_etcd
  89. vars:
  90. sync_tmpdir: "{{ hostvars.localhost.g_etcd_mktemp.stdout }}"
  91. etcd_url_scheme: https
  92. etcd_peer_url_scheme: https
  93. etcd_peers: "{{ groups.oo_etcd_to_config | default([], true) }}"
  94. pre_tasks:
  95. - name: Ensure certificate directory exists
  96. file:
  97. path: "{{ etcd_cert_config_dir }}"
  98. state: directory
  99. - name: Unarchive the tarball on the etcd host
  100. unarchive:
  101. src: "{{ sync_tmpdir }}/{{ etcd_cert_subdir }}.tgz"
  102. dest: "{{ etcd_cert_config_dir }}"
  103. when: etcd_server_certs_missing
  104. roles:
  105. - openshift_etcd
  106. - role: nickhammond.logrotate
  107. - name: Delete temporary directory on localhost
  108. hosts: localhost
  109. connection: local
  110. become: no
  111. gather_facts: no
  112. tasks:
  113. - file: name={{ g_etcd_mktemp.stdout }} state=absent
  114. changed_when: False