diff options
Diffstat (limited to 'playbooks/common/openshift-node')
| -rw-r--r-- | playbooks/common/openshift-node/config.yml | 78 | 
1 files changed, 78 insertions, 0 deletions
| diff --git a/playbooks/common/openshift-node/config.yml b/playbooks/common/openshift-node/config.yml index a14ca8e11..8da9e231f 100644 --- a/playbooks/common/openshift-node/config.yml +++ b/playbooks/common/openshift-node/config.yml @@ -38,6 +38,22 @@        node_subdir: node-{{ openshift.common.hostname }}        config_dir: "{{ openshift.common.config_base }}/generated-configs/node-{{ openshift.common.hostname }}"        node_cert_dir: "{{ openshift.common.config_base }}/node" +  - name: Check status of flannel external etcd certificates +    stat: +      path: "{{ openshift.common.config_base }}/node/{{ item }}" +    with_items: +    - node.etcd-client.crt +    - node.etcd-ca.crt +    register: g_external_etcd_flannel_cert_stat_result +    when: groups.oo_etcd_to_config is defined and groups.oo_etcd_to_config and (openshift.common.use_flannel | bool) +  - set_fact: +      etcd_client_flannel_certs_missing: "{{ g_external_etcd_flannel_cert_stat_result.results +                                             | map(attribute='stat.exists') +                                             | list | intersect([false])}}" +      etcd_cert_subdir: openshift-node-{{ openshift.common.hostname }} +      etcd_cert_config_dir: "{{ openshift.common.config_base }}/node" +      etcd_cert_prefix: node.etcd- +    when: groups.oo_etcd_to_config is defined and groups.oo_etcd_to_config and (openshift.common.use_flannel | bool)  - name: Create temp directory for syncing certs    hosts: localhost @@ -50,6 +66,64 @@      register: mktemp      changed_when: False +- name: Configure flannel etcd certificates +  hosts: oo_first_etcd +  vars: +    etcd_generated_certs_dir: /etc/etcd/generated_certs +    sync_tmpdir: "{{ hostvars.localhost.mktemp.stdout }}" +  pre_tasks: +  - set_fact: +      etcd_needing_client_certs: "{{ hostvars +                                   | oo_select_keys(groups['oo_nodes_to_config']) +                                   | oo_filter_list(filter_attr='etcd_client_flannel_certs_missing') | default([]) }}" +    when: etcd_client_flannel_certs_missing is defined and etcd_client_flannel_certs_missing +  roles: +  - role: etcd_certificates +  post_tasks: +  - name: Create a tarball of the etcd flannel certs +    command: > +      tar -czvf {{ etcd_generated_certs_dir }}/{{ item.etcd_cert_subdir }}.tgz +        -C {{ etcd_generated_certs_dir }}/{{ item.etcd_cert_subdir }} . +    args: +      creates: "{{ etcd_generated_certs_dir }}/{{ item.etcd_cert_subdir }}.tgz" +    with_items: etcd_needing_client_certs +    when: etcd_client_flannel_certs_missing is defined and etcd_client_flannel_certs_missing +  - name: Retrieve the etcd cert tarballs +    fetch: +      src: "{{ etcd_generated_certs_dir }}/{{ item.etcd_cert_subdir }}.tgz" +      dest: "{{ sync_tmpdir }}/" +      flat: yes +      fail_on_missing: yes +      validate_checksum: yes +    with_items: etcd_needing_client_certs +    when: etcd_client_flannel_certs_missing is defined and etcd_client_flannel_certs_missing + +- name: Copy the external etcd flannel certs to the nodes +  hosts: oo_nodes_to_config +  vars: +    sync_tmpdir: "{{ hostvars.localhost.mktemp.stdout }}" +  tasks: +  - name: Ensure certificate directory exists +    file: +      path: "{{ openshift.common.config_base }}/node" +      state: directory +    when: etcd_client_flannel_certs_missing is defined and etcd_client_flannel_certs_missing +  - name: Unarchive the tarball on the master +    unarchive: +      src: "{{ sync_tmpdir }}/{{ etcd_cert_subdir }}.tgz" +      dest: "{{ etcd_cert_config_dir }}" +    when: etcd_client_flannel_certs_missing is defined and etcd_client_flannel_certs_missing +  - file: +      path: "{{ etcd_cert_config_dir }}/{{ item }}" +      owner: root +      group: root +      mode: 0600 +    with_items: +    - node.etcd-client.crt +    - node.etcd-client.key +    - node.etcd-ca.crt +    when: etcd_client_flannel_certs_missing is defined and etcd_client_flannel_certs_missing +  - name: Create node certificates    hosts: oo_first_master    vars: @@ -84,6 +158,8 @@    vars:      sync_tmpdir: "{{ hostvars.localhost.mktemp.stdout }}"      openshift_node_master_api_url: "{{ hostvars[groups.oo_first_master.0].openshift.master.api_url }}" +    etcd_urls: "{{ hostvars[groups.oo_first_master.0].openshift.master.etcd_urls }}" +    embedded_etcd: "{{ hostvars[groups.oo_first_master.0].openshift.master.embedded_etcd }}"    pre_tasks:    - name: Ensure certificate directory exists      file: @@ -100,6 +176,8 @@      when: certs_missing    roles:    - openshift_node +  - role: flannel +    when: openshift.common.use_flannel | bool    - role: nickhammond.logrotate    - role: fluentd_node      when: openshift.common.use_fluentd | bool | 
