diff --git a/tasks/install_zypper.yml b/tasks/install_zypper.yml index 729f2e2c..d9a5a0df 100644 --- a/tasks/install_zypper.yml +++ b/tasks/install_zypper.yml @@ -13,6 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. +- name: Fail if installation method is set to 'external_repo' on openSUSE + fail: + msg: "rabbitmq_install_method='external_repo' is not supported on openSUSE" + when: rabbitmq_install_method == 'external_repo' + - block: - name: Add rabbitmq gpg-keys rpm_key: @@ -40,34 +45,38 @@ - item.fallback_keyserver is defined tags: - rabbitmq-gpg-keys + when: rabbitmq_install_method != 'distro' -- name: Install RabbitMQ package dependencies +# NOTE(hwoarang) For the upgrade job we fetch the old version from upstream and the new one from OBS. zypper gets upset if you +# get the updaded package during an update so you need to pass --force to actually force such a change. However, --force forces a +# re-install independent of repo changes but it's not the end of the world. +- name: Install the RabbitMQ package RPM zypper: - name: "{{ item }}" + name: "{{ rabbitmq_package_path }}" state: "{{ rabbitmq_package_state }}" - update_cache: yes - register: install_packages - until: install_packages|success - retries: 5 - delay: 2 - with_items: "{{ rabbitmq_dependencies }}" - tags: - - rabbitmq-zypper-packages - -- name: Install the RabbitMQ package - zypper: - name: "{{ (rabbitmq_install_method == 'file') | ternary(rabbitmq_package_path, rabbitmq_distro_packages) }}" register: install_rabbitmq tags: - rabbitmq-package-rpm - rabbitmq-zypper-packages + when: rabbitmq_install_method == 'file' -- name: Lock version of erlang packages - command: zypper addlock erlang* - register: zypper_addlock_erlang - changed_when: "zypper_addlock_erlang.stdout.find('successfully added') != -1" +- block: + - name: Install the RabbitMQ package + zypper: + name: "{{ rabbitmq_distro_packages }}" + state: "{{ rabbitmq_package_state }}" + register: install_rabbitmq + rescue: + - name: Install the RabbitMQ package (force) + package: + name: "{{ rabbitmq_distro_packages }}" + state: "{{ rabbitmq_package_state }}" + force: yes + register: install_rabbitmq tags: + - rabbitmq-package-rpm - rabbitmq-zypper-packages + when: rabbitmq_install_method == 'distro' # NOTE(hwoarang) on openSUSE, rabbitmq-server depends on epmd.service which # depends on epmd.socket which runs on localhost. It is just easier to let diff --git a/tests/test-vars.yml b/tests/test-vars.yml index eefeaf1c..4a3c7040 100644 --- a/tests/test-vars.yml +++ b/tests/test-vars.yml @@ -6,19 +6,20 @@ rabbitmq_ssl_key: /etc/rabbitmq/rabbitmq.key rabbitmq_hipe_compile: True rabbitmq_old_package: + # NOTE(hwoarang): For openSUSE/Ubuntu, we install the old file explicitly. CentOS7 will get it from the external + # repo instead. debian: + method: 'file' rabbitmq_package_url: "http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.9/rabbitmq-server_3.6.9-1_all.deb" rabbitmq_package_sha256: "ff100febb8c409692e57f3dc98fd2fc667f83eeefa3958a6fda865ce40a40349" rabbitmq_release_version: "3.6.9" redhat: + method: 'external_repo' rabbitmq_package_url: "http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.9/rabbitmq-server-3.6.9-1.el7.noarch.rpm" rabbitmq_package_sha256: "757fc6746a1700380b3ba9bf4f00dfa16cc5a0ddc8c94636c4388e838f605c31" rabbitmq_release_version: "3.6.9" - # NOTE(hwoarang): On SUSE, we use 'rabbitmq_install_method = distro' since we - # always grab the package from the openSUSE repositories. As such, the - # following variables are never used but we keep them here just in case we - # change the installation method in the future. suse: + method: 'file' rabbitmq_package_url: "http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.9/rabbitmq-server-3.6.9-1.suse.noarch.rpm" rabbitmq_package_sha256: "c44813ab94463f83e3e74be04db7304120697a27df12ca057e3dbb32717af32f" rabbitmq_release_version: "3.6.9" @@ -26,9 +27,15 @@ rabbitmq_old_package: # NOTE(hwoarang): This normally matches the _rabbitmq_release_version variable # in the vars/* distro files. rabbitmq_new_package: + # NOTE(hwoarang): For openSUSE we get the new version from the repo. + # For Ubuntu keep the default which is 'file'. For CentOS will get it + # from the external repo debian: + method: 'file' rabbitmq_release_version: "3.6.11" redhat: + method: 'external_repo' rabbitmq_release_version: "3.6.11" suse: + method: 'distro' rabbitmq_release_version: "3.6.11" diff --git a/tests/test.yml b/tests/test.yml index afb3d049..3b6e7fcd 100644 --- a/tests/test.yml +++ b/tests/test.yml @@ -19,6 +19,7 @@ # Install previous version of RabbitMQ server - include: test-install-rabbitmq-server.yml vars: + rabbitmq_install_method: "{{ rabbitmq_old_package[ansible_os_family | lower]['method'] }}" rabbitmq_package_url: "{{ rabbitmq_old_package[ansible_os_family | lower]['rabbitmq_package_url'] }}" rabbitmq_package_sha256: "{{ rabbitmq_old_package[ansible_os_family | lower]['rabbitmq_package_sha256'] }}" @@ -29,6 +30,7 @@ - include: test-install-rabbitmq-server.yml vars: + rabbitmq_install_method: "{{ rabbitmq_new_package[ansible_os_family | lower]['method'] }}" rabbitmq_upgrade: true - include: test-rabbitmq-server-functional.yml diff --git a/vars/suse.yml b/vars/suse.yml index 177f9a9e..78120364 100644 --- a/vars/suse.yml +++ b/vars/suse.yml @@ -13,10 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Even though we install the rabbitmq-server from the openSUSE repositories -# (the Ocata OBS project) we still add these here in case we use them in the -# future. -_rabbitmq_install_method: file +_rabbitmq_install_method: distro + +# These are all here as alternative ways to get the required packages either by +# installing the package directly or getting it from the CentOS mirror _rabbitmq_package_url: "http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.11/rabbitmq-server-3.6.11-1.suse.noarch.rpm" _rabbitmq_package_version: "{{ rabbitmq_package_url.split('/')[-1].rsplit('.', 1)[0] }}" _rabbitmq_release_version: "{{ rabbitmq_package_version.split('-')[2] }}" @@ -29,11 +29,6 @@ _rabbitmq_gpg_keys: - key_name: 'erlang_solutions.asc' keyserver: 'https://packages.erlang-solutions.com/ubuntu' -rabbitmq_dependencies: - - erlang - - openssl - - socat - rabbitmq_distro_packages: - rabbitmq-server - rabbitmq-server-plugins