_この問題は、もともと@alanbchristieによってhashicorp / terraform# 17040として開かれました。 プロバイダーの分割の結果として、ここに移行されました。 問題の元の本文は以下のとおりです。_
do_not_destroy
引数をlocal_file
構成アイテムに追加して、 terraform destroy
が実行されたときに、生成されたローカルファイルがそのまま残るようにすることは可能でしょうか? 理由? 破棄後のAnsibleスクリプトの動的コンテンツを作成しましたが、このプレイブック用にローカルで生成されたファイルのコンテンツを保持しておくと便利です。
つまり、これを行う機能を提供することは許容されますか...
resource "local_file" "cleanup_vars" {
content = "${data.template_file.cleanup_vars.rendered}"
filename = "../../../ansible/aws-cleanup/vars.yml"
do_not_destroy = true
}
上記の場合、 terraform apply
が再実行された場合、既存のファイルを上書きすることはまったく問題ありません(そして予想されます)。
Terraform v0.11.1
data "template_file" "cleanup_vars" {
template = "${file("../../../ansible/aws-cleanup/vars.yml.tpl")}"
vars {
aws_region = "${var.aws_region}"
}
}
resource "local_file" "cleanup_vars" {
content = "${data.template_file.cleanup_vars.rendered}"
filename = "../../../ansible/aws-cleanup/vars.yml"
}
該当なし
該当なし
該当なし
該当なし
該当なし
該当なし
該当なし
こんにちは@alanbchristie! この機能のリクエストに感謝し、応答が遅れて申し訳ありません。
HashiCorpのTerraformチームは、他の場所に焦点を当てているため、近い将来これに取り組むことができなくなりますが、あなたまたは他の誰かがそれを実装する時間と動機を持っている場合は、プルリクエストを確認できます。
Terraformを使用してリソースを作成するのが一般的であるが、しばらくしてから他のシステムに管理を渡すことが一般的であるリソースについては、このようなオプションの前例がいくつかあります。 通常、これらの名前はverb_on_destroy
のようになります。ここで、「動詞」は問題のリソースに適した用語です。 この状況では、引数delete_on_destroy
という名前を付け、デフォルトでtrue
にし、明示的な構成をdelete_on_destroy = false
にすることをお勧めします。 これは、 nomad_job
deregister_on_destroy
引数のような他の同様の既存の機能と一致しています。
(ここでの*_on_destroy
の用語の理由は、このコンテキストでの「破棄」はTerraformの操作であり、ターゲットシステムで他の操作が発生するためです。 do_not_destroy
と呼ぶと、設定してから混乱する可能性があります。 Terraformがリソースインスタンス自体を破棄するのを実際に防ぐことはありません。代わりに、Terraformがリソースインスタンスを破棄するときに実行するアクションを調整します。)
@apparentlymart #10で解決を試みましたが、フィードバックをいただければ幸いです。
こんにちは、
@alanbchristieと同じユースケースと同じ問題。 このチケットを再評価する更新はありますか? 前もって感謝します。
HashiCorpプロバイダーのトリアージプロセスを改善する間、@abnにご理解いただきありがとうございます。 ここであなたのユースケースについてもっと理解したいと思いますterraform destroy
を呼び出しているが、このリソースを保持したいので、破棄したい追加の種類のリソースを含むより大きな構成の一部である必要があります。 このプロセスの手順と、構成の使用方法の概要を教えてください。
@kmoe正直なところ、元のユースケースの私の記憶は少し見苦しいです。 ただし、説明にあるように、これにつながる特定のケースは、AWSでいくつかのリソースを作成し、適用後に作成されたリソースをクリーンアップするために使用する必要のあるトークンや構成を生成したためです。 tf状態。destroyが呼び出された後、ansibleプレイブックを使用してクリーンアップする必要がありました。 単純な要件は、生成されたファイルを削除できないようにすることです。 これが一般的に役立つ他のさまざまなケースがあります。
こっちも一緒
ここでも同じことが必要です
私はまだこの問題に興味があると言いたいのですが、そうではありません。 代わりに、問題の冒頭で示したように、私はAnsibleをコントローラーとして使用しているため、インフラストラクチャがプロビジョニングされたら、Terraformの邪魔にならないようにファイルをコピーします。 次に、destroyを呼び出した後、コントロールがAnsibleプレイブックに戻ると、削除する前のファイルがあり、必要な処理を実行できます。
2020年の以前の質問に関して、なぜ誰かがそのようなファイルを保持したいと思うのでしょうか。 他のリソースとは異なり、「ローカル」リソースであるという事実は、通常、インフラストラクチャ内で重要な役割を果たしていないことを示唆しているはずです...結局のところ「ローカル」です(そして、 apply
を実行するととにかく書き直されます
とにかく、外部ツールを使用して動作をコーディングする方が生産的です。
最も参考になるコメント
こんにちは@alanbchristie! この機能のリクエストに感謝し、応答が遅れて申し訳ありません。
HashiCorpのTerraformチームは、他の場所に焦点を当てているため、近い将来これに取り組むことができなくなりますが、あなたまたは他の誰かがそれを実装する時間と動機を持っている場合は、プルリクエストを確認できます。
Terraformを使用してリソースを作成するのが一般的であるが、しばらくしてから他のシステムに管理を渡すことが一般的であるリソースについては、このようなオプションの前例がいくつかあります。 通常、これらの名前は
verb_on_destroy
のようになります。ここで、「動詞」は問題のリソースに適した用語です。 この状況では、引数delete_on_destroy
という名前を付け、デフォルトでtrue
にし、明示的な構成をdelete_on_destroy = false
にすることをお勧めします。 これは、nomad_job
deregister_on_destroy
引数のような他の同様の既存の機能と一致しています。(ここでの
*_on_destroy
の用語の理由は、このコンテキストでの「破棄」はTerraformの操作であり、ターゲットシステムで他の操作が発生するためです。do_not_destroy
と呼ぶと、設定してから混乱する可能性があります。 Terraformがリソースインスタンス自体を破棄するのを実際に防ぐことはありません。代わりに、Terraformがリソースインスタンスを破棄するときに実行するアクションを調整します。)