如何在Molecule / TestInfra测试中获取所有主机的IP /主机名?

时间:2019-08-06 20:11:09

标签: android molecule

我的角色很简单,它只获取剧本中所有主机的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

0 个答案:

没有答案