171 lines
5.2 KiB
YAML
171 lines
5.2 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: Clean up from previous tests
|
|
hosts: "{{ build_host }}:{{ install_hosts }}"
|
|
become: yes
|
|
any_errors_fatal: yes
|
|
tasks:
|
|
- name: Clean up files/folders from previous tests
|
|
file:
|
|
path: "{{ item.path }}"
|
|
state: absent
|
|
with_items:
|
|
- path: "{{ lookup('env', 'HOME') }}/archive"
|
|
- path: "{{ lookup('env', 'HOME') }}/venvs"
|
|
|
|
- name: Clean up facts from previous tests
|
|
ini_file:
|
|
path: "/etc/ansible/facts.d/openstack_ansible.fact"
|
|
section: "{{ item }}"
|
|
state: absent
|
|
with_items: "{{ build_host.split(':') + install_hosts.split(':') }}"
|
|
|
|
- name: Refresh the inventory to clear the added groups
|
|
meta: refresh_inventory
|
|
|
|
- name: Set venv_build_archive_path and venv_install_source_path
|
|
set_fact:
|
|
venv_build_archive_path: >-
|
|
{%- if build_host == "container1" %}
|
|
{%- if ansible_distribution == "Ubuntu" %}
|
|
{%- set _path = "/var/www/html" %}
|
|
{%- elif ansible_distribution == "CentOS" %}
|
|
{%- set _path = "/usr/share/nginx/html" %}
|
|
{%- else %}
|
|
{%- set _path = "/srv/www/htdocs" %}
|
|
{%- endif %}
|
|
{%- else -%}
|
|
{%- set _path = lookup('env', 'HOME') ~ "/archive/venvs" -%}
|
|
{%- endif -%}
|
|
{{- _path }}
|
|
venv_install_source_path: >-
|
|
{%- if build_host == "container1" -%}
|
|
http://{{ hostvars['container1'].ansible_default_ipv4.address }}
|
|
{%- else -%}
|
|
{{- lookup('env', 'HOME') }}/archive/venvs
|
|
{%- endif -%}
|
|
|
|
- name: Setup web server for url-based venv install
|
|
when:
|
|
- inventory_hostname == 'container1'
|
|
block:
|
|
- name: Install EPEL gpg keys
|
|
rpm_key:
|
|
key: "http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7"
|
|
state: present
|
|
when:
|
|
- ansible_pkg_mgr in ['yum', '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_distribution_major_version ~ '/' ~ ansible_architecture }}"
|
|
description: 'Extra Packages for Enterprise Linux 7 - $basearch'
|
|
gpgcheck: yes
|
|
enabled: yes
|
|
state: present
|
|
includepkgs: 'nginx*'
|
|
when:
|
|
- ansible_pkg_mgr in ['yum', '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_pkg_mgr in ['apt', 'zypper']) | 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: Execute build
|
|
hosts: "{{ build_host }}"
|
|
become: yes
|
|
any_errors_fatal: yes
|
|
tasks:
|
|
- name: Execute venv build
|
|
include_role:
|
|
name: "python_venv_build"
|
|
private: yes
|
|
vars:
|
|
venv_build_only: yes
|
|
|
|
- name: Execute install
|
|
hosts: "{{ install_hosts }}"
|
|
become: yes
|
|
any_errors_fatal: yes
|
|
tasks:
|
|
|
|
- name: Execute venv install
|
|
include_role:
|
|
name: "python_venv_build"
|
|
private: yes
|
|
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 }}"
|