Clean-ups for Molecule
- Add fetch-output - Refresh inventory after - Install into system globally Change-Id: Ic279d40d7513003ede62633f16739f4df7946b38
This commit is contained in:
parent
e28e13cd4b
commit
1881aad9e3
@ -1,7 +1,14 @@
|
|||||||
---
|
---
|
||||||
|
- hosts: molecule
|
||||||
|
roles:
|
||||||
|
- fetch-output
|
||||||
|
|
||||||
|
# NOTE(mnaser): We refresh the inventory to drop all the hosts we've added using
|
||||||
|
# the add_host task to avoid any failures after we destroy.
|
||||||
|
- meta: refresh_inventory
|
||||||
|
|
||||||
- hosts: ubuntu-focal
|
- hosts: ubuntu-focal
|
||||||
tasks:
|
tasks:
|
||||||
- name: molecule destroy
|
- shell: molecule destroy
|
||||||
shell: "{{ molecule_executable }} destroy"
|
|
||||||
args:
|
args:
|
||||||
chdir: "{{ zuul.project.src_dir }}"
|
chdir: "{{ zuul.project.src_dir }}"
|
||||||
|
@ -8,13 +8,25 @@
|
|||||||
|
|
||||||
- hosts: ubuntu-focal
|
- hosts: ubuntu-focal
|
||||||
tasks:
|
tasks:
|
||||||
- name: molecule create
|
# TODO(mnaser): Get artifact from build job
|
||||||
shell: "{{ molecule_executable }} create"
|
- name: Build & Install collection
|
||||||
|
block:
|
||||||
|
- name: Install build-time dependencies
|
||||||
|
become: true
|
||||||
|
pip:
|
||||||
|
name: ['pbr', 'pyyaml']
|
||||||
|
- name: Generate meta.yml file
|
||||||
|
shell: python3 {{ zuul.project.src_dir }}/tools/generate-galaxy-yml.py
|
||||||
|
args:
|
||||||
|
chdir: "{{ zuul.project.src_dir }}"
|
||||||
|
- name: Install collection
|
||||||
|
shell: ansible-galaxy collection install -f {{ zuul.project.src_dir }}
|
||||||
|
|
||||||
|
- shell: molecule create
|
||||||
args:
|
args:
|
||||||
chdir: "{{ zuul.project.src_dir }}"
|
chdir: "{{ zuul.project.src_dir }}"
|
||||||
|
|
||||||
- name: molecule prepare
|
- shell: molecule prepare
|
||||||
shell: "{{ molecule_executable }} prepare"
|
|
||||||
args:
|
args:
|
||||||
chdir: "{{ zuul.project.src_dir }}"
|
chdir: "{{ zuul.project.src_dir }}"
|
||||||
|
|
||||||
|
@ -1,17 +1,14 @@
|
|||||||
---
|
---
|
||||||
- hosts: ubuntu-focal
|
- hosts: ubuntu-focal
|
||||||
tasks:
|
tasks:
|
||||||
- name: molecule converge
|
- shell: molecule converge
|
||||||
shell: "{{ molecule_executable }} converge"
|
|
||||||
args:
|
args:
|
||||||
chdir: "{{ zuul.project.src_dir }}"
|
chdir: "{{ zuul.project.src_dir }}"
|
||||||
|
|
||||||
- name: molecule idempotence
|
- shell: molecule idempotence
|
||||||
shell: "{{ molecule_executable }} idempotence"
|
|
||||||
args:
|
args:
|
||||||
chdir: "{{ zuul.project.src_dir }}"
|
chdir: "{{ zuul.project.src_dir }}"
|
||||||
|
|
||||||
- name: molecule verify
|
- shell: molecule verify
|
||||||
shell: "{{ molecule_executable }} verify"
|
|
||||||
args:
|
args:
|
||||||
chdir: "{{ zuul.project.src_dir }}"
|
chdir: "{{ zuul.project.src_dir }}"
|
||||||
|
@ -9,17 +9,3 @@ virtual environment for the current user.
|
|||||||
:default: 3.6.1
|
:default: 3.6.1
|
||||||
|
|
||||||
Molecule version to install on the host.
|
Molecule version to install on the host.
|
||||||
|
|
||||||
**Output Variables**
|
|
||||||
|
|
||||||
.. zuul:rolevar:: molecule_executable
|
|
||||||
:default: molecule
|
|
||||||
|
|
||||||
After running this role, ``molecule_executable`` will be set as the path
|
|
||||||
to a valid ``molecule``.
|
|
||||||
|
|
||||||
At role runtime, look for an existing ``molecule`` at this specific
|
|
||||||
path. Note the default (``molecule``) effectively means to find tox in
|
|
||||||
the current ``$PATH``. For example, if your base image
|
|
||||||
pre-installs molecule in an out-of-path environment, set this so the
|
|
||||||
role does not attempt to install the user version.
|
|
@ -1,2 +1 @@
|
|||||||
molecule_executable: molecule
|
molecule_version: 3.6.1
|
||||||
molecule_venv_path: '{{ ansible_user_dir }}/.local/molecule'
|
|
@ -2,46 +2,17 @@
|
|||||||
include_role:
|
include_role:
|
||||||
name: ensure-pip
|
name: ensure-pip
|
||||||
|
|
||||||
- name: Check if molecule is installed
|
- name: Install Molecule
|
||||||
shell: |
|
become: true
|
||||||
command -v {{ molecule_executable }} {{ molecule_venv_path }}/bin/molecule || exit 1
|
pip:
|
||||||
args:
|
name:
|
||||||
executable: /bin/bash
|
- ansible-core
|
||||||
register: molecule_preinstalled
|
- molecule=={{ molecule_version }}
|
||||||
failed_when: false
|
|
||||||
|
|
||||||
- name: Export preinstalled molecule_executable
|
- name: Install additional dependencies
|
||||||
set_fact:
|
become: true
|
||||||
molecule_executable: '{{ molecule_preinstalled.stdout_lines[0] }}'
|
pip:
|
||||||
cacheable: true
|
requirements: "{{ zuul.project.src_dir }}/molecule/default/requirements.txt"
|
||||||
when: molecule_preinstalled.rc == 0
|
|
||||||
|
|
||||||
- name: Install molecule to local env
|
|
||||||
when: molecule_preinstalled.rc != 0
|
|
||||||
block:
|
|
||||||
- name: Create local venv
|
|
||||||
command: '{{ ensure_pip_virtualenv_command }} {{ molecule_venv_path }}'
|
|
||||||
|
|
||||||
- name: Install molecule to local venv
|
|
||||||
command: '{{ molecule_venv_path }}/bin/pip install -r {{ zuul.project.src_dir }}/molecule/default/requirements.txt ansible molecule=={{ molecule_version }}'
|
|
||||||
|
|
||||||
# NOTE(mnaser): molecule shells out to "ansible-config" and since we don't
|
|
||||||
# have it in our PATH.
|
|
||||||
- name: Create symbolic link for ansible-config
|
|
||||||
become: true
|
|
||||||
file:
|
|
||||||
src: '{{ molecule_venv_path }}/bin/{{ item }}'
|
|
||||||
dest: '/usr/local/bin/{{ item }}'
|
|
||||||
state: link
|
|
||||||
loop:
|
|
||||||
- ansible
|
|
||||||
- ansible-config
|
|
||||||
- ansible-playbook
|
|
||||||
|
|
||||||
- name: Export installed molecule_executable path
|
|
||||||
set_fact:
|
|
||||||
molecule_executable: '{{ molecule_venv_path }}/bin/molecule'
|
|
||||||
cacheable: true
|
|
||||||
|
|
||||||
- name: Output molecule version
|
- name: Output molecule version
|
||||||
command: "{{ molecule_executable }} --version"
|
command: molecule --version
|
||||||
|
Loading…
x
Reference in New Issue
Block a user