Providers

HTTP

https://www.terraform.io/docs/providers/http/

http Data Source

https://www.terraform.io/docs/providers/http/data_source.html

SYNOPSIS:

data "http" "example" {
  url = "https://checkpoint-api.hashicorp.com/v1/check/terraform"

  # Optional request headers
  request_headers = {
    "Accept" = "application/json"
  }
}

curlで取ってくるようなデータはこれを使えばいい。

参考:

Kubernetes

K8sのリソースオブジェクトを管理できる。

Resources

Local

https://www.terraform.io/docs/providers/local/

ローカルのファイルをData Sourceとして読んだり、Resourceとして作成・管理したり。

Data Source

https://www.terraform.io/docs/providers/local/d/file.html

data "local_file" "foo" {
    filename = "${path.module}/foo.bar"
}

Attributes Exported:

  • content
  • content_base64

Resource

https://www.terraform.io/docs/providers/local/r/file.html

resource "local_file" "foo" {
    content              = "foo!"
    filename             = "${path.module}/foo.bar"
    file_permission      = "0644"
    directory_permission = "0755"
}

Arguments:

  • filename 以外はOptional
  • file_permission, directory_permission のデフォルトは "0777"

Random

https://www.terraform.io/docs/providers/random/

乱数値の生成などで使える。
生成した値はtfstateに保存され、生成時のパラメータが変わらない限り都度、生成することはない。

Resources:

Template

https://www.terraform.io/docs/providers/template/

Example:

# Template for initial configuration bash script
data "template_file" "init" {
  template = "${file("init.tpl")}"

  vars {
    consul_address = "${aws_instance.consul.private_ip}"
  }
}

# Create a web server
resource "aws_instance" "web" {
  # ...

  user_data = "${data.template_file.init.rendered}"
}

Other Providers