diff options
Diffstat (limited to 'roles/etcd')
| -rw-r--r-- | roles/etcd/defaults/main.yaml | 12 | ||||
| -rw-r--r-- | roles/etcd/meta/main.yml | 7 | ||||
| -rw-r--r-- | roles/etcd/tasks/firewall.yml | 40 | ||||
| -rw-r--r-- | roles/etcd/tasks/main.yml | 17 | ||||
| -rw-r--r-- | roles/etcd/tasks/system_container.yml | 20 | ||||
| -rw-r--r-- | roles/etcd/templates/etcd.conf.j2 | 44 | 
6 files changed, 109 insertions, 31 deletions
| diff --git a/roles/etcd/defaults/main.yaml b/roles/etcd/defaults/main.yaml index c0d1d5946..3cc2bbb18 100644 --- a/roles/etcd/defaults/main.yaml +++ b/roles/etcd/defaults/main.yaml @@ -1,4 +1,7 @@  --- +r_etcd_firewall_enabled: "{{ os_firewall_enabled | default(True) }}" +r_etcd_use_firewalld: "{{ os_firewall_use_firewalld | default(Falsel) }}" +  etcd_initial_cluster_state: new  etcd_initial_cluster_token: etcd-cluster-1 @@ -7,4 +10,13 @@ etcd_listen_peer_urls: "{{ etcd_peer_url_scheme }}://{{ etcd_ip }}:{{ etcd_peer_  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_client_port: 2379 +etcd_peer_port: 2380 +  etcd_systemd_dir: "/etc/systemd/system/{{ etcd_service }}.service.d" +r_etcd_os_firewall_deny: [] +r_etcd_os_firewall_allow: +- service: etcd +  port: "{{etcd_client_port}}/tcp" +- service: etcd peering +  port: "{{ etcd_peer_port }}/tcp" diff --git a/roles/etcd/meta/main.yml b/roles/etcd/meta/main.yml index 689c07a84..9a955c822 100644 --- a/roles/etcd/meta/main.yml +++ b/roles/etcd/meta/main.yml @@ -17,11 +17,6 @@ galaxy_info:    - system  dependencies:  - role: lib_openshift -- role: os_firewall -  os_firewall_allow: -  - service: etcd -    port: "{{etcd_client_port}}/tcp" -  - service: etcd peering -    port: "{{ etcd_peer_port }}/tcp" +- role: lib_os_firewall  - role: etcd_server_certificates  - role: etcd_common diff --git a/roles/etcd/tasks/firewall.yml b/roles/etcd/tasks/firewall.yml new file mode 100644 index 000000000..4d0f6290a --- /dev/null +++ b/roles/etcd/tasks/firewall.yml @@ -0,0 +1,40 @@ +--- +- when: r_etcd_firewall_enabled | bool and not r_etcd_use_firewalld | bool +  block: +  - name: Add iptables allow rules +    os_firewall_manage_iptables: +      name: "{{ item.service }}" +      action: add +      protocol: "{{ item.port.split('/')[1] }}" +      port: "{{ item.port.split('/')[0] }}" +    when: item.cond | default(True) +    with_items: "{{ r_etcd_os_firewall_allow }}" + +  - name: Remove iptables rules +    os_firewall_manage_iptables: +      name: "{{ item.service }}" +      action: remove +      protocol: "{{ item.port.split('/')[1] }}" +      port: "{{ item.port.split('/')[0] }}" +    when: item.cond | default(True) +    with_items: "{{ r_etcd_os_firewall_deny }}" + +- when: r_etcd_firewall_enabled | bool and r_etcd_use_firewalld | bool +  block: +  - name: Add firewalld allow rules +    firewalld: +      port: "{{ item.port }}" +      permanent: true +      immediate: true +      state: enabled +    when: item.cond | default(True) +    with_items: "{{ r_etcd_os_firewall_allow }}" + +  - name: Remove firewalld allow rules +    firewalld: +      port: "{{ item.port }}" +      permanent: true +      immediate: true +      state: disabled +    when: item.cond | default(True) +    with_items: "{{ r_etcd_os_firewall_deny }}" diff --git a/roles/etcd/tasks/main.yml b/roles/etcd/tasks/main.yml index 586aebb11..78e543ef1 100644 --- a/roles/etcd/tasks/main.yml +++ b/roles/etcd/tasks/main.yml @@ -6,10 +6,21 @@      etcd_hostname: "{{ etcd_hostname }}"      etcd_ip: "{{ etcd_ip }}" +- name: setup firewall +  include: firewall.yml +  static: yes +  - name: Install etcd    package: name=etcd{{ '-' + etcd_version if etcd_version is defined else '' }} state=present    when: not etcd_is_containerized | bool +- include_role: +    name: etcd_common +  vars: +    r_etcd_common_action: drop_etcdctl +  when: +  - openshift_etcd_etcdctl_profile | default(true) | bool +  - block:    - name: Pull etcd container      command: docker pull {{ openshift.etcd.etcd_image }} @@ -120,12 +131,6 @@      enabled: yes    register: start_result -- include_role: -    name: etcd_common -  vars: -    r_etcd_common_action: drop_etcdctl -  when: openshift_etcd_etcdctl_profile | default(true) | bool -  - name: Set fact etcd_service_status_changed    set_fact:      etcd_service_status_changed: "{{ start_result | changed }}" diff --git a/roles/etcd/tasks/system_container.yml b/roles/etcd/tasks/system_container.yml index f1d948d16..e735bf50a 100644 --- a/roles/etcd/tasks/system_container.yml +++ b/roles/etcd/tasks/system_container.yml @@ -1,4 +1,7 @@  --- +- set_fact: +    l_etcd_src_data_dir: "{{ '/var/lib/origin/openshift.local.etcd' if r_etcd_common_embedded_etcd | bool else '/var/lib/etcd/' }}" +  - name: Pull etcd system container    command: atomic pull --storage=ostree {{ openshift.etcd.etcd_image }}    register: pull_result @@ -24,26 +27,33 @@    systemd:      name: etcd      state: stopped -    enabled: yes +    enabled: no      masked: no      daemon_reload: yes    register: task_result    failed_when: task_result|failed and 'could not' not in task_result.msg|lower -  when: "'etcd' in etcd_result.stdout" +  when: "'etcd' not in etcd_result.stdout"  - name: Disable etcd_container    systemd:      name: etcd_container      state: stopped      enabled: no -    masked: yes      daemon_reload: yes    register: task_result    failed_when: task_result|failed and 'could not' not in task_result.msg|lower +- name: Remove etcd_container.service +  file: +    path: /etc/systemd/system/etcd_container.service +    state: absent + +- name: Systemd reload configuration +  systemd: name=etcd_container daemon_reload=yes +  - name: Check for previous etcd data store    stat: -    path: "{{ etcd_data_dir }}/member/" +    path: "{{ l_etcd_src_data_dir }}/member/"    register: src_datastore  - name: Check for etcd system container data store @@ -59,7 +69,7 @@  - name: Copy etcd data store    command: > -    cp -a {{ etcd_data_dir }}/member +    cp -a {{ l_etcd_src_data_dir }}/member      {{ r_etcd_common_system_container_host_dir }}/etcd.etcd/member    when:      - src_datastore.stat.exists diff --git a/roles/etcd/templates/etcd.conf.j2 b/roles/etcd/templates/etcd.conf.j2 index 1b5598f46..2c2803aee 100644 --- a/roles/etcd/templates/etcd.conf.j2 +++ b/roles/etcd/templates/etcd.conf.j2 @@ -8,14 +8,11 @@  {% endfor -%}  {% endmacro -%} -{% if (etcd_peers | default([]) | length > 1) or (etcd_is_thirdparty) %}  ETCD_NAME={{ etcd_hostname }}  ETCD_LISTEN_PEER_URLS={{ etcd_listen_peer_urls }} -{% else %} -ETCD_NAME=default -{% endif %}  ETCD_DATA_DIR={{ etcd_data_dir }} -#ETCD_SNAPSHOT_COUNTER=10000 +#ETCD_WAL_DIR="" +#ETCD_SNAPSHOT_COUNT=10000  ETCD_HEARTBEAT_INTERVAL=500  ETCD_ELECTION_TIMEOUT=2500  ETCD_LISTEN_CLIENT_URLS={{ etcd_listen_client_urls }} @@ -23,20 +20,20 @@ ETCD_LISTEN_CLIENT_URLS={{ etcd_listen_client_urls }}  #ETCD_MAX_WALS=5  #ETCD_CORS= -{% if etcd_is_thirdparty %} +  #[cluster]  ETCD_INITIAL_ADVERTISE_PEER_URLS={{ etcd_initial_advertise_peer_urls }} - +{% if etcd_is_thirdparty %}  # TODO: This needs to be altered to support the correct etcd instances  ETCD_INITIAL_CLUSTER={{ etcd_hostname}}={{ etcd_initial_advertise_peer_urls }}  ETCD_INITIAL_CLUSTER_STATE={{ etcd_initial_cluster_state }}  ETCD_INITIAL_CLUSTER_TOKEN=thirdparty-etcd-cluster-1 -{% endif %} - -{% if etcd_peers | default([]) | length > 1 %} -#[cluster] -ETCD_INITIAL_ADVERTISE_PEER_URLS={{ etcd_initial_advertise_peer_urls }} +{% else %} +{% if initial_etcd_cluster is defined and initial_etcd_cluster %} +ETCD_INITIAL_CLUSTER={{ initial_etcd_cluster }} +{% else %}  ETCD_INITIAL_CLUSTER={{ initial_cluster() }} +{% endif %}  ETCD_INITIAL_CLUSTER_STATE={{ etcd_initial_cluster_state }}  ETCD_INITIAL_CLUSTER_TOKEN={{ etcd_initial_cluster_token }}  #ETCD_DISCOVERY= @@ -45,24 +42,43 @@ ETCD_INITIAL_CLUSTER_TOKEN={{ etcd_initial_cluster_token }}  #ETCD_DISCOVERY_PROXY=  {% endif %}  ETCD_ADVERTISE_CLIENT_URLS={{ etcd_advertise_client_urls }} +#ETCD_STRICT_RECONFIG_CHECK="false" +#ETCD_AUTO_COMPACTION_RETENTION="0" +#ETCD_ENABLE_V2="true"  #[proxy]  #ETCD_PROXY=off +#ETCD_PROXY_FAILURE_WAIT="5000" +#ETCD_PROXY_REFRESH_INTERVAL="30000" +#ETCD_PROXY_DIAL_TIMEOUT="1000" +#ETCD_PROXY_WRITE_TIMEOUT="5000" +#ETCD_PROXY_READ_TIMEOUT="0"  #[security]  {% if etcd_url_scheme == 'https' -%} -ETCD_CA_FILE={{ etcd_ca_file }} +ETCD_TRUSTED_CA_FILE={{ etcd_ca_file }} +ETCD_CLIENT_CERT_AUTH="true"  ETCD_CERT_FILE={{ etcd_cert_file }}  ETCD_KEY_FILE={{ etcd_key_file }}  {% endif -%} +#ETCD_AUTO_TLS="false"  {% if etcd_peer_url_scheme == 'https' -%} -ETCD_PEER_CA_FILE={{ etcd_peer_ca_file }} +ETCD_PEER_TRUSTED_CA_FILE={{ etcd_peer_ca_file }} +ETCD_PEER_CLIENT_CERT_AUTH="true"  ETCD_PEER_CERT_FILE={{ etcd_peer_cert_file }}  ETCD_PEER_KEY_FILE={{ etcd_peer_key_file }}  {% endif -%} +#ETCD_PEER_AUTO_TLS="false"  #[logging]  ETCD_DEBUG="{{ etcd_debug | default(false) | bool | string }}"  {% if etcd_log_package_levels is defined %}  ETCD_LOG_PACKAGE_LEVELS="{{ etcd_log_package_levels }}"  {% endif %} + +#[profiling] +#ETCD_ENABLE_PPROF="false" +#ETCD_METRICS="basic" +# +#[auth] +#ETCD_AUTH_TOKEN="simple" | 
