From ebae945f3176cc4d0dbe50b9a4a8712aff30de1c Mon Sep 17 00:00:00 2001 From: Jesse Pretorius Date: Tue, 2 May 2017 10:36:46 +0100 Subject: [PATCH] Use package module to install distro packages Consolidate distro package install tasks into a single task using the package module and pass the package list into the name instead of using a with_items loop. Tidy up some other tasks to reduce task file sprawl and consolidate some task actions. The minimum Ansible version is raised to 2.2 due to a known bug [1] in Ansible's apt module which does not update the cache properly if the cache update and the install are combined in a single task. [1] https://github.com/ansible/ansible-modules-core/issues/1497 Change-Id: I3717867208f1c379f0eda74e19c064a4b697cc53 --- .gitignore | 5 ++- handlers/main.yml | 6 ++-- meta/main.yml | 2 +- tasks/haproxy_install.yml | 54 ++++++++++++++++++-------------- tasks/haproxy_install_apt.yml | 28 ----------------- tasks/haproxy_install_hatop.yml | 39 ----------------------- tasks/haproxy_install_yum.yml | 26 --------------- tasks/haproxy_install_zypper.yml | 26 --------------- tasks/haproxy_post_install.yml | 7 ----- tasks/haproxy_pre_install.yml | 6 ++++ 10 files changed, 44 insertions(+), 155 deletions(-) delete mode 100644 tasks/haproxy_install_apt.yml delete mode 100644 tasks/haproxy_install_hatop.yml delete mode 100644 tasks/haproxy_install_yum.yml delete mode 100644 tasks/haproxy_install_zypper.yml diff --git a/.gitignore b/.gitignore index 21adf3c..e611994 100644 --- a/.gitignore +++ b/.gitignore @@ -61,9 +61,8 @@ ChangeLog releasenotes/build # Test temp files -tests/plugins -tests/playbooks -tests/test.retry +tests/common +*.retry # Vagrant artifacts .vagrant diff --git a/handlers/main.yml b/handlers/main.yml index 71db31a..6634dc4 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -30,10 +30,12 @@ service: name: "haproxy" state: "restarted" - enabled: "yes" + enabled: yes + daemon_reload: "{{ (ansible_service_mgr == 'systemd') | ternary('yes', omit) }}" - name: Restart rsyslog service: name: "rsyslog" state: "restarted" - enabled: "yes" + enabled: yes + daemon_reload: "{{ (ansible_service_mgr == 'systemd') | ternary('yes', omit) }}" diff --git a/meta/main.yml b/meta/main.yml index f5d39cb..63a3841 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -18,7 +18,7 @@ galaxy_info: description: Installation and setup of HAProxy company: Rackspace license: Apache2 - min_ansible_version: 1.9.0 + min_ansible_version: 2.2 platforms: - name: Ubuntu versions: diff --git a/tasks/haproxy_install.yml b/tasks/haproxy_install.yml index 6deb7f6..70ca02e 100644 --- a/tasks/haproxy_install.yml +++ b/tasks/haproxy_install.yml @@ -13,30 +13,38 @@ # See the License for the specific language governing permissions and # limitations under the License. -- include: haproxy_install_apt.yml - when: ansible_pkg_mgr == 'apt' - tags: - - install-apt +- name: Install HAProxy Packages + package: + name: "{{ haproxy_distro_packages }}" + state: "{{ haproxy_package_state }}" + update_cache: "{{ (ansible_pkg_mgr == 'apt') | ternary('yes', omit) }}" + cache_valid_time: "{{ (ansible_pkg_mgr == 'apt') | ternary(cache_timeout, omit) }}" + register: install_packages + until: install_packages|success + retries: 5 + delay: 2 -- include: haproxy_install_yum.yml - when: ansible_pkg_mgr == 'yum' - tags: - - install-yum +- name: Download HATop + local_action: + module: get_url + url: "{{ haproxy_hatop_download_url }}" + dest: "/tmp/{{ haproxy_hatop_download_url | basename }}" + force: yes + validate_certs: "{{ haproxy_hatop_download_validate_certs }}" + run_once: True -- include: haproxy_install_zypper.yml - when: ansible_pkg_mgr == 'zypper' - tags: - - install-zypper - -- include: haproxy_install_hatop.yml - -- name: Create haproxy conf.d dir +- name: Create HATop directory file: - path: "{{ item.path }}" + path: "/opt/{{ haproxy_hatop_download_url | basename | replace('.tar.gz', '') }}" state: directory - mode: "0755" - with_items: - - { path: "/etc/haproxy" } - - { path: "/etc/haproxy/conf.d" } - tags: - - haproxy_server-config + +- name: Unarchive HATop + unarchive: + src: "/tmp/{{ haproxy_hatop_download_url | basename }}" + dest: "/opt" + +- name: Install HATop + command: "install -m 755 bin/hatop /usr/local/bin" + args: + chdir: "/opt/{{ haproxy_hatop_download_url | basename | replace('.tar.gz', '') }}" + creates: "/usr/local/bin/hatop" diff --git a/tasks/haproxy_install_apt.yml b/tasks/haproxy_install_apt.yml deleted file mode 100644 index 8daebee..0000000 --- a/tasks/haproxy_install_apt.yml +++ /dev/null @@ -1,28 +0,0 @@ ---- -# Copyright 2016, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- name: Install HAProxy Packages - apt: - pkg: "{{ item }}" - state: "{{ haproxy_package_state }}" - update_cache: yes - cache_valid_time: "{{ cache_timeout }}" - register: install_packages - until: install_packages|success - retries: 5 - delay: 2 - with_items: "{{ haproxy_distro_packages }}" - tags: - - haproxy-apt-packages diff --git a/tasks/haproxy_install_hatop.yml b/tasks/haproxy_install_hatop.yml deleted file mode 100644 index 04cc310..0000000 --- a/tasks/haproxy_install_hatop.yml +++ /dev/null @@ -1,39 +0,0 @@ ---- -# Copyright 2016, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- name: Download HATop - local_action: - module: get_url - url: "{{ haproxy_hatop_download_url }}" - dest: "/tmp/{{ haproxy_hatop_download_url | basename }}" - force: yes - validate_certs: "{{ haproxy_hatop_download_validate_certs }}" - run_once: True - -- name: Create HATop directory - file: - path: "/opt/{{ haproxy_hatop_download_url | basename | replace('.tar.gz', '') }}" - state: directory - -- name: Unarchive HATop - unarchive: - src: "/tmp/{{ haproxy_hatop_download_url | basename }}" - dest: "/opt" - -- name: Install HATop - command: "install -m 755 bin/hatop /usr/local/bin" - args: - chdir: "/opt/{{ haproxy_hatop_download_url | basename | replace('.tar.gz', '') }}" - creates: "/usr/local/bin/hatop" diff --git a/tasks/haproxy_install_yum.yml b/tasks/haproxy_install_yum.yml deleted file mode 100644 index 367c6a4..0000000 --- a/tasks/haproxy_install_yum.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -# Copyright 2016, Rackspace US, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- name: Install yum packages - yum: - pkg: "{{ item }}" - state: "{{ haproxy_package_state }}" - register: install_packages - until: install_packages|success - retries: 5 - delay: 2 - with_items: "{{ haproxy_distro_packages }}" - tags: - - haproxy-yum-packages diff --git a/tasks/haproxy_install_zypper.yml b/tasks/haproxy_install_zypper.yml deleted file mode 100644 index 29f9b48..0000000 --- a/tasks/haproxy_install_zypper.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -# Copyright 2017, SUSE LINUX GmbH. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -- name: Install zypper packages - zypper: - name: "{{ item }}" - state: "{{ haproxy_package_state }}" - register: install_packages - until: install_packages|success - retries: 5 - delay: 2 - with_items: "{{ haproxy_distro_packages }}" - tags: - - haproxy-zypper-packages diff --git a/tasks/haproxy_post_install.yml b/tasks/haproxy_post_install.yml index ad5ba08..78fe86a 100644 --- a/tasks/haproxy_post_install.yml +++ b/tasks/haproxy_post_install.yml @@ -42,10 +42,3 @@ - include: haproxy_service_config.yml tags: - haproxy-service-config - -- name: Enable haproxy services - service: - name: "haproxy" - enabled: "yes" - tags: - - haproxy-enable-service-config diff --git a/tasks/haproxy_pre_install.yml b/tasks/haproxy_pre_install.yml index d440602..6ac4247 100644 --- a/tasks/haproxy_pre_install.yml +++ b/tasks/haproxy_pre_install.yml @@ -83,3 +83,9 @@ state: absent with_items: - "{{ haproxy_distro_packages_remove }}" + +- name: Create haproxy conf.d dir + file: + path: "/etc/haproxy/conf.d" + state: directory + mode: "0755"