diff options
Diffstat (limited to 'roles/etcd')
| -rw-r--r-- | roles/etcd/defaults/main.yaml | 7 | ||||
| -rw-r--r-- | roles/etcd/files/etcdctl.sh | 11 | ||||
| -rw-r--r-- | roles/etcd/meta/main.yml | 1 | ||||
| -rw-r--r-- | roles/etcd/tasks/etcdctl.yml | 12 | ||||
| -rw-r--r-- | roles/etcd/tasks/main.yml | 116 | ||||
| -rw-r--r-- | roles/etcd/templates/etcd.docker.service | 12 | 
6 files changed, 63 insertions, 96 deletions
diff --git a/roles/etcd/defaults/main.yaml b/roles/etcd/defaults/main.yaml index 29153f4df..c0d1d5946 100644 --- a/roles/etcd/defaults/main.yaml +++ b/roles/etcd/defaults/main.yaml @@ -1,10 +1,4 @@  --- -etcd_service: "{{ 'etcd' if openshift.common.is_etcd_system_container | bool or not etcd_is_containerized | bool else 'etcd_container' }}" -etcd_client_port: 2379 -etcd_peer_port: 2380 -etcd_url_scheme: http -etcd_peer_url_scheme: http -  etcd_initial_cluster_state: new  etcd_initial_cluster_token: etcd-cluster-1 @@ -13,5 +7,4 @@ 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_data_dir: /var/lib/etcd/  etcd_systemd_dir: "/etc/systemd/system/{{ etcd_service }}.service.d" diff --git a/roles/etcd/files/etcdctl.sh b/roles/etcd/files/etcdctl.sh deleted file mode 100644 index 0e324a8a9..000000000 --- a/roles/etcd/files/etcdctl.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# Sets up handy aliases for etcd, need etcdctl2 and etcdctl3 because -# command flags are different between the two. Should work on stand -# alone etcd hosts and master + etcd hosts too because we use the peer keys. -etcdctl2() { - /usr/bin/etcdctl --cert-file /etc/etcd/peer.crt --key-file /etc/etcd/peer.key --ca-file /etc/etcd/ca.crt -C https://`hostname`:2379 ${@} -} - -etcdctl3() { - ETCDCTL_API=3 /usr/bin/etcdctl --cert /etc/etcd/peer.crt --key /etc/etcd/peer.key --cacert /etc/etcd/ca.crt --endpoints https://`hostname`:2379 ${@} -} diff --git a/roles/etcd/meta/main.yml b/roles/etcd/meta/main.yml index e0c70a181..689c07a84 100644 --- a/roles/etcd/meta/main.yml +++ b/roles/etcd/meta/main.yml @@ -24,3 +24,4 @@ dependencies:    - service: etcd peering      port: "{{ etcd_peer_port }}/tcp"  - role: etcd_server_certificates +- role: etcd_common diff --git a/roles/etcd/tasks/etcdctl.yml b/roles/etcd/tasks/etcdctl.yml deleted file mode 100644 index 649ad23c1..000000000 --- a/roles/etcd/tasks/etcdctl.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -- name: Install etcd for etcdctl -  package: name=etcd{{ '-' + etcd_version if etcd_version is defined else '' }} state=present -  when: not openshift.common.is_atomic | bool - -- name: Configure etcd profile.d alises -  copy: -    src: etcdctl.sh -    dest: /etc/profile.d/etcdctl.sh -    mode: 0755 -    owner: root -    group: root diff --git a/roles/etcd/tasks/main.yml b/roles/etcd/tasks/main.yml index c09da3b61..fa2f44609 100644 --- a/roles/etcd/tasks/main.yml +++ b/roles/etcd/tasks/main.yml @@ -10,51 +10,45 @@    package: name=etcd{{ '-' + etcd_version if etcd_version is defined else '' }} state=present    when: not etcd_is_containerized | bool -- name: Pull etcd container -  command: docker pull {{ openshift.etcd.etcd_image }} -  register: pull_result -  changed_when: "'Downloaded newer image' in pull_result.stdout" +- block: +  - name: Pull etcd container +    command: docker pull {{ openshift.etcd.etcd_image }} +    register: pull_result +    changed_when: "'Downloaded newer image' in pull_result.stdout" + +  - name: Install etcd container service file +    template: +      dest: "/etc/systemd/system/etcd_container.service" +      src: etcd.docker.service    when:    - etcd_is_containerized | bool    - not openshift.common.is_etcd_system_container | bool -- name: Install etcd container service file -  template: -    dest: "/etc/systemd/system/etcd_container.service" -    src: etcd.docker.service -  when: -  - etcd_is_containerized | bool -  - not openshift.common.is_etcd_system_container | bool - -  # Start secondary etcd instance for third party integrations  # TODO: Determine an alternative to using thirdparty variable - -- name: Create configuration directory -  file: -    path: "{{ etcd_conf_dir }}" -    state: directory -    mode: 0700 -  when: etcd_is_thirdparty | bool +- block: +  - name: Create configuration directory +    file: +      path: "{{ etcd_conf_dir }}" +      state: directory +      mode: 0700    # TODO: retest with symlink to confirm it does or does not function -- name: Copy service file for etcd instance -  copy: -    src: /usr/lib/systemd/system/etcd.service -    dest: "/etc/systemd/system/{{ etcd_service }}.service" -    remote_src: True -  when: etcd_is_thirdparty | bool - -- name: Create third party etcd service.d directory exists -  file: -    path: "{{ etcd_systemd_dir }}" -    state: directory -  when: etcd_is_thirdparty | bool - -- name: Configure third part etcd service unit file -  template: -    dest: "{{ etcd_systemd_dir }}/custom.conf" -    src: custom.conf.j2 +  - name: Copy service file for etcd instance +    copy: +      src: /usr/lib/systemd/system/etcd.service +      dest: "/etc/systemd/system/{{ etcd_service }}.service" +      remote_src: True + +  - name: Create third party etcd service.d directory exists +    file: +      path: "{{ etcd_systemd_dir }}" +      state: directory + +  - name: Configure third part etcd service unit file +    template: +      dest: "{{ etcd_systemd_dir }}/custom.conf" +      src: custom.conf.j2    when: etcd_is_thirdparty    # TODO: this task may not be needed with Validate permissions @@ -80,28 +74,28 @@    command: systemctl daemon-reload    when: etcd_is_thirdparty | bool -- name: Disable system etcd when containerized -  systemd: -    name: etcd -    state: stopped -    enabled: no -    masked: yes -    daemon_reload: yes -  when: -  - etcd_is_containerized | bool -  - not openshift.common.is_etcd_system_container | bool -  register: task_result -  failed_when: "task_result|failed and 'could not' not in task_result.msg|lower" - -- name: Install etcd container service file -  template: -    dest: "/etc/systemd/system/etcd_container.service" -    src: etcd.docker.service -  when: etcd_is_containerized | bool and not openshift.common.is_etcd_system_container | bool - -- name: Install Etcd system container -  include: system_container.yml -  when: etcd_is_containerized | bool and openshift.common.is_etcd_system_container | bool +- block: +  - name: Disable system etcd when containerized +    systemd: +      name: etcd +      state: stopped +      enabled: no +      masked: yes +      daemon_reload: yes +    when: not openshift.common.is_etcd_system_container | bool +    register: task_result +    failed_when: task_result|failed and 'could not' not in task_result.msg|lower + +  - name: Install etcd container service file +    template: +      dest: "/etc/systemd/system/etcd_container.service" +      src: etcd.docker.service +    when: not openshift.common.is_etcd_system_container | bool + +  - name: Install Etcd system container +    include: system_container.yml +    when: openshift.common.is_etcd_system_container | bool +  when: etcd_is_containerized | bool  - name: Validate permissions on the config dir    file: @@ -126,7 +120,9 @@      enabled: yes    register: start_result -- include: etcdctl.yml +- include_role: +    name: etcd_common +    tasks_from: etcdctl.yml    when: openshift_etcd_etcdctl_profile | default(true) | bool  - name: Set fact etcd_service_status_changed diff --git a/roles/etcd/templates/etcd.docker.service b/roles/etcd/templates/etcd.docker.service index ae059b549..adeca7a91 100644 --- a/roles/etcd/templates/etcd.docker.service +++ b/roles/etcd/templates/etcd.docker.service @@ -1,17 +1,17 @@  [Unit]  Description=The Etcd Server container -After=docker.service -Requires=docker.service -PartOf=docker.service +After={{ openshift.docker.service_name }}.service +Requires={{ openshift.docker.service_name }}.service +PartOf={{ openshift.docker.service_name }}.service  [Service] -EnvironmentFile=/etc/etcd/etcd.conf +EnvironmentFile={{ etcd_conf_file }}  ExecStartPre=-/usr/bin/docker rm -f {{ etcd_service }} -ExecStart=/usr/bin/docker run --name {{ etcd_service }} --rm -v /var/lib/etcd:/var/lib/etcd:z -v /etc/etcd:/etc/etcd:ro --env-file=/etc/etcd/etcd.conf --net=host --entrypoint=/usr/bin/etcd {{ openshift.etcd.etcd_image }} +ExecStart=/usr/bin/docker run --name {{ etcd_service }} --rm -v {{ etcd_data_dir }}:{{ etcd_data_dir }}:z -v {{ etcd_conf_dir }}:{{ etcd_conf_dir }}:ro --env-file={{ etcd_conf_file }} --net=host --entrypoint=/usr/bin/etcd {{ openshift.etcd.etcd_image }}  ExecStop=/usr/bin/docker stop {{ etcd_service }}  SyslogIdentifier=etcd_container  Restart=always  RestartSec=5s  [Install] -WantedBy=docker.service +WantedBy={{ openshift.docker.service_name }}.service  | 
