コマンド: taint
tofu taint
コマンドは、特定のオブジェクトが劣化または破損したことをOpenTofuに通知します。OpenTofuは、OpenTofuの状態内でオブジェクトを「汚染された(tainted)」とマークすることでこれを表し、次に作成するプランでオブジェクトの置き換えを提案します。
このコマンドは非推奨です。代わりに、tofu apply
で-replace
オプションを使用することをお勧めします(詳細は以下)。
推奨される代替方法
設定変更が必要ない場合でも、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
モジュールソース、バックエンド設定、または暗号化ブロックで変数を使用するには、tofu taint
を実行するときにルートモジュール変数に値を割り当てる必要があります。
このコマンドは、次のオプションを受け入れます。
-
-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
も受け入れます。