47 lines
1.8 KiB
YAML
47 lines
1.8 KiB
YAML
---
|
|
# playbook file used for creating the instances and storing data in instance-config
|
|
- name: Create
|
|
hosts: localhost
|
|
gather_facts: false
|
|
connection: local
|
|
tasks:
|
|
- name: Create instances
|
|
vagrant:
|
|
instances: "{{ molecule_yml.platforms }}"
|
|
default_box: "{{ molecule_yml.driver.default_box | default('debian/bookworm64') }}"
|
|
provider_name: "{{ molecule_yml.driver.provider.name | default(omit, true) }}"
|
|
provision: "{{ molecule_yml.driver.provision | default(omit) }}"
|
|
cachier: "{{ molecule_yml.driver.cachier | default(omit) }}"
|
|
parallel: "{{ molecule_yml.driver.parallel | default(omit) }}"
|
|
state: up
|
|
register: server
|
|
- name: VMs info
|
|
ansible.builtin.debug:
|
|
msg: "{{ server.results }}"
|
|
- name: Create molecule instances configuration
|
|
when: server is changed # noqa no-handler
|
|
block:
|
|
- name: Populate instance config dict
|
|
ansible.builtin.set_fact:
|
|
instance_conf_dict:
|
|
{
|
|
"instance": "{{ item.Host }}",
|
|
"address": "{{ item.HostName }}",
|
|
"user": "{{ item.User }}",
|
|
"port": "{{ item.Port }}",
|
|
"identity_file": "{{ item.IdentityFile }}",
|
|
}
|
|
loop: "{{ server.results }}"
|
|
loop_control:
|
|
label: "{{ item.Host }}"
|
|
register: instance_config_dict
|
|
|
|
- name: Convert instance config dict to a list
|
|
ansible.builtin.set_fact:
|
|
instance_conf: "{{ instance_config_dict.results | map(attribute='ansible_facts.instance_conf_dict') | list }}"
|
|
|
|
- name: Dump instance config
|
|
ansible.builtin.copy:
|
|
content: "{{ instance_conf | to_json | from_json | to_yaml }}"
|
|
dest: "{{ molecule_instance_config }}"
|
|
mode: "0600"
|