2017-07-15 48 views
1

的输出,我Ansible的新用户,我试图看我怎么可以使用Ansible执行自动化任务。我想连接到多个服务器和猫文件,以获得项目的列表(list_2)。然后我想检查项目的该列表是另一个列表(LIST_1)。然后我想打印一张表,显示list_2中的哪些项目在list_1中?有没有一种方法可以通过Ansible完成而不需要推送脚本?下面Python的Ansible评估任务

收集两份名单,并将它们放入一个寄存器,但我不知道该如何评价,看是否在list_2的项目都包含在LIST_1。

list_1 = 'red, green, yellow, blue, orange, purple' 
list_2 = 'green, blue, purple' 

hosts: myhost 

tasks: 
- name: get list 1 
    shell: "cat /dir/list_1" 
    register: list_1 

tasks: 
- name: get list 2 
    shell: "cat /dir/list_2" 
    register: list_2 

所需的输出:

list_1 list2inlist1 
red  No 
green Yes 
blue Yes 
orange No 
purple Yes 

回答

1

这里的东西,将获得接近所需输出

- name: print intersection 
    debug: 
    msg: "{{ item }}" 
    with_items: "{{ list_1.stdout.split(', ') }}" 
    when: item in list_2.stdout.split(', ') 

如果你真的想相同的语法,你需要的输出,我认为一个模板会是最简单的方法。

在您的任务:

- name: print intersection template 
    template: 
    src: intersection.j2 
    dest: /some_dir/intersection.txt 

在intersection.j2:

list1 list2inlist1 
{% for item in list_1.stdout.split(', ') %} 
{% if item in list_2.stdout.split(', ') %} 
{{ item }} YES 
{% else %} 
{{ item }} NO 
{% endif %} 
{% endfor %}