Allow GitHub variables to be mapped.
This commit is contained in:
parent
c9f9433eab
commit
0ca1125aa8
10
README.md
10
README.md
|
|
@ -75,12 +75,18 @@ This optional file describes how Travis, Tox and Molecule should behave.
|
||||||
|parameter |type |default|description |
|
|parameter |type |default|description |
|
||||||
|--------------------|---------------|-------|-----------------------------------------------------------------------------------------|
|
|--------------------|---------------|-------|-----------------------------------------------------------------------------------------|
|
||||||
|tox_ansible_versions|list of strings|not set|What versions should Tox test? (Default: all.) |
|
|tox_ansible_versions|list of strings|not set|What versions should Tox test? (Default: all.) |
|
||||||
|enterprise_linux |string |not set|If `EL` is used in `meta/main.yml` where should tests happen on? (Default: `rockylinux`.)|
|
|github_variables_mapping|list|not set|A list of `name` and `variable`, `name` refers to the GitHub exposed name, `variable` refers to the name you'd like to pass to molecule, tox and Ansible.|
|
||||||
|
|
||||||
|
# Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
---
|
---
|
||||||
tox_ansible_versions:
|
tox_ansible_versions:
|
||||||
- 7
|
- 7
|
||||||
enterprise_linx: centos
|
github_variables_mapping:
|
||||||
|
- name: secrets.VAULT_LICENSE
|
||||||
|
variable: VAULT_LICENCE
|
||||||
|
- name: secrets.MY_VAR
|
||||||
|
variable: someTHING
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
||||||
83
generate.yml
83
generate.yml
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env ansible-playbook
|
#!/usr/bin/env ansible-playbook
|
||||||
---
|
---
|
||||||
- name: generate all files
|
- name: Generate all files
|
||||||
hosts: localhost
|
hosts: localhost
|
||||||
become: no
|
become: no
|
||||||
gather_facts: yes
|
gather_facts: yes
|
||||||
|
|
@ -11,93 +11,94 @@
|
||||||
- vars/main.yml
|
- vars/main.yml
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: set role_path and role_name
|
- name: Set role_path and role_name
|
||||||
set_fact:
|
ansible.builtin.set_fact:
|
||||||
role_path: "{{ lookup('env', 'PWD') }}"
|
role_path: "{{ lookup('env', 'PWD') }}"
|
||||||
role_name: "{{ lookup('env', 'PWD') | basename | regex_replace('ansible-role-') }}"
|
role_name: "{{ lookup('env', 'PWD') | basename | regex_replace('ansible-role-') }}"
|
||||||
|
|
||||||
- name: load meta/main.yml
|
- name: Load meta/main.yml
|
||||||
include_vars:
|
ansible.builtin.include_vars:
|
||||||
file: "{{ role_path }}/meta/main.yml"
|
file: "{{ role_path }}/meta/main.yml"
|
||||||
name: meta
|
name: meta
|
||||||
|
|
||||||
- name: check meta/preferences.yml
|
- name: Check meta/preferences.yml
|
||||||
stat:
|
ansible.builtin.stat:
|
||||||
path: "{{ role_path }}/meta/preferences.yml"
|
path: "{{ role_path }}/meta/preferences.yml"
|
||||||
register: preferencesymlstat
|
register: preferencesymlstat
|
||||||
|
|
||||||
- name: load meta/preferences.yml
|
- name: Load meta/preferences.yml
|
||||||
include_vars:
|
ansible.builtin.include_vars:
|
||||||
file: "{{ role_path }}/meta/preferences.yml"
|
file: "{{ role_path }}/meta/preferences.yml"
|
||||||
when:
|
when:
|
||||||
- preferencesymlstat.stat.exists | bool
|
- preferencesymlstat.stat.exists | bool
|
||||||
|
|
||||||
- name: check defaults/main.yml
|
- name: Check defaults/main.yml
|
||||||
stat:
|
ansible.builtin.stat:
|
||||||
path: "{{ role_path }}/defaults/main.yml"
|
path: "{{ role_path }}/defaults/main.yml"
|
||||||
register: defaultsmainyml
|
register: defaultsmainyml
|
||||||
|
|
||||||
- name: load defaults/main.yml
|
- name: Load defaults/main.yml
|
||||||
slurp:
|
ansible.builtin.slurp:
|
||||||
src: "{{ role_path }}/defaults/main.yml"
|
src: "{{ role_path }}/defaults/main.yml"
|
||||||
register: variables
|
register: variables
|
||||||
when:
|
when:
|
||||||
- defaultsmainyml.stat.exists | bool
|
- defaultsmainyml.stat.exists | bool
|
||||||
|
|
||||||
- name: check requirements.yml
|
- name: Check requirements.yml
|
||||||
stat:
|
ansible.builtin.stat:
|
||||||
path: "{{ role_path }}/requirements.yml"
|
path: "{{ role_path }}/requirements.yml"
|
||||||
register: check_requirements
|
register: check_requirements
|
||||||
|
|
||||||
- name: load requirements.yml
|
- name: Load requirements.yml
|
||||||
include_vars:
|
ansible.builtin.include_vars:
|
||||||
file: "{{ role_path }}/requirements.yml"
|
file: "{{ role_path }}/requirements.yml"
|
||||||
name: requirements
|
name: requirements
|
||||||
when:
|
when:
|
||||||
- check_requirements.stat.exists | bool
|
- check_requirements.stat.exists | bool
|
||||||
|
|
||||||
- name: load molecule/default/converge.yml
|
- name: Load molecule/default/converge.yml
|
||||||
slurp:
|
ansible.builtin.slurp:
|
||||||
src: "{{ role_path }}/molecule/default/converge.yml"
|
src: "{{ role_path }}/molecule/default/converge.yml"
|
||||||
register: example
|
register: example
|
||||||
|
|
||||||
- name: check molecule/default/prepare.yml
|
- name: Check molecule/default/prepare.yml
|
||||||
stat:
|
ansible.builtin.stat:
|
||||||
path: "{{ role_path }}/molecule/default/prepare.yml"
|
path: "{{ role_path }}/molecule/default/prepare.yml"
|
||||||
register: check_prepare
|
register: check_prepare
|
||||||
|
|
||||||
- name: load molecule/default/prepare.yml
|
- name: Load molecule/default/prepare.yml
|
||||||
slurp:
|
ansible.builtin.slurp:
|
||||||
src: "{{ role_path }}/molecule/default/prepare.yml"
|
src: "{{ role_path }}/molecule/default/prepare.yml"
|
||||||
register: prepare
|
register: prepare
|
||||||
when:
|
when:
|
||||||
- check_prepare.stat.exists | bool
|
- check_prepare.stat.exists | bool
|
||||||
|
|
||||||
- name: check molecule/default/verify.yml
|
- name: Check molecule/default/verify.yml
|
||||||
stat:
|
ansible.builtin.stat:
|
||||||
path: "{{ role_path }}/molecule/default/verify.yml"
|
path: "{{ role_path }}/molecule/default/verify.yml"
|
||||||
register: verify
|
register: verify
|
||||||
|
|
||||||
- name: load molecule/default/verify.yml
|
- name: Load molecule/default/verify.yml
|
||||||
slurp:
|
ansible.builtin.slurp:
|
||||||
src: "{{ role_path }}/molecule/default/verify.yml"
|
src: "{{ role_path }}/molecule/default/verify.yml"
|
||||||
register: verifyyml
|
register: verifyyml
|
||||||
when:
|
when:
|
||||||
- verify.stat.exists | bool
|
- verify.stat.exists | bool
|
||||||
|
|
||||||
- name: check molecule/default/defaults.yml
|
- name: Check molecule/default/defaults.yml
|
||||||
stat:
|
ansible.builtin.stat:
|
||||||
path: "{{ role_path }}/molecule/default/defaults.yml"
|
path: "{{ role_path }}/molecule/default/defaults.yml"
|
||||||
register: defaults
|
register: defaults
|
||||||
|
|
||||||
- name: load galaxy_id
|
- name: Load galaxy_id
|
||||||
shell: "set -o pipefail ; ansible-galaxy info robertdebock.{{ role_name }} | grep ' id: ' | awk '{print $NF}'"
|
ansible.builtin.shell:
|
||||||
|
cmd: "set -o pipefail ; ansible-galaxy info robertdebock.{{ role_name }} | grep ' id: ' | awk '{print $NF}'"
|
||||||
register: galaxy_id
|
register: galaxy_id
|
||||||
changed_when: no
|
changed_when: no
|
||||||
failed_when: no
|
failed_when: no
|
||||||
|
|
||||||
- name: create .github directories
|
- name: Create .github directories
|
||||||
file:
|
ansible.builtin.file:
|
||||||
path: "{{ role_path }}/{{ item }}"
|
path: "{{ role_path }}/{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
mode: "0755"
|
mode: "0755"
|
||||||
|
|
@ -106,8 +107,8 @@
|
||||||
- .github/workflows
|
- .github/workflows
|
||||||
- .github/ISSUE_TEMPLATE
|
- .github/ISSUE_TEMPLATE
|
||||||
|
|
||||||
- name: copy file
|
- name: Copy file
|
||||||
copy:
|
ansible.builtin.copy:
|
||||||
src: "{{ playbook_dir }}/files/{{ item.source }}"
|
src: "{{ playbook_dir }}/files/{{ item.source }}"
|
||||||
dest: "{{ role_path }}/{{ item.dest | default(item.source) }}"
|
dest: "{{ role_path }}/{{ item.dest | default(item.source) }}"
|
||||||
mode: "{{ item.mode | default('0644') }}"
|
mode: "{{ item.mode | default('0644') }}"
|
||||||
|
|
@ -127,10 +128,10 @@
|
||||||
loop_control:
|
loop_control:
|
||||||
label: "{{ item.source }}"
|
label: "{{ item.source }}"
|
||||||
|
|
||||||
- name: render file
|
- name: Render file
|
||||||
template:
|
ansible.builtin.template:
|
||||||
src: "{{ playbook_dir }}/templates/{{ item.source }}.j2"
|
src: "{{ playbook_dir }}/templates/{{ item.source }}.j2"
|
||||||
dest: "{{ role_path }}/{{ item.dest | default (item.source) }}"
|
dest: "{{ role_path }}/{{ item.dest | default(item.source) }}"
|
||||||
mode: "0644"
|
mode: "0644"
|
||||||
with_items:
|
with_items:
|
||||||
- source: ansible-lint
|
- source: ansible-lint
|
||||||
|
|
@ -159,7 +160,7 @@
|
||||||
loop_control:
|
loop_control:
|
||||||
label: "{{ item.source }}"
|
label: "{{ item.source }}"
|
||||||
|
|
||||||
- name: pre-commit install
|
- name: Install pre-commit
|
||||||
command: pre-commit install
|
ansible.builtin.command:
|
||||||
args:
|
cmd: pre-commit install
|
||||||
creates: .git/hooks/pre-commit
|
creates: .git/hooks/pre-commit
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ The default values for the variables are set in [`defaults/main.yml`](https://gi
|
||||||
- pip packages listed in [requirements.txt](https://github.com/{{ github_namespace }}/ansible-role-{{ role_name }}/blob/master/requirements.txt).
|
- pip packages listed in [requirements.txt](https://github.com/{{ github_namespace }}/ansible-role-{{ role_name }}/blob/master/requirements.txt).
|
||||||
|
|
||||||
{% if requirements is defined and requirements.roles is defined %}
|
{% if requirements is defined and requirements.roles is defined %}
|
||||||
## [Status of used roles](#status-of-requirements)
|
## [State of used roles](#state-of-used-roles)
|
||||||
|
|
||||||
The following roles are used to prepare a system. You can prepare your system in another way.
|
The following roles are used to prepare a system. You can prepare your system in another way.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,3 +51,10 @@ jobs:
|
||||||
image: {% raw %}${{ matrix.config.image }}{% endraw %}
|
image: {% raw %}${{ matrix.config.image }}{% endraw %}
|
||||||
|
|
||||||
tag: {% raw %}${{ matrix.config.tag }}{% endraw %}
|
tag: {% raw %}${{ matrix.config.tag }}{% endraw %}
|
||||||
|
|
||||||
|
{% if github_variables_mapping is defined %}
|
||||||
|
env:
|
||||||
|
{% for item in github_variables_mapping %}
|
||||||
|
{{ item.variable }}: {% raw %}${{ {%endraw %}{{ item.name }} {% raw %}}}{% endraw %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,12 @@ platforms:
|
||||||
pre_build_image: yes
|
pre_build_image: yes
|
||||||
provisioner:
|
provisioner:
|
||||||
name: ansible
|
name: ansible
|
||||||
|
{% if github_variables_mapping is defined %}
|
||||||
|
env:
|
||||||
|
{% for item in github_variables_mapping %}
|
||||||
|
{{ item.variable }}: "{% raw %}${{% endraw %}{{ item.variable }}{% raw %}}{% endraw %}"
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
{% if verify.stat.exists %}
|
{% if verify.stat.exists %}
|
||||||
verifier:
|
verifier:
|
||||||
name: ansible
|
name: ansible
|
||||||
|
|
|
||||||
|
|
@ -28,3 +28,8 @@ passenv =
|
||||||
image
|
image
|
||||||
tag
|
tag
|
||||||
DOCKER_HOST
|
DOCKER_HOST
|
||||||
|
{% if github_variables_mapping is defined %}
|
||||||
|
{% for item in github_variables_mapping %}
|
||||||
|
{{ item.variable }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue