【问题标题】:How to call Azure CLI functions from Ansible如何从 Ansible 调用 Azure CLI 函数
【发布时间】:2018-07-12 14:58:38
【问题描述】:
【问题讨论】:
标签:
azure
ansible
botframework
【解决方案1】:
由于 cmets 不支持格式化,这里是提示:
我像这样使用> 使其更具可读性。
---
- name: RENAME {{ DB_DATABASE_NAME }} DATABASE on {{ DB_SRC_SQLSERVER_NAME }} SQLSERVER to {{ DB_DATABASE_NEW_NAME }} DATABASE
command: >
az sql db rename
--resource-group "{{ DB_RESOURCEGROUP_NAME }}"
--server "{{ DB_SQLSERVER_NAME }}"
--name "{{ DB_DATABASE_NAME }}"
--new-name "{{ DB_DATABASE_NEW_NAME }}"
查看文档:https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html
【解决方案2】:
您可以使用 Ansible shell 模块来调用 Azure CLI 和其他命令,就像您在命令行中工作一样,然后在 Ansible 中捕获输出以供在 playbook 中下游使用。
我不使用 Azure,但我使用 AWS。这是一个在 Ansible 中使用 AWS CLI 并捕获输出以用于下一个任务的示例。
---
- name: Create / Delete IAM user with keys
hosts: localhost
connection: local
vars:
username: foo
tasks:
- name: Create user with keys
iam:
iam_type: user
name: "{{ username }}"
state: present
access_key_state: create
key_count: 2
- name: Get all the access keys
shell: aws iam list-access-keys --user-name {{ username }} --query 'AccessKeyMetadata[*].AccessKeyId'
register: access_key_list
- name: Delete each key
shell: aws iam delete-access-key --access-key-id {{ item }} --user-name {{ username }}
loop: "{{ access_key_list.stdout | from_json }}"
- name: Delete user
iam_user:
name: "{{ username }}"
state: absent
注意第二个任务,我们将命令输出注册到变量access_key_list 中。然后,您可以将该变量的内容转换为 JSON,并在以后的任务中使用它。
由于命令输出有各种形式,您可以使用debug 模块查看变量,以便决定如何处理它。
- name: Output variable contents
debug:
msg: "{{ access_key_list }}"