【问题标题】:How to call Azure CLI functions from Ansible如何从 Ansible 调用 Azure CLI 函数
【发布时间】:2018-07-12 14:58:38
【问题描述】:

我正在尝试为机器人框架创建 Ansible 剧本。从外观上看,REST API 不能用于创建机器人,但可以从 Azure CLI https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-tools-az-cli?view=azure-bot-service-3.0 获得。

有没有办法从 Ansible 调用 Azure CLI 函数,因为创建资源模块无法处理它?

【问题讨论】:

    标签: 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 }}"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多