ansible-playbook 使用参数传递变量到yml文件中的hosts出现主机变量读取不全,仅读取第一个主机问题
首先演示问题:
[root@localhost scripts]
---
- hosts: '{{ srvs }}'
remote_user: root
tasks:
- name: 测试网络连通性
ping:
[root@localhost scripts]
PLAY [172.16.0.241] ************************************************************************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************************************
ok: [172.16.0.241]
TASK [测试网络连通性] *****************************************************************************************************************************************************************************************
ok: [172.16.0.241]
PLAY RECAP *********************************************************************************************************************************************************************************************
172.16.0.241 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
如上图,传递变量srvs包含两台主机172.16.0.241, 172.16.0.242,但是ansible执行时仅获取到第一台的ip值执行
解决办法一:不使用key:value形式,直接使用 ‘=’ 进行赋值
[root@localhost scripts]
PLAY [172.16.0.241,172.16.0.242] ****************************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************************
ok: [172.16.0.242]
ok: [172.16.0.241]
TASK [测试网络连通性] **********************************************************************************************************************************************************
ok: [172.16.0.241]
ok: [172.16.0.242]
PLAY RECAP **************************************************************************************************************************************************************
172.16.0.241 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.16.0.242 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
解决办法二:使用key:value形式,value写成数组list的形式
[root@localhost scripts]
PLAY [[u'172.16.0.241', u'172.16.0.242']] *******************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************************
ok: [172.16.0.242]
ok: [172.16.0.241]
TASK [测试网络连通性] **********************************************************************************************************************************************************
ok: [172.16.0.242]
ok: [172.16.0.241]
PLAY RECAP **************************************************************************************************************************************************************
172.16.0.241 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
172.16.0.242 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|