Azure 从Ansible调用Terraform

Azure 从Ansible调用Terraform,azure,ansible,terraform,Azure,Ansible,Terraform,当我使用从shell脚本直接调用terraform模块时,它工作得很好 但当我包装从ansible任务调用的同一个shell脚本时,它失败了。已验证正在传递的ARM凭据的所有环境变量。一切都很好,但不知何故,作为一项可靠的任务运行terraform并没有取得任何成功 下面是我得到的错误 刷新状态时出错:出现1个错误:\n\n*module.oracle\u server.provider.azurerm:无法列出提供程序注册状态,可能是由于凭据无效或服务主体没有使用资源管理器API的权限,Azu

当我使用从shell脚本直接调用terraform模块时,它工作得很好

但当我包装从ansible任务调用的同一个shell脚本时,它失败了。已验证正在传递的ARM凭据的所有环境变量。一切都很好,但不知何故,作为一项可靠的任务运行terraform并没有取得任何成功

下面是我得到的错误

刷新状态时出错:出现1个错误:\n\n*module.oracle\u server.provider.azurerm:无法列出提供程序注册状态,可能是由于凭据无效或服务主体没有使用资源管理器API的权限,Azure错误:Azure.BeareAuthorizerWithAuthorization:未能刷新令牌以请求****/providers?api版本=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 }}"

从错误消息中,它无法正确设置azure凭据,因此请检查是否包含提供商代码

# Configure the Azure Provider
provider "azurerm" {
  # whilst the `version` attribute is optional, we recommend pinning to a given version of the Provider
  version = "=1.21.0"
}

参考:

在ansible的terraform模块中也尝试过,下面是调用ansible的terraform模块时的代码片段-名称:terraform模块terraform:project_path:{{terraform_module_path}}状态:{{item.infra_state}}变量:平台:{{platform platform}应用程序名称:{{application_name}环境:{{env}}你得到了很多反对票,我认为大多数人会在地形中使用ansible,而不是相反。我见过你这样做,但真的很糟糕。