HashiCorp Certified: Terraform Associate 無料問題 8 / 10 ・ 分野6: Terraform state management
パイプラインが、state がロックされていると報告し、エンジニアは terraform force-unlock を実行することにした。State Locking のページは、このコマンドに何が要り、それはなぜだと書いているか。
- ワークスペースの名前。コマンドがその中のロックをまとめて解錠するため
- 先に terraform state pull。ロックされた state の写しを残しておくため
- バックエンドの認証情報をもう一度。誰がロックを取ったかを証明するため
- 一意のロック ID。解錠が正しいロックを対象にするための nonce
正解と解説を見る
正解: D
正解の理由
State Locking のページは、ロックを手で外す force-unlock コマンドを説明している。利用者を守るため、force-unlock コマンドには一意のロック ID が要り、解錠に失敗すると Terraform はこのロック ID を出力する。このロック ID は nonce として働き、ロックと解錠が正しいロックを対象にすることを確かにする。コマンドが外すのはその ID で示されたロックなので、後でほかの実行が取るロックは別のロックになる。ページの残りは、そもそもなぜロックがあるかを説明している。バックエンドが対応していれば、Terraform は state を書きうるすべての操作で state をロックし、ほかの人がロックを取って state を壊しうるのを防ぐ。state のロックに失敗すると Terraform は先へ進まないので、外されないロックは後に続く操作を止める。
違う選択肢
「バックエンドの認証情報をもう一度。誰がロックを取ったかを証明するため」… ページが、利用者を守るために force-unlock が求めるとしているものは1つで、一意のロック ID である。解錠に失敗すると Terraform がそれを出力する。
「ワークスペースの名前。コマンドがその中のロックをまとめて解錠するため」… ページは、このコマンドには一意のロック ID が要り、それが nonce として働いて、ロックと解錠が正しいロックを対象にすることを確かにすると書いている。対象はロック1つで、ワークスペースの中のロックの全部ではない。
「先に terraform state pull。ロックされた state の写しを残しておくため」… terraform state pull は、リモートの state を読み込んで標準出力に出す。ページが force-unlock に要るとしているのは、解錠に失敗すると Terraform が出力する一意のロック ID である。
force-unlock にはロック ID
解錠に失敗すると Terraform はロック ID を出す。force-unlock にはその ID が要るので、外すのはまさにそのロックになる。
HashiCorp Certified: Terraform Associateの演習アプリ(無料10問・全問は購入で)へ