如何从另一个模块刷新远程状态

时间:2019-06-17 12:20:37

标签: terraform

通过使用terraform来寻找建议和一些一般性指导,在我的情况下,是通过服务完全分割状态。

这是目录结构如何维护的示例。

global
├── iam
│   ├── .tf files
├── kms
│   ├── .tf files
└── organization
    └── root
        ├── .tf files
        ├── project_1_OU
        |   └── .tf files
        ├── project_2_OU
        |   └── .tf files
        └── project_3_OU
            └── .tf files

每个状态都在服务文件夹中。例如: global / organization / root具有组织中所有帐户的列表,控制资源访问管理器共享,全局级别的SCP等。 输出之一是下一个返回所有帐户列表的输出。

output "root_organization_accounts" {
  value = "${data.template_file.organization_accounts_list.*.rendered}"
}

另一方面,KMS服务使用远程状态中的此输出变量来通过新帐户列表更新其策略

我正在尝试的场景:

  • 创建全局/组织/根/ project_x_OU
    • 这会在Root下使用子帐户,SCP等创建所需的OU结构。
    • 帐户列表现在有所不同,需要刷新(在上面的级别中注明)!
  • 现在需要手动
  • terraform apply/refresh来更改global / organization / root的输出(并且没有报告要更改的内容,在这种情况下是正常的-这只是输出更改)
  • 现在,我们应该在全球/公里级别执行terraform apply,以便使用添加的新帐户来更新政策

简而言之, global / organization / root 状态在 global / organization / root / project_x_OU global / kms 中被用作只读状态>水平。

global / organization / root / project_x_OU 中的更改应触发 global / organization / root 级别的状态刷新,从而使 global / kms 级别可以使用新数据进行更新。

我的问题:

  • 触发另一个远程状态的刷新的最佳方法是什么 如果我们知道它将改变,我们需要改变它,那么另一个 模块可以更新吗?
  • 我做错什么了吗?
  • 我应该在全局/组织/根目录级别创建一个伪造/未使用的变量,并使用每个新帐户对其进行递增以强制更改吗,甚至可能吗?
  • 还有其他建议以及如何在您的地方完成?

我将Atlantis作为一种CI / CD解决方案与普通地形https://www.runatlantis.io/结合使用,并且它不希望执行任何更改(在全局/组织/根目录下,这种情况)

0 个答案:

没有答案