2016-04-04 10 views
1

私は以前作成したリソースを破壊する代わりに新しいリソースを作成することを避けたいと考えています。以前に作成されたリソースを破壊しないようにしてください

私はこのようなテラフォームの使用に/がしたい午前:

  • は、これらのグループにユーザーを添付
  • AWS IAMグループとポリシーを作成

    • 私は提供することで、新しいグループとユーザーを作成したい
    • 上記のユーザーとグループのために行ったような外部のvarファイル

    私は新しいvarファイルを渡そうとしたときに新しいリソースを作成して前のものを削除していましたので、t彼は新しいものだが、私はそれを削除したいと述べるまで、古いものも保持したい。

    私は本当に混乱しています。誰かが私がどのようにそれを達成できるかを指摘できますか?事前

    +2

    あなたがこれまでに何をやったかの例を示している場合は、この質問に答えるために簡単になります。 – ydaetskcoR

    答えて

    1

    に私はテラフォームがそのように動作するとは思わない

    感謝。 Terraformの主要な特徴の1つは次のとおりです。

    コードとしてのインフラストラクチャ:インフラストラクチャは、高度な構成構文を使用して記述されています。これにより、他のコードと同様に、データセンターの青写真をバージョン管理して扱うことができます。さらに、インフラストラクチャを共有して再利用することもできます。

    単一のTerraformリソースから複数の「実際の」リソースが存在するようになると、インフラストラクチャの定義された性質が失われてしまいます。このTerraformリソース... 1つの実際のリソースですか?五?十?あなたはコードを読んでもわからない。

    質問に戻ると、いくつかの選択肢があると思いますが、最終的にはリソースを具体的に定義することに変わりはありません。特にボイラープレートを削減したい場合は、おそらくmodulesになるでしょう。

    -1

    あなたはテラフォームモジュールで見たいと思うかもしれません - https://www.terraform.io/docs/modules/

    あなたは、モジュールを「インスタンス化する」ことでリソースのセットを作成し、再度、そうすることによって、別のセットを作成することができます。

    1

    Advance terraform state managementは注意が必要です。私は他のリソースを破壊してしまった。

    使用法:テラフォーム状態のrm [オプション] ADDRESS ...

    コマンドは、指定されたアドレスにマッチしたすべての項目を削除します。

    Terraform状態から削除されたアイテムは物理的に破棄されません。 Terraform状態から削除されたアイテムは、Terraformによって管理されなくなりました。たとえば、状態からAWSインスタンスを削除すると、AWSインスタンスは引き続き実行されますが、terraformプランはそのインスタンスを認識しなくなります。

    Terraform状態ファイルからアイテムを削除するさまざまな使用例があります。最も一般的なのは、設定をリファクタリングしてそのリソースを管理しないようにすることです(おそらく別のTerraform設定/状態に移動する)。

    状態は、すべてのアドレスが正常に削除された場合にのみ保存されます。何らかの理由で特定のアドレスエラーが発生した場合(構文エラーなど)、状態はまったく変更されません。

    このコマンドは、変更を保存する前に状態のバックアップコピーを出力します。バックアップを無効にすることはできません。このコマンドの破壊的性質のため、バックアップが必要です。

    terraform state rm resource_to_stay

    terraform plan -destroy < - この - 破壊、​​資源が

    terraform destroy

    terraform import resource_to_stay

    terraform plan <ではないことを確認の "予行演習" を行いますインポートリソースの出力を持つ必要があります。それが削除されないことを確認してください、別名、赤で表示されます。

    terraform apply

    関連する問題