Ansible 使用一个额外的变量设置hosts值';I don’我不能胜任我的职责
我的ansible剧本有问题: 我的剧本由5个角色组成,如下所示:Ansible 使用一个额外的变量设置hosts值';I don’我不能胜任我的职责,ansible,ansible-2.x,Ansible,Ansible 2.x,我的ansible剧本有问题: 我的剧本由5个角色组成,如下所示: --- - name: Création de la machine virtuelle {{ Host_Name }} à l'aide du template {{ vcenter_template }} hosts: localhost gather_facts: no roles: - roles/VMWare/deploy tags: deploy - name: Configuration de
---
- name: Création de la machine virtuelle {{ Host_Name }} à l'aide du template {{ vcenter_template }}
hosts: localhost
gather_facts: no
roles:
- roles/VMWare/deploy
tags: deploy
- name: Configuration de l'échange de clé de root@lrtstfpe vers root@{{ Host_Name }}
hosts: localhost
gather_facts: no
roles:
- roles/VMWare/pre_config
tags: pre_config
- name: Opérations post install
hosts: '{{ Host_Name }}'
gather_facts: no
roles:
- roles/VMWare/post_install
tags: post_install
- name: Ajout du pointeur DNS sur le controleur de domaine wpsrvctldom1.uem.lan
hosts: DNS
gather_facts: no
roles:
- roles/DNS/
tags: DNS
- name: Ajout du mot de passe Keepass de l'utilisateur root de la machine
hosts: DNS
gather_facts: no
roles:
- roles/Keepass/
tags: keepass
ansible-playbook playbook/deployVM.yml --extra-vars "Host_Name=toto"
我使用以下命令启动此剧本:
---
- name: Création de la machine virtuelle {{ Host_Name }} à l'aide du template {{ vcenter_template }}
hosts: localhost
gather_facts: no
roles:
- roles/VMWare/deploy
tags: deploy
- name: Configuration de l'échange de clé de root@lrtstfpe vers root@{{ Host_Name }}
hosts: localhost
gather_facts: no
roles:
- roles/VMWare/pre_config
tags: pre_config
- name: Opérations post install
hosts: '{{ Host_Name }}'
gather_facts: no
roles:
- roles/VMWare/post_install
tags: post_install
- name: Ajout du pointeur DNS sur le controleur de domaine wpsrvctldom1.uem.lan
hosts: DNS
gather_facts: no
roles:
- roles/DNS/
tags: DNS
- name: Ajout du mot de passe Keepass de l'utilisateur root de la machine
hosts: DNS
gather_facts: no
roles:
- roles/Keepass/
tags: keepass
ansible-playbook playbook/deployVM.yml --extra-vars "Host_Name=toto"
在我的任务名称中正确解释了我的变量,但是跳过了我的第三个角色,该角色使用此变量的值在相应的主机上执行操作,Ansible说“跳过:没有匹配的主机。”
但是当我用“--tags post\u install
”重新启动我的剧本时,我只扮演这个角色有效强>
---
- name: Création de la machine virtuelle {{ Host_Name }} à l'aide du template {{ vcenter_template }}
hosts: localhost
gather_facts: no
roles:
- roles/VMWare/deploy
tags: deploy
- name: Configuration de l'échange de clé de root@lrtstfpe vers root@{{ Host_Name }}
hosts: localhost
gather_facts: no
roles:
- roles/VMWare/pre_config
tags: pre_config
- name: Opérations post install
hosts: '{{ Host_Name }}'
gather_facts: no
roles:
- roles/VMWare/post_install
tags: post_install
- name: Ajout du pointeur DNS sur le controleur de domaine wpsrvctldom1.uem.lan
hosts: DNS
gather_facts: no
roles:
- roles/DNS/
tags: DNS
- name: Ajout du mot de passe Keepass de l'utilisateur root de la machine
hosts: DNS
gather_facts: no
roles:
- roles/Keepass/
tags: keepass
ansible-playbook playbook/deployVM.yml --extra-vars "Host_Name=toto"
我不知道为什么当我发布整个剧本时它不起作用,而当我只发布第三个角色时。。它起作用了
有人能帮我吗
Thx:)
PS:由于第二个角色,我将我的{{Host\u Name}}
机器添加到/etc/ansible/hosts
文件中:
[VM]
toto
Ansible在启动playbook之前读取/etc/Ansible/hosts
或任何其他清单文件。在演出期间(或其间)不会再读。您正在播放期间填充主机文件,然后尝试在下一个播放中读取;这是行不通的。您必须使用将动态创建的主机添加到playbook的内存资源清册中
如果您不想显式地添加\u主机
,那么还有另一种方法可以。在播放之前,您必须调用元模块刷新库存,这需要更新的库存
示例:
- name: Re-read inventory files
meta: refresh_inventory
“PS:由于第二个角色,我将我的{{Host_Name}}计算机添加到/etc/ansible/hosts文件中”这是否意味着在第二个角色运行之前,ansible不知道toto
主机名?因为如果是这样的话,我想你还需要用它来教内存中的ansible关于主机谢谢你@Kanwar Saad,你的例子解决了我的问题!很高兴这有帮助。。你也能接受我的回答吗