install.fairie/home/dot_local/share/ansible/.config/molecule/vagrant.create.yml
2023-07-16 01:40:26 -04:00

63 lines
2.6 KiB
YAML

---
# yamllint disable rule:line-length
- name: Update platforms
hosts: localhost
tasks:
- name: Filtering platforms list using the group defined in the MOLECULE_GROUP environment variable
set_fact:
molecule_yml: "{{ molecule_yml | combine({'platforms': (molecule_yml.platforms | selectattr('groups', 'contains', lookup('env', 'MOLECULE_GROUP')))}) }}"
when: ansible_env.MOLECULE_GROUP is defined
- name: Create
hosts: localhost
connection: local
gather_facts: false
no_log: '{{ molecule_no_log }}'
tasks:
- name: Create molecule instance(s)
vagrant:
instance_name: '{{ item.name }}'
instance_interfaces: '{{ item.interfaces | default(omit) }}'
instance_raw_config_args: '{{ item.instance_raw_config_args | default(omit) }}'
config_options: '{{ item.config_options | default(omit) }}'
platform_box: '{{ item.box | default("generic/alpine310") }}'
platform_box_version: '{{ item.box_version | default(omit) }}'
platform_box_url: '{{ item.box_url | default(omit) }}'
provider_name: '{{ molecule_yml.driver.provider.name | default(omit, true) }}'
provider_memory: '{{ item.memory | default(omit) }}'
provider_cpus: '{{ item.cpus | default(omit) }}'
provider_options: '{{ item.provider_options | default(omit) }}'
provider_raw_config_args: '{{ item.provider_raw_config_args | default(omit) }}'
provider_override_args: '{{ item.provider_override_args | default(omit) }}'
provision: '{{ item.provision | default(omit) }}'
state: up
register: server
with_items: '{{ molecule_yml.platforms }}'
loop_control:
label: '{{ item.name }}'
no_log: false
- name: Run tasks if there were changes while creating the molecule instance(s)
when: server.changed | bool
block:
- name: Populate instance config dict
set_fact:
instance_conf_dict:
instance: '{{ item.Host }}'
address: '{{ item.HostName }}'
user: '{{ item.User }}'
port: '{{ item.Port }}'
identity_file: '{{ item.IdentityFile }}'
with_items: '{{ server.results }}'
register: instance_config_dict
- name: Convert instance config dict to a list
set_fact:
instance_conf: "{{ instance_config_dict.results | map(attribute='ansible_facts.instance_conf_dict') | list }}"
- name: Dump instance config
copy:
content: '{{ instance_conf | to_json | from_json | to_yaml }}'
dest: '{{ molecule_instance_config }}'
mode: 0600