安装 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