Reputation: 10470
I have this task definition for a Role I have written a molecule unit test for.
---
- name: Debug JDBC lines
ansible.builtin.debug:
msg: "jdbc_connection_string_np{{ my_idx }}=jdbc:mysql://{{ item }}:3306/np"
with_items: "{{ groups['db'] }}"
loop_control:
index_var: my_idx
when:
- asp_srv is defined
- anp_pkg_srv is defined
- anp_pkg_srv in asp_srv
When I run molecule test
I get this error:
TASK [bern.numberprovisioning : Debug JDBC lines] *********************
fatal: [centos7]: FAILED! => {"msg": "'dict object' has no attribute 'db'"}
I was hoping for output close to this:
jdbc_connection_string_np0=jdbc:mysql://mockdb-host1:3306/np
jdbc_connection_string_np1=jdbc:mysql://mockdb-host2:3306/np
Here is the provisioner
section. I think I need to put something there, but whatever I do I cause errors.
provisioner:
name: ansible
inventory:
host_vars:
centos7:
asp_srv: "all,figapiv2,nisioning,ocessor"
Upvotes: 1
Views: 609
Reputation: 10470
It turns out that I did not need to change the provisioner
section of my molecule/default/molecule.yml
file. I needed to set my platforms
section to:
platforms:
- name: centos7
image: ghcr.io/easybuilders/centos-7.9:latest
tmpfs:
- /run
- /tmp
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
command: "/usr/sbin/init"
privileged: true
pre_build_image: true
- name: mockdb1
image: ghcr.io/easybuilders/centos-7.9:latest
groups:
- db
- name: mockdb2
image: ghcr.io/easybuilders/centos-7.9:latest
groups:
- db
The above does what I need, but it is kind of annoying that I have to specify the image
for mockdb1 & mockdb2.
Upvotes: 0
Reputation: 631
The inventory molecule runs against is defined under the platforms
key of the molecule.yml
file.
Example taken from the documentation
platforms:
- name: instance-1
groups:
- group1
- group2
children:
- child_group1
Make sure to put gather_facts: false
in your converge.yml
and verify.yml
if you need ansible facts to be populated.
Upvotes: 1