在Ansible 2.7.11中,并希望使用模块waif_for和loops来测试与System Center Operations Manager(SCOM)服务器的连接。在
目前我正在使用一个任务
- name: "Test connection to SCOM_MGMT_SRV_PROD: {{ SCOM_MGMT_SRV_PROD }}"
wait_for:
host: "{{ item }}"
port: "{{ SCOM_PORT }}"
state: drained # Port should be open
delay: 0 # No wait before first check (sec)
timeout: 3 # Stop checking after timeout (sec)
active_connection_states: SYN_RECV
with_items:
- server1
- server2
- server3
- server4
ignore_errors: yes
tags: connectionTest,testSCOM
其中变量SCOM_PORT
设置为1270
,而{
这种方法是可行的,但我希望在一个中心位置维护一个服务器的变量列表,比如库存文件中的一个全局变量SCOM_MGMT_SRV_PROD
。在
可以通过
^{pr2}$但在任务中使用这种方法时
- name: "Test connection to SCOM_MGMT_SRV_PROD: {{ SCOM_MGMT_SRV_PROD }}"
wait_for:
host: "{{ item }}"
port: "{{ SCOM_PORT }}"
state: drained # Port should be open
delay: 0 # No wait before first check (sec)
timeout: 3 # Stop checking after timeout (sec)
active_connection_states: SYN_RECV
loop: "{{ [SCOM_MGMT_SRV_PROD] }}"
ignore_errors: yes
tags: connectionTest,testSCOM
我有个错误
failed: [host] (item=server1,server2,server3,server4) => ... /tmp/ansible_wait_for_payload_zNj2ac/__main__.py\", line 380, in _convert_host_to_hex\r\n File \"/tmp/ansible_wait_for_payload_zNj2ac/__main__.py\", line 354, in _convert_host_to_ip\r\nsocket.gaierror: [Errno -2] Name or service not known\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
对我来说,这表明模块wait_for
从列表中获得了完整的列表作为项,而不是一个服务器。所描述行为的原因似乎得到了@Checking wait_for in Ansible in a particular host group does not work的答案。在
你知道如何让模块wait_for
使用一个可变的服务器列表吗?在
其他组件
同时,我发现有可能Looping over inventory并且如果我使用
与库存文件中的组一起
^{pr2}$由于监控服务器不是由Ansible、Linux管理员等维护的基础设施的一部分,所以除了变量之外,我不想将它们包括在清单中。在
是否有其他选项可以循环访问一个可变的服务器列表。。。如果没有,可能有必要将此作为解决方案。在
在咨询了同事之后,发现清单中没有正确定义服务器列表,只是一个典型的语法错误。请参见Ansible, how to define a list in host inventory?。在
在文件中定义变量是必要的
而不是一个逗号分隔的字符串列表并使用for循环
^{pr2}$通过这样做,我意识到实际上调试消息也没有在列表上迭代。现在它正常工作了
^{3}$相关问题 更多 >
编程相关推荐