gpt4 book ai didi

ansible - 如何让 .stdout_lines/array 中的每一行匹配一个变量

转载 作者:行者123 更新时间:2023-12-02 10:01:50 25 4
gpt4 key购买 nike

我正在尝试编写 Ansible 剧本。需要帮助编写其中一项任务。如何在名为 CONF T 的任务中正确编写“when:”?

我的一个寄存器将包含一个数组:

{
"current_ntp_servers.stdout_lines": [
"ntp server 10.190.248.248",
"ntp server 10.190.248.8",
"ntp server 10.190.248.16",
"ntp server 10.190.248.1",
"ntp server 10.190.248.9",
"ntp server 10.190.248.17",
"ntp server 10.190.248.2",
"ntp server 10.190.248.10",
"ntp server 10.190.248.34",
"ntp server 10.190.248.98",
"ntp server 10.190.248.18",
"ntp server 10.180.248.3"
]
}

我还有一个预定义的变量:

vars:
ntp_server: "ntp server 10.190.248.248"

我希望当数组中的任何项目与预定义变量不匹配时运行任务。但是,变量可以匹配数组中的任何行,如果其他行不匹配,任务仍然需要运行。

即使数组中存在 ntp_server,如果其他数组项不匹配,我仍然需要运行该任务。所以我必须使用数组项来匹配它并检查每个项是否与 ntp_server 匹配。如果未匹配,则运行该任务。但即使有多个不匹配,任务也只需要运行一次。

名为“CONF T”的任务和关联的“when:”对我不起作用。名为“删除 ntp 服务器”的任务工作正常。

---

- hosts: switches
gather_facts: false
connection: network_cli
vars:
ntp_server: "ntp server 10.190.248.248"


tasks:
- name: "sh run | s ntp server"
cli_command:
command: sh run | s ntp server
register: current_ntp_servers

- name: THESE ARE THE CURRENT NTP SERVERS CONFIGURED ON THIS DEVICE BEFORE ANY CHANGES
debug:
var: current_ntp_servers.stdout_lines

- name: REMOVE NTP SERVERS CONF T
block:
- name: CONF T
when: "(current_ntp_servers.stdout_lines not in ntp_server)"
cli_command:
command: conf t
register: conf_t
- debug:
var: conf_t
- name: remove ntp servers
with_items: "{{ current_ntp_servers.stdout_lines }}"
when: "(item != ntp_server)"
cli_command:
command: "no {{item}}"
register: remove_ntp_output.stdout_lines

Ansible 对我来说是新的。我是一名拥有 10 年经验的网络工程师,但没有编码经验。

最佳答案

Q: "I want a task to run when any of the items in the array DO NOT match the predefined variable."

以下条件即可完成工作

- debug:
msg: This task will run
when: current_ntp_servers.stdout_lines|
reject('match', ntp_server)|
list|
length > 0

测试匹配可以更改为等于搜索 取决于用例。

关于ansible - 如何让 .stdout_lines/array 中的每一行匹配一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57598400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com