インストール

CentOS7

centos7でjqが入っていればワンライナーでいけた

sudo echo ; zcat <( CURRR_VER=$(curl -s https://checkpoint-api.hashicorp.com/v1/check/terraform | jq -r -M '.current_version') ; curl -q "https://releases.hashicorp.com/terraform/$CURRR_VER/terraform_${CURRR_VER}_linux_amd64.zip" ) | sudo tee /usr/local/bin/terraform > /dev/null ; sudo chmod +x /usr/local/bin/terraform

Ubuntu

Windows

バージョン切り替え

install: brew install tfenv
tfenv list-remote
tfenv install 0.12.26
tfenv use 0.12.26

tfファイル

純粋なjsonではないが、ネストが浅くなるので読みやすい。

iam.tf
main.tf

リストやmapなどからリソース生成

https://pocketstudio.net/2018/07/13/hashicorp-terraform-0-12-preview-for-and-for-each-translate-jp/

https://dev.classmethod.jp/articles/terraform-0-12-new-features/#toc-4

variable "ipset" {
  type    = list(string)
  default = ["113.42.16.83/32", "192.168.11.151/32"]
}
# IP Set
resource "aws_waf_ipset" "ipset" {
  name = "${var.env}IPSet"

  dynamic "ip_set_descriptors" {
    for_each = var.ipset

    content {
      type  = "IPV4"
      value = ip_set_descriptors.value
    }
  }

}

template

巨大なresourceを必要とする場合は、ファイルの一部を別に切り出す。

https://github.com/terraform-community-modules/tf_aws_ecs/blob/master/consul_agent.tf

既存環境からimportする

1. 接続情報と対象のリソースファイルを作成して、terraform init

resource "aws_vpc" "default-vpc" {
# からにしておく
}
provider "aws" {
  version  = "~>2.0"
  region   = "ap-northeast-1"
  # IAM profile
  profile = "YOUR_IAM_PROFILE"
}

2. importコマンド実施すると、tfstateファイルに現在の状況が書き込まれる

terraform init
terraform import aws_vpc.default-vpc vpc-a01106c2

3.現在のリソース状況を確認しながら変数の値を埋めていく!

terraform state show aws_vpc.default-vpc

4. terraform planして変更がないことを確認する

関連ツール

既存リソースをリバースエンジニアリングだが、terraform importがあるので不要かも?

data source

サンプルで間違って引っかかるが、dataはresource作成に当たってterraform外から参照する変数と考えておく。たとえば最新のAmazon Linux AMIのIDを取得して、ec2の作成をするなどをec2モジュールに組み込んでみた。

data "aws_iam_group" "example" {
  group_name = "取得したいgroup名"
}
${data.aws_iam_group.example.arn}

ループ処理

https://qiita.com/ringo/items/875f08ec550f0826f0dc

基本コマンド

terraform fmtカレントディレクトリのtfファイルをフォーマット
initワークスペースを初期化
play実行するとどのような状態になるかを表示
apply実施
destroy削除
show現在の状態を表示
terraform apply -target=module.ec2_1モジュール指定で実行
terraform plan -target=aws_lambda_layer_version.lambda_layerリソース指定で実行
OS_DEBUG=1 TF_LOG=DEBUG terraform apply

conoha

決めるのはimage_name,flavor_name

aws


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-10-12 (木) 19:18:27