如何为整个项目设置条件,而不是单个项目

时间:2016-11-11 23:16:19

标签: ansible

我有这个:

vals <- unique(c(as.character(df1$V1), as.character(df2$V1)))
data.frame(vals, df1=is.na(match(vals, df1$V1)), df2=is.na(match(vals, df2$V1)))
#                                                                              vals   df1   df2
# 1                                                        A0A061ACH4;Q95Q10;Q9U1W6 FALSE FALSE
# 2                                                        A0A061ACL3;Q965I6;O76618 FALSE FALSE
# 3                                                 A0A061ACR1;Q2XN02;F5GUA3;Q22498 FALSE FALSE
# 4  H2FLH3;H2FLH2;A0A061ACT3;A0A061AE24;Q23551-2;Q23551;Q23551-4;Q23551-3;Q23551-5 FALSE FALSE
# 5                                                                      A0A061AL01 FALSE FALSE
# 6                                                                          C1P641 FALSE  TRUE
# 7                                                           A0A061AJJ3;A0A061AEA8 FALSE FALSE
# 8                                                                          Q86CZ7 FALSE FALSE
# 9                                                               Q22501;A0A061AE05 FALSE FALSE
# 10                                                                         Q27GQ4  TRUE FALSE

我得到了什么

www.mydomain/Accounts
www.mydomain/app1
www.mydomain/app2
www.mydomain/asp.netcoreApp1

如果when条件为假,我需要跳过整个任务。

1 个答案:

答案 0 :(得分:4)

使用when时,无法将with_items条件附加到整个任务。

但是你可以采用另一种方式 - 如果没有密钥则默认迭代器为空列表,如下所示:

- name: Add hosts to /etc/hosts
  lineinfile:
    dest=/etc/hosts
    line='{{ item.dest }} {{ item.src }}'
    regexp='.*{{ item.src }}.*'
    state=present
  with_items: "{{ hosts[service_name] | default([]) }}"

在这种情况下,如果您提供未知的服务名称,任务将有零项迭代 另请注意,我在with_items构造中删除了不必要的列表定义。