diff options
| -rw-r--r-- | playbooks/common/openshift-cluster/upgrades/etcd/backup.yml | 12 | ||||
| -rw-r--r-- | playbooks/common/openshift-cluster/upgrades/etcd/main.yml | 3 | ||||
| -rw-r--r-- | roles/etcd/tasks/main.yml | 3 | ||||
| -rw-r--r-- | roles/etcd_common/defaults/main.yml | 10 | ||||
| -rw-r--r-- | roles/etcd_common/tasks/backup.yml (renamed from roles/etcd_upgrade/tasks/backup.yml) | 33 | ||||
| -rw-r--r-- | roles/etcd_common/tasks/drop_etcdctl.yml (renamed from roles/etcd_common/tasks/etcdctl.yml) | 0 | ||||
| -rw-r--r-- | roles/etcd_common/tasks/main.yml | 9 | ||||
| -rw-r--r-- | roles/etcd_upgrade/defaults/main.yml | 6 | ||||
| -rw-r--r-- | roles/etcd_upgrade/tasks/main.yml | 4 | 
9 files changed, 48 insertions, 32 deletions
diff --git a/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml b/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml index b7fd2c0c5..616ba04f8 100644 --- a/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml +++ b/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml @@ -3,12 +3,12 @@    hosts: oo_etcd_hosts_to_backup    roles:    - role: openshift_facts -  - role: etcd_upgrade -    r_etcd_upgrade_action: backup -    r_etcd_backup_tag: etcd_backup_tag +  - role: etcd_common +    r_etcd_common_action: backup +    r_etcd_common_backup_tag: etcd_backup_tag      r_etcd_common_etcd_runtime: "{{ openshift.common.etcd_runtime }}" -    r_etcd_upgrade_embedded_etcd: "{{ groups.oo_etcd_to_config | default([]) | length == 0 }}" -    r_etcd_backup_sufix_name: "{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}" +    r_etcd_common_embedded_etcd: "{{ groups.oo_etcd_to_config | default([]) | length == 0 }}" +    r_etcd_common_backup_sufix_name: "{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}"  - name: Gate on etcd backup    hosts: localhost @@ -18,7 +18,7 @@    - set_fact:        etcd_backup_completed: "{{ hostvars                                   | oo_select_keys(groups.oo_etcd_hosts_to_backup) -                                 | oo_collect('inventory_hostname', {'r_etcd_upgrade_backup_complete': true}) }}" +                                 | oo_collect('inventory_hostname', {'r_etcd_common_backup_complete': true}) }}"    - set_fact:        etcd_backup_failed: "{{ groups.oo_etcd_hosts_to_backup | difference(etcd_backup_completed) }}"    - fail: diff --git a/playbooks/common/openshift-cluster/upgrades/etcd/main.yml b/playbooks/common/openshift-cluster/upgrades/etcd/main.yml index 3e01883ae..64abc54e7 100644 --- a/playbooks/common/openshift-cluster/upgrades/etcd/main.yml +++ b/playbooks/common/openshift-cluster/upgrades/etcd/main.yml @@ -16,7 +16,8 @@    tasks:    - include_role:        name: etcd_common -      tasks_from: etcdctl.yml +    vars: +      r_etcd_common_action: drop_etcdctl  - name: Perform etcd upgrade    include: ./upgrade.yml diff --git a/roles/etcd/tasks/main.yml b/roles/etcd/tasks/main.yml index fa2f44609..586aebb11 100644 --- a/roles/etcd/tasks/main.yml +++ b/roles/etcd/tasks/main.yml @@ -122,7 +122,8 @@  - include_role:      name: etcd_common -    tasks_from: etcdctl.yml +  vars: +    r_etcd_common_action: drop_etcdctl    when: openshift_etcd_etcdctl_profile | default(true) | bool  - name: Set fact etcd_service_status_changed diff --git a/roles/etcd_common/defaults/main.yml b/roles/etcd_common/defaults/main.yml index 14e712fcf..8cc7a9c20 100644 --- a/roles/etcd_common/defaults/main.yml +++ b/roles/etcd_common/defaults/main.yml @@ -1,8 +1,18 @@  --- +# Default action when calling this role +r_etcd_common_action: noop +r_etcd_common_backup_tag: '' +r_etcd_common_backup_sufix_name: '' +  # runc, docker, host  r_etcd_common_etcd_runtime: "docker"  r_etcd_common_embedded_etcd: false +# etcd run on a host => use etcdctl command directly +# etcd run as a docker container => use docker exec +# etcd run as a runc container => use runc exec +r_etcd_common_etcdctl_command: "{{ 'etcdctl' if r_etcd_common_etcd_runtime == 'host' or r_etcd_common_embedded_etcd | bool else 'docker exec etcd_container etcdctl' if r_etcd_common_etcd_runtime == 'docker' else 'runc exec etcd etcdctl' }}" +  # etcd server vars  etcd_conf_dir: '/etc/etcd'  r_etcd_common_system_container_host_dir: /var/lib/etcd/etcd.etcd diff --git a/roles/etcd_upgrade/tasks/backup.yml b/roles/etcd_common/tasks/backup.yml index 1ea6fc59f..4a4832275 100644 --- a/roles/etcd_upgrade/tasks/backup.yml +++ b/roles/etcd_common/tasks/backup.yml @@ -1,15 +1,11 @@  --- -# INPUT r_etcd_backup_sufix_name -# INPUT r_etcd_backup_tag -# OUTPUT r_etcd_upgrade_backup_complete  - set_fact: -    # ORIGIN etcd_data_dir etcd_common.defaults -    l_etcd_backup_dir: "{{ etcd_data_dir }}/openshift-backup-{{ r_etcd_backup_tag | default('') }}{{ r_etcd_backup_sufix_name }}" +    l_etcd_backup_dir: "{{ etcd_data_dir }}/openshift-backup-{{ r_etcd_common_backup_tag }}{{ r_etcd_common_backup_sufix_name }}"  # TODO: replace shell module with command and update later checks  - name: Check available disk space for etcd backup    shell: df --output=avail -k {{ etcd_data_dir }} | tail -n 1 -  register: avail_disk +  register: l_avail_disk    # AUDIT:changed_when: `false` because we are only inspecting    # state, not manipulating anything    changed_when: false @@ -17,8 +13,8 @@  # TODO: replace shell module with command and update later checks  - name: Check current etcd disk usage    shell: du --exclude='*openshift-backup*' -k {{ etcd_data_dir }} | tail -n 1 | cut -f1 -  register: etcd_disk_usage -  when: r_etcd_upgrade_embedded_etcd | bool +  register: l_etcd_disk_usage +  when: r_etcd_common_embedded_etcd | bool    # AUDIT:changed_when: `false` because we are only inspecting    # state, not manipulating anything    changed_when: false @@ -26,9 +22,9 @@  - name: Abort if insufficient disk space for etcd backup    fail:      msg: > -      {{ etcd_disk_usage.stdout }} Kb disk space required for etcd backup, -      {{ avail_disk.stdout }} Kb available. -  when: (r_etcd_upgrade_embedded_etcd | bool) and (etcd_disk_usage.stdout|int > avail_disk.stdout|int) +      {{ l_etcd_disk_usage.stdout }} Kb disk space required for etcd backup, +      {{ l_avail_disk.stdout }} Kb available. +  when: (r_etcd_common_embedded_etcd | bool) and (l_etcd_disk_usage.stdout|int > l_avail_disk.stdout|int)  # For non containerized and non embedded we should have the correct version of  # etcd installed already. So don't do anything. @@ -37,17 +33,22 @@  #  # For embedded non containerized we need to ensure we have the latest version  # etcd on the host. +- name: Detecting Atomic Host Operating System +  stat: +    path: /run/ostree-booted +  register: l_ostree_booted +  - name: Install latest etcd for embedded    package:      name: etcd      state: latest    when: -  - r_etcd_upgrade_embedded_etcd | bool +  - r_etcd_common_embedded_etcd | bool    - not l_ostree_booted.stat.exists | bool  - name: Generate etcd backup    command: > -    {{ etcdctl_command }} backup --data-dir={{ etcd_data_dir }} +    {{ r_etcd_common_etcdctl_command }} backup --data-dir={{ etcd_data_dir }}      --backup-dir={{ l_etcd_backup_dir }}  # According to the docs change you can simply copy snap/db @@ -55,16 +56,16 @@  - name: Check for v3 data store    stat:      path: "{{ etcd_data_dir }}/member/snap/db" -  register: v3_db +  register: l_v3_db  - name: Copy etcd v3 data store    command: >      cp -a {{ etcd_data_dir }}/member/snap/db      {{ l_etcd_backup_dir }}/member/snap/ -  when: v3_db.stat.exists +  when: l_v3_db.stat.exists  - set_fact: -    r_etcd_upgrade_backup_complete: True +    r_etcd_common_backup_complete: True  - name: Display location of etcd backup    debug: diff --git a/roles/etcd_common/tasks/etcdctl.yml b/roles/etcd_common/tasks/drop_etcdctl.yml index 6cb456677..6cb456677 100644 --- a/roles/etcd_common/tasks/etcdctl.yml +++ b/roles/etcd_common/tasks/drop_etcdctl.yml diff --git a/roles/etcd_common/tasks/main.yml b/roles/etcd_common/tasks/main.yml new file mode 100644 index 000000000..6ed87e6c7 --- /dev/null +++ b/roles/etcd_common/tasks/main.yml @@ -0,0 +1,9 @@ +--- +- name: Fail if invalid r_etcd_common_action provided +  fail: +    msg: "etcd_common role can only be called with 'noop' or 'backup' or 'drop_etcdctl'" +  when: r_etcd_common_action not in ['noop', 'backup', 'drop_etcdctl'] + +- name: Include main action task file +  include: "{{ r_etcd_common_action }}.yml" +  when: r_etcd_common_action != "noop" diff --git a/roles/etcd_upgrade/defaults/main.yml b/roles/etcd_upgrade/defaults/main.yml index b61bf526c..61bbba225 100644 --- a/roles/etcd_upgrade/defaults/main.yml +++ b/roles/etcd_upgrade/defaults/main.yml @@ -1,9 +1,3 @@  ---  r_etcd_upgrade_action: upgrade  r_etcd_upgrade_mechanism: rpm -r_etcd_upgrade_embedded_etcd: false -r_etcd_common_embedded_etcd: "{{ r_etcd_upgrade_embedded_etcd }}" -# etcd run on a host => use etcdctl command directly -# etcd run as a docker container => use docker exec -# etcd run as a runc container => use runc exec -etcdctl_command: "{{ 'etcdctl' if r_etcd_common_etcd_runtime == 'host' or r_etcd_upgrade_embedded_etcd | bool else 'docker exec etcd_container etcdctl' if r_etcd_common_etcd_runtime == 'docker' else 'runc exec etcd etcdctl' }}" diff --git a/roles/etcd_upgrade/tasks/main.yml b/roles/etcd_upgrade/tasks/main.yml index 5178c14e3..129c69d6b 100644 --- a/roles/etcd_upgrade/tasks/main.yml +++ b/roles/etcd_upgrade/tasks/main.yml @@ -2,9 +2,9 @@  # INPUT r_etcd_upgrade_action  - name: Fail if invalid etcd_upgrade_action provided    fail: -    msg: "etcd_upgrade role can only be called with 'upgrade' or 'backup'" +    msg: "etcd_upgrade role can only be called with 'upgrade'"    when: -  - r_etcd_upgrade_action not in ['upgrade', 'backup'] +  - r_etcd_upgrade_action not in ['upgrade']  - name: Detecting Atomic Host Operating System    stat:  | 
