f2093a18ed
All references to Gentoo, SUSE, Debian stretch and Centos-7 are removed. Conditional tasks, ternary operators and variables are simplified where possible OS specific variables files are generalised where possible Change-Id: I8224deceba331d9fbca64c151b27430530a18528
196 lines
5.8 KiB
YAML
196 lines
5.8 KiB
YAML
---
|
|
# Copyright 2018, 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: Prepare the host/containers
|
|
import_playbook: common/test-setup-host.yml
|
|
|
|
- name: Prepare web server on localhost to serve python packages
|
|
hosts: localhost
|
|
connection: local
|
|
become: yes
|
|
any_errors_fatal: yes
|
|
tasks:
|
|
- name: Set venv_build_archive_path and venv_install_source_path
|
|
set_fact:
|
|
venv_build_host_wheel_path: >-
|
|
{%- if ansible_facts['distribution'] == "Ubuntu" %}
|
|
{%- set _path = "/var/www/html" %}
|
|
{%- elif ansible_facts['distribution'] == "CentOS" %}
|
|
{%- set _path = "/usr/share/nginx/html" %}
|
|
{%- else %}
|
|
{%- set _path = "/srv/www/htdocs" %}
|
|
{%- endif %}
|
|
{{- _path }}
|
|
|
|
- name: Install EPEL gpg keys
|
|
rpm_key:
|
|
key: "http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7"
|
|
state: present
|
|
when:
|
|
- ansible_facts['pkg_mgr'] == 'dnf'
|
|
register: _add_yum_keys
|
|
until: _add_yum_keys is success
|
|
retries: 5
|
|
delay: 2
|
|
|
|
- name: Install the EPEL repository
|
|
yum_repository:
|
|
name: epel-nginx
|
|
baseurl: "{{ (centos_epel_mirror | default ('http://download.fedoraproject.org/pub/epel')) ~ '/' ~ ansible_facts['distribution_major_version'] ~ '/Everything/' ~ ansible_facts['architecture'] }}"
|
|
description: 'Extra Packages for Enterprise Linux - $basearch'
|
|
gpgcheck: yes
|
|
enabled: yes
|
|
state: present
|
|
includepkgs: 'nginx*'
|
|
when:
|
|
- ansible_facts['pkg_mgr'] == 'dnf'
|
|
register: install_epel_repo
|
|
until: install_epel_repo is success
|
|
retries: 5
|
|
delay: 2
|
|
|
|
- name: Install distro packages
|
|
package:
|
|
name: "nginx"
|
|
update_cache: "{{ (ansible_facts['pkg_mgr'] == 'apt') | ternary('yes', omit) }}"
|
|
register: install
|
|
until: install is success
|
|
retries: 5
|
|
delay: 2
|
|
|
|
- name: Enable and start nginx
|
|
service:
|
|
name: nginx
|
|
enabled: yes
|
|
daemon_reload: yes
|
|
state: restarted
|
|
|
|
- name: Verify not using a build host
|
|
hosts: "container1"
|
|
remote_user: root
|
|
any_errors_fatal: yes
|
|
vars:
|
|
venv_pip_packages:
|
|
- "Jinja2==2.10"
|
|
venv_install_destination_path: "/openstack/venvs/test-venv"
|
|
tasks:
|
|
|
|
- name: Execute venv install
|
|
include_role:
|
|
name: "python_venv_build"
|
|
vars:
|
|
venv_facts_when_changed:
|
|
- section: "{{ inventory_hostname }}"
|
|
option: "test"
|
|
value: True
|
|
|
|
- name: refresh local facts
|
|
setup:
|
|
filter: ansible_local
|
|
gather_subset: "!all"
|
|
|
|
- name: Show the ansible_local facts
|
|
debug:
|
|
var: ansible_local
|
|
|
|
- name: Verify that the facts were set
|
|
assert:
|
|
that:
|
|
- ansible_local['openstack_ansible'][inventory_hostname]['test'] | bool
|
|
|
|
- name: Find files/folders on targets
|
|
find:
|
|
file_type: directory
|
|
get_checksum: no
|
|
recurse: no
|
|
paths:
|
|
- "{{ venv_install_destination_path | dirname }}"
|
|
register: _target_folders
|
|
|
|
- name: Compile the folder list from the targets
|
|
set_fact:
|
|
_target_folder_list: "{{ _target_folders['files'] | map(attribute='path') | list }}"
|
|
|
|
- name: Show the files/folder from the targets
|
|
debug:
|
|
var: _target_folder_list
|
|
|
|
- name: Verify the folder list from the targets
|
|
assert:
|
|
that:
|
|
- "{{ venv_install_destination_path in _target_folder_list }}"
|
|
|
|
- name: Verify using a build host
|
|
hosts: "container2:container3"
|
|
remote_user: root
|
|
any_errors_fatal: yes
|
|
vars:
|
|
venv_default_pip_packages:
|
|
- "elasticsearch>=6.0.0,<7.0.0"
|
|
venv_pip_packages:
|
|
- "Jinja2==2.10"
|
|
venv_install_destination_path: "/openstack/venvs/test-venv"
|
|
venv_pip_install_args: >-
|
|
--find-links http://{{ hostvars['localhost']['ansible_facts']['default_ipv4'].address }}
|
|
--trusted-host {{ hostvars['localhost']['ansible_facts']['default_ipv4'].address }}
|
|
venv_build_host: localhost
|
|
venv_build_host_wheel_path: "{{ hostvars['localhost']['venv_build_host_wheel_path'] }}"
|
|
tasks:
|
|
|
|
- name: Execute venv install
|
|
include_role:
|
|
name: "python_venv_build"
|
|
vars:
|
|
venv_facts_when_changed:
|
|
- section: "{{ inventory_hostname }}"
|
|
option: "test"
|
|
value: True
|
|
|
|
- name: refresh local facts
|
|
setup:
|
|
filter: ansible_local
|
|
gather_subset: "!all"
|
|
|
|
- name: Show the ansible_local facts
|
|
debug:
|
|
var: ansible_local
|
|
|
|
- name: Verify that the facts were set
|
|
assert:
|
|
that:
|
|
- ansible_local['openstack_ansible'][inventory_hostname]['test'] | bool
|
|
|
|
- name: Find files/folders on targets
|
|
find:
|
|
file_type: directory
|
|
get_checksum: no
|
|
recurse: no
|
|
paths:
|
|
- "{{ venv_install_destination_path | dirname }}"
|
|
register: _target_folders
|
|
|
|
- name: Compile the folder list from the targets
|
|
set_fact:
|
|
_target_folder_list: "{{ _target_folders['files'] | map(attribute='path') | list }}"
|
|
|
|
- name: Show the files/folder from the targets
|
|
debug:
|
|
var: _target_folder_list
|
|
|
|
- name: Verify the folder list from the targets
|
|
assert:
|
|
that:
|
|
- "{{ venv_install_destination_path in _target_folder_list }}"
|