--- # For 1.4/3.4 we want to upgrade everyone to etcd-3.0. etcd docs say to # upgrade from 2.0.x to 2.1.x to 2.2.x to 2.3.x to 3.0.x. While this is a tedius # task for RHEL and CENTOS it's simply not possible in Fedora unless you've # mirrored packages on your own because only the GA and latest versions are # available in the repos. So for Fedora we'll simply skip this, sorry. - include: ../../evaluate_groups.yml tags: - always - name: Evaluate additional groups for upgrade hosts: localhost connection: local become: no tasks: - name: Evaluate etcd_hosts_to_upgrade add_host: name: "{{ item }}" groups: etcd_hosts_to_upgrade, etcd_hosts_to_backup with_items: "{{ groups.oo_etcd_to_config if groups.oo_etcd_to_config is defined and groups.oo_etcd_to_config | length > 0 else groups.oo_first_master }}" - name: Backup etcd before upgrading anything include: backup.yml vars: backup_tag: "pre-upgrade-" - name: Drop etcdctl profiles hosts: etcd_hosts_to_upgrade tasks: - include: roles/etcd/tasks/etcdctl.yml - name: Determine etcd version hosts: etcd_hosts_to_upgrade tasks: - name: Record RPM based etcd version command: rpm -qa --qf '%{version}' etcd\* register: etcd_installed_version failed_when: false when: not openshift.common.is_containerized | bool - name: Record containerized etcd version command: docker exec etcd_container rpm -qa --qf '%{version}' etcd\* register: etcd_installed_version failed_when: false when: openshift.common.is_containerized | bool # 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_installed_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_installed_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_installed_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_installed_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_installed_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_installed_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.3 tasks: - include: containerized_tasks.yml when: etcd_installed_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-"