【问题标题】:Execute ansible playbook on remote control node after terraform applyterraform apply 后在远程控制节点上执行 ansible playbook
【发布时间】:2020-11-20 21:23:42
【问题描述】:

我有一个 terraform 项目,它提供了一个复杂的基础设施,其中包含一个充当 ansible 控制节点的节点。

在apply命令执行完成后,有没有办法在远程控制节点上触发ansible playbook的执行?

我观看了 Terraform 的演讲,他们谈论在 terraform 流程中集成 ansible,但他们使用 remote-exec 配置器来触发远程机器本身中的剧本,这在严重的 prod 环境中是无用的用例。

我想在terraform apply 之后执行剧本有两个原因:

  • 我想确保整个基础架构已完全部署,否则它可能会由于明显的原因而失败。 看起来他们没有考虑到这一点,因为 remote-exec 会在实例创建后立即执行。
  • 由于我是从 terraform 状态推断出 ansible 库存,因此我需要完全部署环境(顺便说一句,我正在以一种非常老套的方式推断状态)

另外,我想就如何在应用后将 ansible 剧本加载到远程控制节点中提出一些建议,有最佳实践吗?谢谢!

【问题讨论】:

    标签: ansible terraform apply inventory


    【解决方案1】:

    也许您可以输出远程控制节点的数据(如 dns 或公共或私有 ip)以连接到该远程控制节点并使用任何脚本语言(如 python)获取输出,然后远程执行您的 ansible 脚本控制节点。

    import os
    import json
    stream = os.popen('terraform output')
    output = json.load(stream.read())
    

    然后解析 json 输出,得到远程控制器的 ssh 连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 2022-07-13
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      相关资源
      最近更新 更多