メインコンテンツにスキップ

コマンド: taint

tofu taintコマンドは、特定のオブジェクトが劣化または破損したことをOpenTofuに通知します。OpenTofuは、OpenTofuの状態内でオブジェクトを「汚染された(tainted)」とマークすることでこれを表し、次に作成するプランでオブジェクトの置き換えを提案します。

設定変更が必要ない場合でも、OpenTofuがオブジェクトを強制的に置き換えるようにするには、tofu apply-replaceオプションを使用することをお勧めします。

コードブロック
$ tofu apply -replace="aws_instance.example[0]"

-replaceオプションをお勧めする理由は、変更がOpenTofuプランに反映され、外部から見えるアクションを実行する前に、インフラストラクチャにどのように影響するかを理解できるためです。tofu taintを使用すると、効果を確認する前に、他のユーザーが汚染されたオブジェクトに対して新しいプランを作成する可能性があります。

使用方法

コードブロック
$ tofu taint [options] <address>

address引数は、汚染されたとマークするリソースのアドレスです。アドレスは、リソースアドレス構文に従って指定します。これは、次のような他のコマンドの出力に示されています。

  • aws_instance.foo
  • aws_instance.bar[1]
  • aws_instance.baz[\"key\"] (リソースアドレスの引用符は、シェルによって解釈されないように、コマンドラインでエスケープする必要があります)
  • module.foo.module.bar.aws_instance.qux

このコマンドは、次のオプションを受け入れます。

  • -allow-missing - 指定した場合、リソースが見つからない場合でもコマンドは成功します(終了コード0)。状態の読み取りまたは書き込みに問題がある場合など、コマンドは他の状況でエラーを返す可能性があります。

  • -lock=false - 操作中に状態の読み取り/書き込みロックを取得しようとするOpenTofuのデフォルトの動作を無効にします。

  • -lock-timeout=DURATION - -lock=falseでロックが無効にされていない限り、エラーを返す前に、OpenTofuに一定期間ロックの取得を再試行するように指示します。期間の構文は、数値の後に時間単位の文字が続きます。たとえば、「3秒」の場合は「3s」です。

  • -var 'NAME=VALUE' - 設定のルートモジュールで宣言された単一の入力変数の値を設定します。複数の変数を設定するには、このオプションを複数回使用します。詳細については、コマンドラインでの入力変数を参照してください。

  • -var-file=FILENAME - 「tfvars」ファイルの定義を使用して、設定のルートモジュールで宣言された複数の入力変数の値を設定します。複数のファイルから値を含めるには、このオプションを複数回使用します。

-varオプションと-var-fileオプション以外にも、ルートモジュールに入力変数の値を設定する方法はいくつかあります。詳細については、ルートモジュール変数への値の割り当てを参照してください。

cloudバックエンドまたはremoteバックエンドを使用する構成の場合のみ、tofu taintはオプション-ignore-remote-versionも受け入れます。

localバックエンドを使用する構成の場合のみ、tofu taintはレガシーオプション-state-state-out、および-backupも受け入れます。