2017-10-11 119 views
0

这是一个相当广泛的问题,因为我无法找到任何具体的文档或使用我要问的人的例子,所以请原谅我。在Ansible中使用Azure标签作为剧本

我已经创建了一个Azure的ARM模板,并能成功使用azure_rm.py动态库存通过Ansible部署它:https://github.com/ansible/ansible/blob/devel/contrib/inventory/azure_rm.py

我对Ansible文档的网站,我可以使用AZURE_TAGS =读,我可以假设,利用在部署机器时创建的Azure标签,以便我可以使用剧本仅影响我定义的标记机器。

Azure的文档:http://docs.ansible.com/ansible/latest/guide_azure.html

的想法是对某些标签的机器上运行剧本更新/修改其设置。很像运行在静态Ansible主机文件中定义的组。

也许我有这个错误,这不是我能做的,也可能是这样,但对于我的生活,我找不到任何人在剧本中使用azure_tags =的例子。即使是在剧本中定义,我也不知道,或者它是一个论点。

以此为指导,第12步:http://codeheaven.io/15-things-you-should-know-about-ansible/

我可以看到这个人是如何使用的主机参数标签选项,我已经做到了这一点,但机器检查时,未发现反对动态库存。

任何人都可以请指导我在正确的方向,或更好的,给我一个这些标签系统是如何工作的例子?

回答

0

对于任何关心,或像我一样卡住的人,这里就是答案。

下面的示例不运行剧本,而是针对与给定选择的主机相匹配的主机运行Ansible ping命令。

选择所有虚拟机在Azure订阅:

ansible azure -i ./azure_rm.py -m win_ping 

在某一地区/地点名称选择所有虚拟机(我们在ukwest和uksouth主机 - 从先前创建的资源组服用):

ansible ukwest -i ./azure_rm.py -m win_ping 

一个名为SERVERROLE标签,选择所有虚拟机的值设置为Web服务器

ansible ServerRole_WebServer -i ./azure_rm.py -m win_ping 

当部署虚拟机,我使用的某些标记来识别它们,这里是用反对“AnsibleVM1”

# 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