《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Terraform 是一种用于安全高效地构建、更改和版本控制基础架构的工具。

terraform自动设置(一种用于安全高效地构建)(1)

HashiCorp Terraform 是一种基础架构即代码工具,可让您在可读的配置文件中定义云和本地资源,您可以对其进行版本控制、重用和共享。然后,您可以使用一致的工作流程在整个生命周期内配置和管理所有基础架构。Terraform 可以管理计算、存储和网络资源等低级组件,以及 DNS 条目和 SaaS 功能等高级组件。

Terraform 主要特点Terraform 是如何工作的?

Terraform 通过其应用程序编程接口 (API) 在云平台和其他服务上创建和管理资源。提供者使 Terraform 能够通过可访问的 API 与几乎任何平台或服务一起工作。

terraform自动设置(一种用于安全高效地构建)(2)

核心 Terraform 工作流程包括三个阶段:

terraform自动设置(一种用于安全高效地构建)(3)

开始使用

安装 Terraform

要安装 Terraform,请找到适合您系统的软件包并将其下载为 zip 存档。

下载 Terraform 后,解压缩包。Terraform 作为一个名为terraform. 包中的任何其他文件都可以安全地删除,Terraform 仍然可以运行。

最后,确保terraform二进制文件在您的PATH. 此过程将因您的操作系统而异。

打印以冒号分隔的位置列表PATH。

echo $PATH

将 Terraform 二进制文件移动到列出的位置之一。此命令假定二进制文件当前位于您的下载文件夹中并且您的PATH包含/usr/local/bin,但如果您的位置不同,您可以自定义它。

mv ~/Downloads/terraform /usr/local/bin/

验证安装

通过打开一个新的终端会话并列出 Terraform 的可用子命令来验证安装是否有效。

$ terraform -help Usage: terraform [-version] [-help] <command> [args] The available commands for execution are listed below. The most common, useful commands are shown first, followed by less common or more advanced commands. If you're just getting started with Terraform, stick with the common commands. For the other commands, please read the help and docs before usage. ##...

添加任何子命令以terraform -help了解有关其功能和可用选项的更多信息。

terraform -help plan

启用选项卡完成

如果您使用 Bash 或 Zsh,则可以为 Terraform 命令启用制表符补全。要启用自动完成,首先确保您选择的 shell 存在配置文件。

touch ~/.bashrc

然后安装自动完成包。

terraform -install-autocomplete

安装自动完成支持后,您将需要重新启动 shell。

快速入门教程

在本地计算机上安装 Terraform 和 Docker 后,启动 Docker Desktop。

open -a Docker

创建一个名为learn-terraform-docker-container

mkdir learn-terraform-docker-container

打开

cd learn-terraform-docker-container

将以下 Terraform 配置粘贴到文件中并将其命名为main.tf.

terraform { required_providers { docker = { source = "kreuzwerker/docker" version = "~> 2.13.0" } } } provider "docker" {} resource "docker_image" "NGINX" { name = "nginx:latest" keep_locally = false } resource "docker_container" "nginx" { image = docker_image.nginx.latest name = "tutorial" ports { internal = 80 external = 8000 } }

初始化项目,该项目下载一个允许 Terraform 与 Docker 交互的插件。

terraform init

使用apply. 当 Terraform 要求您确认类型yes并按ENTER。

terraform apply

通过在 Web 浏览器中访问localhost:8000docker ps或运行以查看容器来验证 NGINX 容器的存在。

构建基础设施

先决条件

要遵循本教程,您将需要:

要使用您的 IAM 凭证对 Terraform AWS 提供商进行身份验证,请设置AWS_ACCESS_KEY_ID环境变量。

export AWS_ACCESS_KEY_ID=

现在,设置您的密钥。

export AWS_SECRET_ACCESS_KEY=

写配置

在 Terraform 中用于描述基础设施的文件集称为 Terraform配置。您将编写您的第一个配置来定义单个 AWS EC2 实例。

每个 Terraform 配置必须位于其自己的工作目录中。为您的配置创建一个目录。

mkdir learn-terraform-aws-instance

切换到目录。

cd learn-terraform-aws-instance

创建一个文件来定义您的基础架构。

touch main.tf

在文本编辑器中打开main.tf,粘贴下面的配置,然后保存文件。

terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 4.16" } } required_version = ">= 1.2.0" } provider "aws" { region = "us-west-2" } resource "aws_instance" "app_server" { ami = "ami-830c94e3" instance_type = "t2.micro" tags = { Name = "ExampleAppServerInstance" } }

使用输出查询数据

初始配置

遵循此集合中的先前教程后,您将拥有一个learn-terraform-aws-instance使用以下配置命名的目录。

# main.tf terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 4.16" } } required_version = ">= 1.2.0" } provider "aws" { region = "us-west-2" } resource "aws_instance" "app_server" { ami = "ami-08d70e59c07c61a3a" instance_type = "t2.micro" tags = { Name = var.instance_name } } # variables.tf variable "instance_name" { description = "Value of the Name tag for the EC2 instance" type = string default = "ExampleAppServerInstance" }

确保您的配置与此匹配,并且您已在learn-terraform-aws-instance目录中初始化配置。

terraform init

在继续本教程之前应用配置。使用 响应确认提示yes。

terraform apply

存储远程状态

设置 Terraform 云

修改main.tf以将cloud块添加到您的 Terraform 配置,并替换<ORG_NAME>为您的组织名称

terraform { cloud { organization = "<ORG_NAME>" workspaces { name = "Example-Workspace" } } required_providers { aws = { source = "hashicorp/aws" version = "~> 4.16" } } }

登录 Terraform 云

接下来,使用终端中的 Terraform CLI 登录到您的 Terraform Cloud 帐户。

$ terraform login Terraform will request an API token for app.terraform.io using your browser. If login is successful, Terraform will store the token in plain text in the following file for use by subsequent commands: /Users/<USER>/.terraform.d/credentials.tfrc.json Do you want to proceed? Only 'yes' will be accepted to confirm. Enter a value:

使用 a 确认yes并按照将自动打开的浏览器窗口中的工作流程进行操作。出现提示时,您需要将生成的 API 密钥粘贴到终端中。

设置工作区变量

该terraform init步骤Example-Workspace在您的 Terraform Cloud 组织中创建了工作区。您必须使用您的 AWS 凭证配置您的工作区以对 AWS 提供商进行身份验证。

导航到Example-WorkspaceTerraform Cloud 中的工作区,然后选择“变量”选项卡。在“环境变量”部分添加您的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY ,确保将它们标记为“敏感”。

terraform自动设置(一种用于安全高效地构建)(4)

—END—

开源协议:MPL-2.0 license

开源地址:https://github.com/hashicorp/terraform

,