【发布时间】:2019-06-23 02:47:30
【问题描述】:
当我使用从 shell 脚本直接调用的 terraform 模块时,它可以正常工作。
但是,当我包装从 ansible 任务调用的相同 shell 脚本时,它会失败。验证了正在传递的 ARM 凭据的所有环境变量。一切都很好,但不知何故没有成功将 terraform 作为 ansible 任务运行。
以下是我得到的错误
错误刷新状态:发生 1 个错误:\n\n* module.oracle_server.provider.azurerm:无法列出提供程序注册状态,这可能是由于凭据无效或服务主体没有有权使用资源管理器 API,Azure 错误:azure.BearerAuthorizer#WithAuthorization: 无法刷新令牌以请求 https://management.azure.com/subscriptions/****/providers?api-version=2016-02-01: StatusCode=0 - - 原始错误:adal:
由编辑更新
请在此处更新您的 ansible 代码,而不是在评论中,丢失所有格式。
- name: Terraform Module
terraform:
project_path: "{{ terraform_module_path }}"
state: "{{ item.infra_state }}"
variables:
platform: "{{ platform }}"
application_name: "{{ application_name }}"
environment: "{{ env }}"
【问题讨论】:
-
在ansible的terraform模块中也试过,下面是调用ansible的terraform模块时的代码sn-p-name: Terraform Module terraform: project_path: "{{ terraform_module_path }}" state: "{ { item.infra_state }}" 变量:平台:"{{ platform }}" application_name:"{{ application_name }}" 环境:"{{ env }}"
-
你得到了很多反对意见,我认为大多数人会在 terraform 中使用 ansible,而不是相反。我已经看到它按照你的方式完成了,但只是非常糟糕。