--- # 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 }}"