MENU
  • サービス
  • AWS導入支援
  • AWS運用代行
  • WordPress
    • WordPress高速化
    • WordPress脆弱性対策
  • 導入事例
  • 良くあるご質問
  • AWS技術知見
  • お問い合わせ
AWSの導入・クラウド運用を総合支援【CapsuleCloud】
  • サービス
  • AWS導入支援
  • AWS運用代行
  • WordPress
    • WordPress高速化
    • WordPress脆弱性対策
  • 導入事例
  • 良くあるご質問
  • AWS技術知見
  • お問い合わせ
AWSの導入・クラウド運用を総合支援【CapsuleCloud】
  • サービス
  • AWS導入支援
  • AWS運用代行
  • WordPress
    • WordPress高速化
    • WordPress脆弱性対策
  • 導入事例
  • 良くあるご質問
  • AWS技術知見
  • お問い合わせ
  1. ホーム
  2. AWS技術知見
  3. Terraform
  4. Terraformと変数(variable)のお話

Terraformと変数(variable)のお話

2022 9/16
Terraform
2022年9月16日
目次

はじめに

Terraformには、汎用性、再利用性、機密性を上げるためにvariableが用意されています。
Terraform内で${var.変数名}という記述方法でterraform実行時に値を渡すことができます。

このTerraformへの変数の渡し方には4種類の方法があります。それぞれのやり方を本記事でご紹介したいと思います。

コマンドライン引数で渡す

まずはコマンドライン引数で渡す方法です。

terraform plan \
-var 'access_key=foo' \
-var 'secret_key=bar'

terraformコマンドのapply, plan, refresh時に渡すことができます。
これは文字列に限らず、MapやListを渡すこともできます。

Mapの例

terraform plan \
-var 'ami={ ap-northeast-1 = "ami-12345678" }'

Listの例

terraform plan \
-var 'security_group_ids=[ "sg-12345678", "sg-87654321" ]'

ファイルから渡す

terraform.tfvarsというファイルを作っておけば、その中の変数の値が反映されます。
中身は下のように記述します。

access_key = "foo"
secret_key = "bar"
ami = {
ap-northeast-1 = "ami-12345678"
}
security_group_ids = [
"sg-12345678",
"sg-87654321"
]

仮にterraform.tfvarsというファイル以外を使いたい場合は、コマンドライン引数で-var-fileを指定することで読み込めます。

terraform plan -var-file base.tfvars -var-file production.tfvars

複数の-var-fileを指定した場合は後勝ちになるので注意が必要です。
また、.tfvarsファイルを意図せずバージョン管理してしまうのは危険です(アクセスキーなどを公開してしまうかもしれません)。
明確な理由がなければ.gitignoreには*.tfvars を入れておくと安全だと思います。

環境変数から渡す

TF_VAR_という接頭辞をつけることで、環境変数からvariableを渡すことができます。
以下のようにそれぞれaccess_key, ami, security_group_idsの値を設定することができます。

TF_VAR_access_key=foo
TF_VAR_ami='{ ap-northeast-1 = "ami-12345678" }'
TF_VAR_security_group_ids='[ "sg-12345678", "sg-87654321" ]'

デフォルト値を渡す

変数の指定を特に行わなかった場合にはデフォルト値を用意することもできます。
variableブロックにdefaultを指定することで実現できます。以下が例となります。

variable "region" {
description = "AWS region"
default = "ap-northeast-1"
}

上のどの方法でも渡さなかった場合

この場合、例えばterraform planを実行したときにCLIから値の入力を対話形式で求められます。
地味にうれしい機能ですね(ありがた迷惑な場合もあるかもしれませんが)。

おわりに

ファイルや環境変数から間接的に値を渡せることがお分かり頂けたかと思います。
この方法を使うことで機密情報が漏洩する可能性を下げることができます。
例えば、CI経由でterraformコマンドが実行されるようにパイプラインを組んでいれば、そこにファイルなり環境変数なりを設定しておくことができます。

