我的角色很简单,它只获取剧本中所有主机的ip /主机名,并更新/ etc / hosts文件。
- name: Add the inventory into /etc/hosts
lineinfile:
dest: /etc/hosts
regexp: '.*{{ item }}$'
line: "{{ hostvars[item]['ansible_default_ipv4']['address'] }} {{item}}"
state: present
when: hostvars[item]['ansible_facts']['default_ipv4'] is defined
with_items:
- "{{ groups['all'] }}"
become: true
我也想对此进行分子测试。我对Molecular / testinfra有点熟悉,并且知道如何进行测试循环以及如何检查文件的内容等。我不知道如何从该测试中获取ip /主机名,然后使用它们来验证它们在/ etc / hosts文件中。
v = host.ansible.get_variables()
我想其中可能包含我需要的信息,但是我看不到从分子/测试蛋白中打印出该信息的方法,因此我可以实际看到它。如果我真的可以看到ip,我知道我可以像下面这样使用它们:
def test_conf_custom(host):
conf = host.file(
'/etc/hosts'
).content
expected = [
b'hostname',
b'443',
]
for line in expected:
assert line in conf