安装 Terraform 并连接至 AWS 的 CentOS 7 上

我开始学习 Terraform。

虽然比预想的困难得多,让我感到迷茫,但也很有趣。

前提条件 (qianti tiaojian)

$ terraform -v
Terraform v0.11.13
+ provider.aws v2.6.0

安装 Terraform(CentOS 7)

Terraform 安装方法因操作系统而异。以下是在 CentOS 7 上安装的命令。

// 必要なソフトのインストール
$ sudo yum install wget unzip

// Package の取得
$ wget https://releases.hashicorp.com/terraform/0.11.13/terraform_0.11.13_linux_amd64.zip

// unzip してコマンドとして配置
$ sudo unzip ./terraform_0.11.13_linux_amd64.zip -d /usr/local/bin/

// バージョンの確認
$ terraform -v

安装Windows或Mac的方法可以参考以下网站。

    • Terraformインストール(Windows版) – Qiita

 

    • Installation / インストール – Terraform for さくらのクラウド

 

    Download Terraform – Terraform by HashiCorp

最初的设定 (chū qī shè

首先,创建一个文件夹用于编写Terraform的内容。

// Terraform の設定情報を配置するフォルダを作成・移動
$ mkdir terraform-dir && cd $_

因為我希望建立AWS環境,所以我進行了以下的設定。

# 変数の設定
variable "aws_access_key" {}
variable "aws_secret_key" {}

# 変数を利用した provider の設定
provider "aws" {
    access_key = "${var.aws_access_key}"
    secret_key = "${var.aws_secret_key}"
    region = "ap-northeast-1"
}

需要将上述 provider 配置中的变量化 aws_access_key 和 aws_secret_key 设置为 IAM 的认证信息。

1)通过Terraform命令的选项传递值。

您可以将值作为命令选项传递,如下所示。

$ terraform apply \
-var 'aws_access_key=AKIAXXXXXXXXXXXXXXXXXX' \
-var 'aws_secret_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

在环境变量中传递值

通过在 TF_VAR_ 之后添加变量名,并设置环境变量来自动读取环境变量,以便在执行 terraform 命令时。

$ export TF_VAR_aws_access_key="AKIAXXXXXXXXXXXXXXXXXX"
$ export TF_VAR_aws_secret_key="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

3) 通过文件传递值

如果在名为 terraform.tfvars 的文件中设置配置,那么在执行命令时会加载变量。然而,这种方法似乎已经不推荐使用了。

aws_access_key = "AKIAXXXXXXXXXXXXXXXXXX"
aws_secret_key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

基本指令

在完成认证信息和提供者的设置之后,使用 terraform init 进行初始化。

// 初期化
$ terraform init

// ドライ・ラン
$ terraform plan

// 適用
$ terraform apply

// 削除確認
$ terraform plan -destroy

// 削除
$ terraform destroy

工作空间的选择

通过使用工作区的概念,可以处理生产/验证/开发等环境的概念。

// terraform workspace
// Usage: terraform workspace <subcommand> [options] [args]

// workspace の一覧を表示する
$ terraform workspace list

// workspace を選択する
$ terraform workspace select [NAME]

// workspace を作成する
$ terraform workspace new [NAME]

// workspace を削除する
$ terraform workspace delete [NAME]

// workspace を表示する
$ terraform workspace show
    Command: workspace – Terraform

这次我们建立了开发环境。

// develop 環境を作成し、選択
$ terraform workspace new develop
$ terraform workspace select develop

创建设置文件

我将在这里详细说明设置的细节。

Terraform CLI Documentation – Terraform

Configuration Language – Terraform
Terraform Commands (CLI)

AWS Provider – Terraform

资源

指定構築对象的资源。

# Usage
resource "<resource type>" "<local name>" {
  # configuration arguments
  <argument> = "<value>"
}

# Example
resource "aws_instance" "web" {
  ami           = "ami-a1b2c3d4"
  instance_type = "t2.micro"
}

输入变量

variable "image_id" {
  type = string
}

variable "availability_zone_names" {
  type    = list(string)
  default = ["us-west-1a"]
}

# var.<NAME>
resource "aws_instance" "example" {
  instance_type = "t2.micro"
  ami           = var.image_id
}

输出值

output "instance_ip_addr" {
  value = aws_instance.server.private_ip
}

数据来源

只能读取

data "aws_ami" "example" {
  most_recent = true

  owners = ["self"]
  tags = {
    Name   = "app-server"
    Tested = "true"
  }
}

模块

module "servers" {
  source = "./app-cluster"

  servers = 5
}

Terraform 配置

terraform {
  backend "s3" {
    # (backend-specific settings...)
  }
}

请看,这是我们的参考文件。

    • How to Install Terraform on CentOS 7/Ubuntu 18.04 – LinOxide

 

    • terraformでEC2+RDS+ElastiCacheを構築してみる(その1 EC2構築まで) – Qiita

 

    • 既存のAWS環境を後からTerraformでコード化する – Developers.IO

 

    • Terraform職人入門: 日々の運用で学んだ知見を淡々とまとめる – Qiita

 

    • 俺が結論づけたterraformベスト・プラクティスとworkspaceとmodule考え方(AWS Provider編) – Qiita

 

    • miso4ru/aws-terraform-template – GitHub

 

    Windowsホスト上のVagrantのシンボリックリンクフォルダでyarn installできない問題の解決 – Qiita
bannerAds