From 69759b21526a95446d68e589d271850a233df0d3 Mon Sep 17 00:00:00 2001 From: Travis Truman Date: Fri, 20 May 2016 15:16:10 -0400 Subject: [PATCH] Updating os_swift to use the Multi-Distro framework Debian-specific vars and logic have been moved to tasks that will execute only on those distributions. Change-Id: I370621eda9e87bd19532e4e37e46097607bf4166 Implements: blueprint multi-platform-host --- defaults/main.yml | 12 --------- meta/main.yml | 4 ++- tasks/install-apt.yml | 44 +++++++++++++++++++++++++++++++++ tasks/main.yml | 9 +++++++ tasks/swift_install.yml | 32 +++--------------------- tests/test-setup-swifthosts.yml | 4 +++ vars/debian.yml | 27 ++++++++++++++++++++ 7 files changed, 91 insertions(+), 41 deletions(-) create mode 100644 tasks/install-apt.yml create mode 100644 vars/debian.yml diff --git a/defaults/main.yml b/defaults/main.yml index cf0e25a8..a79b807d 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -18,7 +18,6 @@ swift_ceilometer_enabled: False ## Verbosity Options debug: False -cache_timeout: 600 swift_git_repo: https://git.openstack.org/openstack/swift swift_git_install_branch: master @@ -269,17 +268,6 @@ swift_pip_packages: - python-swiftclient - swift -swift_apt_packages: - - curl - - gcc - - git-core - - liberasurecode1 - - liberasurecode-dev - - libffi-dev - - openssh-server - - python-dev - - rsync - swift_account_program_names: - swift-account-server - swift-account-auditor diff --git a/meta/main.yml b/meta/main.yml index 4fc350d6..62083976 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -36,5 +36,7 @@ dependencies: - role: pip_install when: - swift_developer_mode | bool - - apt_package_pinning + - role: apt_package_pinning + when: + - ansible_pkg_mgr == 'apt' - openstack_openrc diff --git a/tasks/install-apt.yml b/tasks/install-apt.yml new file mode 100644 index 00000000..caa7c926 --- /dev/null +++ b/tasks/install-apt.yml @@ -0,0 +1,44 @@ +--- +# Copyright 2014, 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. + +#TODO(evrardjp): Replace the next 2 tasks by a standard apt with cache +#when https://github.com/ansible/ansible-modules-core/pull/1517 is merged +#in 1.9.x or we move to 2.0 (if tested working) +- name: Check apt last update file + stat: + path: /var/cache/apt + register: apt_cache_stat + tags: + - swift-apt-packages + +- name: Update apt if needed + apt: + update_cache: yes + when: "ansible_date_time.epoch|float - apt_cache_stat.stat.mtime > {{cache_timeout}}" + tags: + - swift-apt-packages + +- name: Install apt packages + apt: + pkg: "{{ item }}" + state: latest + register: install_packages + until: install_packages|success + retries: 5 + delay: 2 + with_items: swift_apt_packages + tags: + - swift-install + - swift-apt-packages \ No newline at end of file diff --git a/tasks/main.yml b/tasks/main.yml index 604f8bf3..fcfda445 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -13,6 +13,15 @@ # See the License for the specific language governing permissions and # limitations under the License. +- name: Gather variables for each operating system + include_vars: "{{ item }}" + with_first_found: + - "{{ ansible_distribution | lower }}-{{ ansible_distribution_version | lower }}.yml" + - "{{ ansible_distribution | lower }}.yml" + - "{{ ansible_os_family | lower }}.yml" + tags: + - always + - include: swift_pre_install.yml when: - swift_do_setup | bool diff --git a/tasks/swift_install.yml b/tasks/swift_install.yml index 86d577e4..255e89a1 100644 --- a/tasks/swift_install.yml +++ b/tasks/swift_install.yml @@ -13,35 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -#TODO(evrardjp): Replace the next 2 tasks by a standard apt with cache -#when https://github.com/ansible/ansible-modules-core/pull/1517 is merged -#in 1.9.x or we move to 2.0 (if tested working) -- name: Check apt last update file - stat: - path: /var/cache/apt - register: apt_cache_stat +- include: install-apt.yml + when: + - ansible_pkg_mgr == 'apt' tags: - - swift-apt-packages - -- name: Update apt if needed - apt: - update_cache: yes - when: "ansible_date_time.epoch|float - apt_cache_stat.stat.mtime > {{cache_timeout}}" - tags: - - swift-apt-packages - -- name: Install apt packages - apt: - pkg: "{{ item }}" - state: latest - register: install_packages - until: install_packages|success - retries: 5 - delay: 2 - with_items: swift_apt_packages - tags: - - swift-install - - swift-apt-packages + - install-apt - name: Create developer mode constraint file copy: diff --git a/tests/test-setup-swifthosts.yml b/tests/test-setup-swifthosts.yml index b02dcb81..61bdf0f4 100644 --- a/tests/test-setup-swifthosts.yml +++ b/tests/test-setup-swifthosts.yml @@ -24,10 +24,14 @@ state: present delegate_to: "{{ physical_host }}" run_once: true + when: + - ansible_pkg_mgr == 'apt' - name: Ensure xfsprogs is installed on containers apt: name: xfsprogs state: present + when: + - ansible_pkg_mgr == 'apt' - name: Openstack directory Create file: state: directory diff --git a/vars/debian.yml b/vars/debian.yml new file mode 100644 index 00000000..7ea6bd7f --- /dev/null +++ b/vars/debian.yml @@ -0,0 +1,27 @@ +--- +# Copyright 2014, 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. + +cache_timeout: 600 + +swift_apt_packages: + - curl + - gcc + - git-core + - liberasurecode1 + - liberasurecode-dev + - libffi-dev + - openssh-server + - python-dev + - rsync \ No newline at end of file