【问题标题】:Calling Terraform from Ansible从 Ansible 调用 Terraform
【发布时间】: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,而不是相反。我已经看到它按照你的方式完成了,但只是非常糟糕。

标签: azure ansible terraform


【解决方案1】:

从错误信息来看,无法正确设置 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"
}

参考:https://www.terraform.io/docs/providers/azurerm/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-12
    • 2021-07-11
    • 2021-12-12
    • 2020-06-12
    • 1970-01-01
    • 2020-05-28
    • 2022-07-13
    • 2021-03-19
    相关资源
    最近更新 更多