--- - name: Determine etcd version hosts: etcd_hosts_to_upgrade tasks: - name: Record RPM based etcd version command: rpm -qa --qf '%{version}' etcd\* args: warn: no register: etcd_rpm_version failed_when: false when: not openshift.common.is_containerized | bool # AUDIT:changed_when: `false` because we are only inspecting # state, not manipulating anything changed_when: false - name: Record containerized etcd version command: docker exec etcd_container rpm -qa --qf '%{version}' etcd\* register: etcd_container_version failed_when: false when: openshift.common.is_containerized | bool # AUDIT:changed_when: `false` because we are only inspecting # state, not manipulating anything changed_when: false - name: Record containerized etcd version command: docker exec etcd_container rpm -qa --qf '%{version}' etcd\* register: etcd_container_version failed_when: false when: openshift.common.is_containerized | bool and not openshift.common.is_etcd_system_container | bool # AUDIT:changed_when: `false` because we are only inspecting # state, not manipulating anything changed_when: false - name: Record containerized etcd version command: runc exec etcd_container rpm -qa --qf '%{version}' etcd\* register: etcd_container_version failed_when: false when: openshift.common.is_containerized | bool and openshift.common.is_etcd_system_container | bool # AUDIT:changed_when: `false` because we are only inspecting # state, not manipulating anything changed_when: false # I really dislike this copy/pasta but I wasn't able to find a way to get it to loop # through hosts, then loop through tasks only when appropriate - name: Upgrade to 2.1 hosts: etcd_hosts_to_upgrade serial: 1 vars: upgrade_version: '2.1' tasks: - include: rhel_tasks.yml when: etcd_rpm_version.stdout | default('99') | version_compare('2.1','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool - name: Upgrade RPM hosts to 2.2 hosts: etcd_hosts_to_upgrade serial: 1 vars: upgrade_version: '2.2' tasks: - include: rhel_tasks.yml when: etcd_rpm_version.stdout | default('99') | version_compare('2.2','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool - name: Upgrade containerized hosts to 2.2.5 hosts: etcd_hosts_to_upgrade serial: 1 vars: upgrade_version: 2.2.5 tasks: - include: containerized_tasks.yml when: etcd_container_version.stdout | default('99') | version_compare('2.2','<') and openshift.common.is_containerized | bool - name: Upgrade RPM hosts to 2.3 hosts: etcd_hosts_to_upgrade serial: 1 vars: upgrade_version: '2.3' tasks: - include: rhel_tasks.yml when: etcd_rpm_version.stdout | default('99') | version_compare('2.3','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool - name: Upgrade containerized hosts to 2.3.7 hosts: etcd_hosts_to_upgrade serial: 1 vars: upgrade_version: 2.3.7 tasks: - include: containerized_tasks.yml when: etcd_container_version.stdout | default('99') | version_compare('2.3','<') and openshift.common.is_containerized | bool - name: Upgrade RPM hosts to 3.0 hosts: etcd_hosts_to_upgrade serial: 1 vars: upgrade_version: '3.0' tasks: - include: rhel_tasks.yml when: etcd_rpm_version.stdout | default('99') | version_compare('3.0','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool - name: Upgrade containerized hosts to etcd3 image hosts: etcd_hosts_to_upgrade serial: 1 vars: upgrade_version: 3.0.15 tasks: - include: containerized_tasks.yml when: etcd_container_version.stdout | default('99') | version_compare('3.0','<') and openshift.common.is_containerized | bool - name: Upgrade fedora to latest hosts: etcd_hosts_to_upgrade serial: 1 tasks: - include: fedora_tasks.yml when: ansible_distribution == 'Fedora' and not openshift.common.is_containerized | bool - name: Backup etcd include: backup.yml vars: backup_tag: "post-3.0-" when: openshift_etcd_backup | default(true) | bool