我想将一些 Terraform 资源从一个存储库移动到另一个存储库。我认为最简单的方法是terraform import在一个存储库中和terraform rm另一个存储库中。
我terraform state list可以获取资源列表,但没有它们的 ID。我认为我可以将该输出与terraform state show但它非常慢并且我必须从 HCL 解析出 ID。不幸的是没有 JSON 输出。
我可以terraform show -json获取 JSON 格式的整个状态,但可能会有很多模块嵌套,因此解析也不是微不足道的。
还有其他选择吗?
编辑1:
terraform show -json对于我正在处理的相对较小的存储库,我有 2000 行(太多了,无法确定格式),开头为:
{
"format_version": "0.1",
"terraform_version": "0.14.9",
"values": {
"root_module": {
"child_modules": [
{
"address": "module.cloudtrail",
"child_modules": [
{
"address": "module.cloudtrail.module.cloudtrail_bucket",
"resources": [
{
Run Code Online (Sandbox Code Playgroud)
我认为至少还有一层嵌套child_modules。我认为资源可以在各个层面上。可以从中获得列表,但我认为这不是微不足道的。
我刚刚意识到,每次我做某件事时,我都会得到我想要的东西terraform plan。但我不想要这个计划,所以我可以这样做terraform refresh | sed s'|: Refreshing state... \[id=| |' | sed s'|\]$||'。虽然有点慢,但我得到了资源列表及其 ID。
我什至可以添加sed s'|^|terraform import |' > import.sh和导入所有资源(或编辑后的一部分)bash import.sh
| 归档时间: |
|
| 查看次数: |
4214 次 |
| 最近记录: |