またTerraform 0.8からはProviderにVaultが追加されていますので、シークレットの管理をより効率的に行うことができそうです。

正社員希望の方はこちら
業務委託希望の方はこちら
Terraform
secrets Terraform tfvars variable vault

関連記事

  • terraform
    TerragruntでDRYなTerraform Remote State
  • terraform
    TerragruntでDRYなTerraform
検索
clouddx003-low.pdf - 1.8MB
資料ダウンロードはこちら
人気記事
  • terraform
    Terraformと変数(variable)のお話
    Terraform
  • aws-s3
    Amazon S3で署名付きURLを使ったアクセス制御
    AWS技術知見
  • 【実例20選】AWS導入企業、活用事例をご紹介
    AWS導入支援
  • AWS導入支援
    amazonクラウド、AWSとは?何ができるかデメリット含めわかりやすく説明
    AWS導入支援
  • ansible
    AWSのためのAnsible入門
    AWS技術知見
  • WordPress高速化!6つの簡単な方法で重さを改善
    WordPress
  • aws-inspector
    [AWS入門] Amazon Inspectorでセキュリティチェックを行う
    AWS技術知見
新着記事
  • AWS運用代行企業5選!企業選びのポイントを解説
    AWS運用代行
  • AWS運用代行のサービス内容やメリットについて
    AWS運用代行
  • 10分でスタート!AWSの利用開始までを解説
    AWS導入支援
  • WordPress脆弱性の原因とやっておくべき7つの対策
    WordPress
  • WordPress高速化!6つの簡単な方法で重さを改善
    WordPress
カテゴリー
  • AWS導入支援
  • AWS技術知見
    • Rancher
    • Terraform
  • AWS運用代行
  • WordPress
タグ一覧
AI (3) aws (25) aws-cli (3) CloudFormation (1) CloudSearch (3) DeepLearning (1) DNS (2) Docker (4) EBS最適化オプション (1) ec2 (7) ElasticBeanstalk (1) Geo Routing (1) Gitlab (1) HA (1) infrastructure-as-code (1) keypair (1) load-balancer (1) nginx (2) OpenAM (3) Rancher (8) Rekognition (2) Route53 (3) s3 (2) secrets (1) security-group (1) Terraform (6) terragrunt (2) tfvars (1) variable (1) vault (1) VPC (1) wordpress (3) アプリケーション (1) オンプレミス (2) クラウド (2) サインアップ (1) シングルサインオン (3) セキュリティ (1) セキュリティグループ (1) ネットワーク設計 (1) 人工知能 (2) 初心者 (1) 本番運用 (1) 画像認識 (3) 起動 (1)
アーカイブ
  • 2022年9月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2017年7月
  • 2017年6月
AWSエンジニア積極採用!
採用情報
フリーランスの求人情報!
テックブレイン

スーパーソフトウエアはAWSパートナーネットワーク(APN)のコンサルティングパートナーです。

スーパーソフトウエアはRancherパートナーネットワークのコンサルティングパートナーです。

logo

カプセルクラウドはAWSクラウドのマネージドサービスです。AWSを安心かつ迅速に導入し、負荷分散・セキュリティ・DevOps・コスト削減など、クラウドサービスのメリットを活かした豊富なベストプラクティスをご提供いたします。

Contents

  • サービス
  • 導入支援
  • WordPress
  • 導入事例
  • ブログ
  • Q&A
  • お問い合せ
  • 資料ダウンロード

お問い合わせ

株式会社スーパーソフトウエア
東京 03-6721-7105
大阪 06-4707-6001
info-capsulecloud@tokyo.supersoftware.co.jp

  • プライバシーポリシー
  • 免責事項
  • 契約約款
  • 特商法に基づく表記
  • 会社情報
  • サイトマップ

© Supersoftware 2017. All rights reserved.

目次