2016-07-07 8 views
0

私は自己修復と領事クラスターの自動スケーリングに使用しているサーバーを持っています。それは、コンスタンウォッチとヘルスチェックによって実行されるterraformスクリプトでこれを行います。Terraformをセットアップする方法 "COMMAND:REMOTE CONFIG" with consul

フェールオーバーのために追加のバックアップ・テラフォーム・サーバーを追加したいとします。これを行うには、同じリソースでterraformを実行できるように、terraform.tfstateterraform.tfstate.backupを私のサーバー間で共有する必要があります。 Terraform "COMMAND: REMOTE CONFIG"を使用してこれらのファイルを共有したいと思いますが、どのように共有を開始するかは不明です。

基本的には、両方のサーバーで常にterraform.tfstateterraform.tfstate.backupファイルを同期させたいと考えています。ここでこれを設定しようとしています。どちらのテラフォームサーバも、残りの領事クラスターに接続されている領事クライアントを実行していることに注意してください:

terraform remote config \ 
-backend=consul \ 
-backend-config="address=localhost:8500" \ 
-backend-config="path=/consul-scripts/terr/terraform.tfstate" \ 
-backend-config="backup=/consul-scripts/terr/terraform.tfstate.backup" \ 
-path="/consul-scripts/terr/terraform.tfstate" \ 
-backup="/consul-scripts/terr/terraform.tfstate.backup" \ 
-address="localhost:8500" 

これは明らかに間違った構文です。

[email protected]:/consul-scripts/terr$ terraform remote config \ 
>  -backend=consul \ 
>  -backend-config="address=localhost:8500" \ 
>  -backend-config="path=/consul-scripts/terr/terraform.tfstate" 
Error writing backup state file: open terraform.tfstate.backup: permission denied 

は、私は私のテラフォームサーバを持っているとテラフォームを通じて同期さでしょう「COMMAND:REMOTE CONFIG」ではなく、通常のファイル共有の関連文書に提供領事の例を実行しようとすると、私は次の出力を受けglusterfsや何かのようなシステム。

この方法で私のテラフォームファイルを正しく同期させるにはどうしたらいいですか?

+0

このエラーメッセージは、gリモート設定コマンドでTerraformがリモート状態を有効にしようとしたが、ローカルファイルシステムの 'terraform.tfstate.backup'ファイルを作成または更新するための書き込みアクセス権を持たない' terraform'ユーザはどんなものであれ修正してください。 –

答えて

0

だから私はちょうどdocumentationの例をsudoで実行しなければならなかった。だから、@Martin Atkinsはそれを得た。 terraform remote configを使用すると、.tfstateファイルがterraformスクリプトを含むディレクトリ内の隠しディレクトリ.terraform/に保存されます。

どのようにterraform remote configが働くのは、tfstateファイルの詳細を含むキー値をconsulに作成することです。

答えはドキュメントに記載されているものに非常に近いです。実際には、terraform remote configを使用して3ステップのプロセスです。

現在tfstateファイル引くために実行する必要があり、以下テラフォーム実行する前に:

#this will pull the current tfstate file 
#if none exists it will create the tfstate key value 
terraform remote config \ 
-backend=consul \ 
-backend-config="address=localhost:8500" \ 
-backend-config="path=tfstate" \ 
pull 

を次に実行します。これは、実行を終了した後

terraform apply 

を更新tfstateファイルをプッシュするために、次の領事に、鍵の値を変更する:

terraform remote config \ 
-backend=consul \ 
-backend-config="address=localhost:8500" \ 
-backend-config="path=tfstate" \ 
push 
関連する問題