这是一个相当广泛的问题,因为我无法找到任何具体的文档或人们使用我要问的内容的例子,所以请原谅我。
我创建了一个Azure ARM模板,并成功地使用azure_rm.py动态库存通过Ansible进行部署:https://github.com/ansible/ansible/blob/devel/contrib/inventory/azure_rm.py
我已经在Ansible docs网站上看到我能够使用AZURE_TAGS =,我可以假设,利用部署机器时创建的Azure标签,这样我就可以使用playbooks只影响我定义的那些标记机器。 / p>
Azure文档:http://docs.ansible.com/ansible/latest/guide_azure.html
我们的想法是在某些已标记的计算机上运行playbooks来更新/修改其设置。就像在静态Ansible主机文件中定义的组运行一样。
也许我把这一切都搞错了,这不是我能做的,或者也许是这样,但对于我的生活,我无法找到任何在剧本中使用azure_tags =的人的例子。我不知道即使它是在剧本中定义的,也不是它的论点。
以此为指导,步骤12:http://codeheaven.io/15-things-you-should-know-about-ansible/
我可以看到这个人如何在hosts参数中使用了tag选项,我已经完成了这项工作,但是在检查动态库存时找不到该机器。
任何人都可以指导我朝正确的方向发展,或者更好的是,给我一个这些标签系统如何运作的例子?
答案 0 :(得分:2)
对于那些关心或被困的人来说,这就是答案。
以下示例不是运行playbooks,而是针对与给定主机选择匹配的主机运行Ansible ping命令。
选择Azure订阅中的所有VM:
ansible azure -i ./azure_rm.py -m win_ping
选择给定区域/位置名称中的所有虚拟机(我们在ukwest和uksouth中拥有主机 - 取自先前创建的资源组):
ansible ukwest -i ./azure_rm.py -m win_ping
选择名为ServerRole的标记设置为值WebServer
的所有VMansible ServerRole_WebServer -i ./azure_rm.py -m win_ping
在部署虚拟机时,我使用了某些标签来识别它们,这里是一个使用Playbook来对抗'AnsibleVM1'的'displayName'标签的示例
# Run post build scripts on machines taggedd with AnsibleVM1 from commad line variable with "{{ hosts }}"
# ansible-playbook scripts.yml -i azure_rm.py --extra-vars "hosts=displayName_AnsibleVM1" --ask-vault-pass
- hosts: "{{ hosts }}"
gather_facts: no
vars_files:
- ./vars/vault.yml
- ./vars/vars.yml
tasks:
- include_vars: vault.yml
- name: formatDataDisk script
script: ./files/formatDataDisk.ps1
- name: prepMachine script
script: ./files/prepMachine.ps1
- name: Reboot machine to apply scripts
win_reboot:
这是我用来运行它的命令行。请注意,变量包含在命令行中,因此我可以动态更改名称:
ansible-playbook scripts.yml -i azure_rm.py --extra-vars "hosts=displayName_AnsibleVM1" --ask-vault-pass