diff options
Diffstat (limited to 'roles')
| -rw-r--r-- | roles/etcd/defaults/main.yaml | 11 | ||||
| -rw-r--r-- | roles/etcd/meta/main.yml | 1 | ||||
| -rw-r--r-- | roles/etcd/tasks/main.yml | 39 | ||||
| -rw-r--r-- | roles/etcd/templates/etcd.conf.j2 | 12 | ||||
| -rw-r--r-- | roles/etcd_ca/tasks/main.yml | 2 | ||||
| -rw-r--r-- | roles/etcd_certificates/tasks/client.yml | 6 | ||||
| -rw-r--r-- | roles/etcd_certificates/tasks/server.yml | 12 | ||||
| -rw-r--r-- | roles/etcd_common/defaults/main.yml | 8 | ||||
| -rw-r--r-- | roles/etcd_common/tasks/main.yml | 13 | ||||
| -rw-r--r-- | roles/etcd_common/templates/host_int_map.j2 | 13 | ||||
| -rw-r--r-- | roles/openshift_etcd/meta/main.yml | 2 | ||||
| -rw-r--r-- | roles/openshift_etcd_certificates/meta/main.yml | 16 | ||||
| -rw-r--r-- | roles/openshift_etcd_facts/meta/main.yml | 15 | ||||
| -rw-r--r-- | roles/openshift_etcd_facts/vars/main.yml | 5 | 
14 files changed, 83 insertions, 72 deletions
| diff --git a/roles/etcd/defaults/main.yaml b/roles/etcd/defaults/main.yaml index e6b10cab7..a2212bacd 100644 --- a/roles/etcd/defaults/main.yaml +++ b/roles/etcd/defaults/main.yaml @@ -1,6 +1,5 @@  --- -etcd_service: "{{ 'etcd' if not openshift.common.is_containerized | bool else 'etcd_container' }}" -etcd_interface: "{{ ansible_default_ipv4.interface }}" +etcd_service: "{{ 'etcd' if not etcd_is_containerized | bool else 'etcd_container' }}"  etcd_client_port: 2379  etcd_peer_port: 2380  etcd_url_scheme: http @@ -9,10 +8,10 @@ etcd_peer_url_scheme: http  etcd_initial_cluster_state: new  etcd_initial_cluster_token: etcd-cluster-1 -etcd_initial_advertise_peer_urls: "{{ etcd_peer_url_scheme }}://{{ hostvars[inventory_hostname]['ansible_' + etcd_interface]['ipv4']['address'] }}:{{ etcd_peer_port }}" -etcd_listen_peer_urls: "{{ etcd_peer_url_scheme }}://{{ hostvars[inventory_hostname]['ansible_' + etcd_interface]['ipv4']['address'] }}:{{ etcd_peer_port }}" -etcd_advertise_client_urls: "{{ etcd_url_scheme }}://{{ hostvars[inventory_hostname]['ansible_' + etcd_interface]['ipv4']['address'] }}:{{ etcd_client_port }}" -etcd_listen_client_urls: "{{ etcd_url_scheme }}://{{ hostvars[inventory_hostname]['ansible_' + etcd_interface]['ipv4']['address'] }}:{{ etcd_client_port }}" +etcd_initial_advertise_peer_urls: "{{ etcd_peer_url_scheme }}://{{ etcd_ip }}:{{ etcd_peer_port }}" +etcd_listen_peer_urls: "{{ etcd_peer_url_scheme }}://{{ etcd_ip }}:{{ etcd_peer_port }}" +etcd_advertise_client_urls: "{{ etcd_url_scheme }}://{{ etcd_ip }}:{{ etcd_client_port }}" +etcd_listen_client_urls: "{{ etcd_url_scheme }}://{{ etcd_ip }}:{{ etcd_client_port }}"  etcd_data_dir: /var/lib/etcd/ diff --git a/roles/etcd/meta/main.yml b/roles/etcd/meta/main.yml index 36906b347..a71b36237 100644 --- a/roles/etcd/meta/main.yml +++ b/roles/etcd/meta/main.yml @@ -16,6 +16,5 @@ galaxy_info:    - cloud    - system  dependencies: -- { role: openshift_docker }  - { role: os_firewall }  - { role: etcd_common } diff --git a/roles/etcd/tasks/main.yml b/roles/etcd/tasks/main.yml index afec6b30b..a798dc973 100644 --- a/roles/etcd/tasks/main.yml +++ b/roles/etcd/tasks/main.yml @@ -1,36 +1,35 @@  --- -- fail: -    msg: Interface {{ etcd_interface }} not found -  when: "'ansible_' ~ etcd_interface not in hostvars[inventory_hostname]" - -- fail: -    msg: IPv4 address not found for {{ etcd_interface }} -  when: "'ipv4' not in hostvars[inventory_hostname]['ansible_' ~ etcd_interface] or 'address' not in hostvars[inventory_hostname]['ansible_' ~ etcd_interface].ipv4" +- name: Set hostname and ip facts +  set_fact: +    # Store etcd_hostname and etcd_ip such that they will be available +    # in hostvars. Defaults for these variables are set in etcd_common. +    etcd_hostname: "{{ etcd_hostname }}" +    etcd_ip: "{{ etcd_ip }}"  - name: Install etcd    action: "{{ ansible_pkg_mgr }} name=etcd state=present" -  when: not openshift.common.is_containerized | bool +  when: not etcd_is_containerized | bool  - name: Pull etcd container    command: docker pull {{ openshift.etcd.etcd_image }} -  when: openshift.common.is_containerized | bool +  when: etcd_is_containerized | bool  - name: Install etcd container service file    template:      dest: "/etc/systemd/system/etcd_container.service"      src: etcd.docker.service    register: install_etcd_result -  when: openshift.common.is_containerized | bool +  when: etcd_is_containerized | bool  - name: Ensure etcd datadir exists -  when: openshift.common.is_containerized | bool +  when: etcd_is_containerized | bool    file:      path: "{{ etcd_data_dir }}"      state: directory      mode: 0700  - name: Disable system etcd when containerized -  when: openshift.common.is_containerized | bool +  when: etcd_is_containerized | bool    service:      name: etcd      state: stopped @@ -42,27 +41,27 @@    changed_when: false  - name: Mask system etcd when containerized -  when: openshift.common.is_containerized | bool and 'LoadState=not-found' not in etcd_show.stdout +  when: etcd_is_containerized | bool and 'LoadState=not-found' not in etcd_show.stdout    command: systemctl mask etcd  - name: Reload systemd units    command: systemctl daemon-reload -  when: openshift.common.is_containerized | bool and ( install_etcd_result | changed ) +  when: etcd_is_containerized | bool and ( install_etcd_result | changed )  - name: Validate permissions on the config dir    file:      path: "{{ etcd_conf_dir }}"      state: directory -    owner: "{{ 'etcd' if not openshift.common.is_containerized | bool else omit }}" -    group: "{{ 'etcd' if not openshift.common.is_containerized | bool else omit }}" +    owner: "{{ 'etcd' if not etcd_is_containerized | bool else omit }}" +    group: "{{ 'etcd' if not etcd_is_containerized | bool else omit }}"      mode: 0700  - name: Validate permissions on certificate files    file:      path: "{{ item }}"      mode: 0600 -    owner: "{{ 'etcd' if not openshift.common.is_containerized | bool else omit }}" -    group: "{{ 'etcd' if not openshift.common.is_containerized | bool else omit }}" +    owner: "{{ 'etcd' if not etcd_is_containerized | bool else omit }}" +    group: "{{ 'etcd' if not etcd_is_containerized | bool else omit }}"    when: etcd_url_scheme == 'https'    with_items:    - "{{ etcd_ca_file }}" @@ -73,8 +72,8 @@    file:      path: "{{ item }}"      mode: 0600 -    owner: "{{ 'etcd' if not openshift.common.is_containerized | bool else omit }}" -    group: "{{ 'etcd' if not openshift.common.is_containerized | bool else omit }}" +    owner: "{{ 'etcd' if not etcd_is_containerized | bool else omit }}" +    group: "{{ 'etcd' if not etcd_is_containerized | bool else omit }}"    when: etcd_peer_url_scheme == 'https'    with_items:    - "{{ etcd_peer_ca_file }}" diff --git a/roles/etcd/templates/etcd.conf.j2 b/roles/etcd/templates/etcd.conf.j2 index 28816fd87..cd048ec60 100644 --- a/roles/etcd/templates/etcd.conf.j2 +++ b/roles/etcd/templates/etcd.conf.j2 @@ -1,15 +1,15 @@  {% macro initial_cluster() -%} -{% for host in groups[etcd_peers_group] -%} +{% for host in etcd_peers -%}  {% if loop.last -%} -{{ host }}={{ etcd_peer_url_scheme }}://{{ etcd_host_int_map[host].interface.ipv4.address }}:{{ etcd_peer_port }} +{{ hostvars[host].etcd_hostname }}={{ etcd_peer_url_scheme }}://{{ hostvars[host].etcd_ip }}:{{ etcd_peer_port }}  {%- else -%} -{{ host }}={{ etcd_peer_url_scheme }}://{{ etcd_host_int_map[host].interface.ipv4.address }}:{{ etcd_peer_port }}, +{{ hostvars[host].etcd_hostname }}={{ etcd_peer_url_scheme }}://{{ hostvars[host].etcd_ip }}:{{ etcd_peer_port }},  {%- endif -%}  {% endfor -%}  {% endmacro -%} -{% if groups[etcd_peers_group] and groups[etcd_peers_group] | length > 1 %} -ETCD_NAME={{ inventory_hostname }} +{% if etcd_peers | default([]) | length > 1 %} +ETCD_NAME={{ etcd_hostname }}  ETCD_LISTEN_PEER_URLS={{ etcd_listen_peer_urls }}  {% else %}  ETCD_NAME=default @@ -23,7 +23,7 @@ ETCD_LISTEN_CLIENT_URLS={{ etcd_listen_client_urls }}  #ETCD_MAX_WALS=5  #ETCD_CORS= -{% if groups[etcd_peers_group] and groups[etcd_peers_group] | length > 1 %} +{% if etcd_peers | default([]) | length > 1 %}  #[cluster]  ETCD_INITIAL_ADVERTISE_PEER_URLS={{ etcd_initial_advertise_peer_urls }}  ETCD_INITIAL_CLUSTER={{ initial_cluster() }} diff --git a/roles/etcd_ca/tasks/main.yml b/roles/etcd_ca/tasks/main.yml index cf7bc00a3..e1bb9baed 100644 --- a/roles/etcd_ca/tasks/main.yml +++ b/roles/etcd_ca/tasks/main.yml @@ -1,7 +1,7 @@  ---  - name: Install openssl    action: "{{ ansible_pkg_mgr }} name=openssl state=present" -  when: not openshift.common.is_atomic | bool +  when: not etcd_is_atomic | bool  - file:      path: "{{ item }}" diff --git a/roles/etcd_certificates/tasks/client.yml b/roles/etcd_certificates/tasks/client.yml index 6aa4883e0..7bf95809f 100644 --- a/roles/etcd_certificates/tasks/client.yml +++ b/roles/etcd_certificates/tasks/client.yml @@ -12,13 +12,13 @@      -config {{ etcd_openssl_conf }}      -out {{ item.etcd_cert_prefix }}client.csr      -reqexts {{ etcd_req_ext }} -batch -nodes -    -subj /CN={{ item.openshift.common.hostname }} +    -subj /CN={{ item.etcd_hostname }}    args:      chdir: "{{ etcd_generated_certs_dir }}/{{ item.etcd_cert_subdir }}"      creates: "{{ etcd_generated_certs_dir ~ '/' ~  item.etcd_cert_subdir ~ '/'                   ~ item.etcd_cert_prefix ~ 'client.csr' }}"    environment: -    SAN: "IP:{{ item.openshift.common.ip }}" +    SAN: "IP:{{ item.etcd_ip }}"    with_items: etcd_needing_client_certs  - name: Sign and create the client crt @@ -32,7 +32,7 @@      creates: "{{ etcd_generated_certs_dir ~ '/' ~  item.etcd_cert_subdir ~ '/'                   ~ item.etcd_cert_prefix ~ 'client.crt' }}"    environment: -    SAN: "IP:{{ item.openshift.common.ip }}" +    SAN: "IP:{{ item.etcd_ip }}"    with_items: etcd_needing_client_certs  - file: diff --git a/roles/etcd_certificates/tasks/server.yml b/roles/etcd_certificates/tasks/server.yml index 3499dcbef..2589c5192 100644 --- a/roles/etcd_certificates/tasks/server.yml +++ b/roles/etcd_certificates/tasks/server.yml @@ -12,13 +12,13 @@      -config {{ etcd_openssl_conf }}      -out {{ item.etcd_cert_prefix }}server.csr      -reqexts {{ etcd_req_ext }} -batch -nodes -    -subj /CN={{ item.openshift.common.hostname }} +    -subj /CN={{ item.etcd_hostname }}    args:      chdir: "{{ etcd_generated_certs_dir }}/{{ item.etcd_cert_subdir }}"      creates: "{{ etcd_generated_certs_dir ~ '/' ~  item.etcd_cert_subdir ~ '/'                   ~ item.etcd_cert_prefix ~ 'server.csr' }}"    environment: -    SAN: "IP:{{ etcd_host_int_map[item.inventory_hostname].interface.ipv4.address }}" +    SAN: "IP:{{ item.etcd_ip }}"    with_items: etcd_needing_server_certs  - name: Sign and create the server crt @@ -32,7 +32,7 @@      creates: "{{ etcd_generated_certs_dir ~ '/' ~  item.etcd_cert_subdir ~ '/'                   ~ item.etcd_cert_prefix ~ 'server.crt' }}"    environment: -    SAN: "IP:{{ etcd_host_int_map[item.inventory_hostname].interface.ipv4.address }}" +    SAN: "IP:{{ item.etcd_ip }}"    with_items: etcd_needing_server_certs  - name: Create the peer csr @@ -41,13 +41,13 @@      -config {{ etcd_openssl_conf }}      -out {{ item.etcd_cert_prefix }}peer.csr      -reqexts {{ etcd_req_ext }} -batch -nodes -    -subj /CN={{ item.openshift.common.hostname }} +    -subj /CN={{ item.etcd_hostname }}    args:      chdir: "{{ etcd_generated_certs_dir }}/{{ item.etcd_cert_subdir }}"      creates: "{{ etcd_generated_certs_dir ~ '/' ~  item.etcd_cert_subdir ~ '/'                   ~ item.etcd_cert_prefix ~ 'peer.csr' }}"    environment: -    SAN: "IP:{{ etcd_host_int_map[item.inventory_hostname].interface.ipv4.address }}" +    SAN: "IP:{{ item.etcd_ip }}"    with_items: etcd_needing_server_certs  - name: Sign and create the peer crt @@ -61,7 +61,7 @@      creates: "{{ etcd_generated_certs_dir ~ '/' ~  item.etcd_cert_subdir ~ '/'                   ~ item.etcd_cert_prefix ~ 'peer.crt' }}"    environment: -    SAN: "IP:{{ etcd_host_int_map[item.inventory_hostname].interface.ipv4.address }}" +    SAN: "IP:{{ item.etcd_ip }}"    with_items: etcd_needing_server_certs  - file: diff --git a/roles/etcd_common/defaults/main.yml b/roles/etcd_common/defaults/main.yml index 3af509448..1ff1d6ef8 100644 --- a/roles/etcd_common/defaults/main.yml +++ b/roles/etcd_common/defaults/main.yml @@ -1,6 +1,4 @@  --- -etcd_peers_group: oo_etcd_to_config -  # etcd server vars  etcd_conf_dir: /etc/etcd  etcd_ca_file: "{{ etcd_conf_dir }}/ca.crt" @@ -28,3 +26,9 @@ etcd_ca_db: "{{ etcd_ca_dir }}/index.txt"  etcd_ca_serial: "{{ etcd_ca_dir }}/serial"  etcd_ca_crl_number: "{{ etcd_ca_dir }}/crlnumber"  etcd_ca_default_days: 365 + +# etcd server & certificate vars +etcd_hostname: "{{ inventory_hostname }}" +etcd_ip: "{{ ansible_default_ipv4.address }}" +etcd_is_atomic: False +etcd_is_containerized: False diff --git a/roles/etcd_common/tasks/main.yml b/roles/etcd_common/tasks/main.yml deleted file mode 100644 index be75fdab2..000000000 --- a/roles/etcd_common/tasks/main.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- -- set_fact: -    etcd_host_int_map: "{{ lookup('template', '../templates/host_int_map.j2') | from_yaml }}" - -- fail: -    msg: "Interface {{ item.value.etcd_interface }} not found on host {{ item.key }}" -  when: "'etcd_interface' in item.value and 'interface' not in item.value" -  with_dict: etcd_host_int_map | default({}) - -- fail: -    msg: IPv4 address not found for {{ item.value.interface.device }} on host {{ item.key }} -  when: "'ipv4' not in item.value.interface or 'address' not in item.value.interface.ipv4" -  with_dict: etcd_host_int_map | default({}) diff --git a/roles/etcd_common/templates/host_int_map.j2 b/roles/etcd_common/templates/host_int_map.j2 deleted file mode 100644 index 9c9c76413..000000000 --- a/roles/etcd_common/templates/host_int_map.j2 +++ /dev/null @@ -1,13 +0,0 @@ ---- -{% for host in groups[etcd_peers_group] %} -{% set entry=hostvars[host] %} -{{ entry.inventory_hostname }}: -{% if 'etcd_interface' in entry %} -  etcd_interface: {{ entry.etcd_interface }} -{% if entry.etcd_interface in entry.ansible_interfaces %} -  interface: {{ entry['ansible_' ~ entry.etcd_interface] | to_json }} -{% endif %} -{% else %} -  interface: {{ entry['ansible_' ~ entry.ansible_default_ipv4.interface] | to_json }} -{% endif %} -{% endfor %} diff --git a/roles/openshift_etcd/meta/main.yml b/roles/openshift_etcd/meta/main.yml index 5e5f96d44..7cc548f69 100644 --- a/roles/openshift_etcd/meta/main.yml +++ b/roles/openshift_etcd/meta/main.yml @@ -12,7 +12,7 @@ galaxy_info:    categories:    - cloud  dependencies: -- role: openshift_facts +- role: openshift_etcd_facts  - role: openshift_docker    when: openshift.common.is_containerized | bool  - role: etcd diff --git a/roles/openshift_etcd_certificates/meta/main.yml b/roles/openshift_etcd_certificates/meta/main.yml new file mode 100644 index 000000000..2725fdb51 --- /dev/null +++ b/roles/openshift_etcd_certificates/meta/main.yml @@ -0,0 +1,16 @@ +--- +galaxy_info: +  author: Andrew Butcher +  description: OpenShift etcd Certificates +  company: Red Hat, Inc. +  license: Apache License, Version 2.0 +  min_ansible_version: 1.9 +  platforms: +  - name: EL +    versions: +    - 7 +  categories: +  - cloud +dependencies: +- role: openshift_etcd_facts +- role: etcd_certificates diff --git a/roles/openshift_etcd_facts/meta/main.yml b/roles/openshift_etcd_facts/meta/main.yml new file mode 100644 index 000000000..18d289ea1 --- /dev/null +++ b/roles/openshift_etcd_facts/meta/main.yml @@ -0,0 +1,15 @@ +--- +galaxy_info: +  author: Andrew Butcher +  description: OpenShift etcd Facts +  company: Red Hat, Inc. +  license: Apache License, Version 2.0 +  min_ansible_version: 1.9 +  platforms: +  - name: EL +    versions: +    - 7 +  categories: +  - cloud +dependencies: +- role: openshift_common diff --git a/roles/openshift_etcd_facts/vars/main.yml b/roles/openshift_etcd_facts/vars/main.yml new file mode 100644 index 000000000..6f3894565 --- /dev/null +++ b/roles/openshift_etcd_facts/vars/main.yml @@ -0,0 +1,5 @@ +--- +etcd_is_containerized: "{{ openshift.common.is_containerized }}" +etcd_is_atomic: "{{ openshift.common.is_atomic }}" +etcd_hostname: "{{ openshift.common.hostname }}" +etcd_ip: "{{ openshift.common.ip }}" | 
