基础架构自动化编排工具Terraform安装与使用踩坑记录

Terraform简介

Terraform 是一种安全有效地构建、更改和版本控制基础设施的工具(基础架构自动化的编排工具)。Terraform 几乎可以支持所有市面上能见到的云服务。具体的说就是可以用代码来管理维护 IT 资源,把之前需要手动操作的一部分任务通过程序来自动化的完成,这样的做的结果非常明显:高效、不易出错。

Terraform 提供了对资源和提供者的灵活抽象。该模型允许表示从物理硬件、虚拟机和容器到电子邮件和 DNS 提供者的所有内容。由于这种灵活性,Terraform 可以用来解决许多不同的问题。这意味着有许多现有的工具与Terraform 的功能重叠。但是需要注意的是,Terraform 与其他系统并不相互排斥。它可以用于管理小到单个应用程序或达到整个数据中心的不同对象。

Terraform 使用配置文件描述管理的组件(小到单个应用程序,达到整个数据中心)。Terraform 生成一个执行计划,描述它将做什么来达到所需的状态,然后执行它来构建所描述的基础结构。随着配置的变化,Terraform 能够确定发生了什么变化,并创建可应用的增量执行计划。

Terraform 是用 Go 语言开发的开源项目,你可以在 github 上访问到它的源代码。

Terraform 核心功能

  • 基础架构即代码(Infrastructure as Code)
  • 执行计划(Execution Plans)
  • 资源图(Resource Graph)
  • 自动化变更(Change Automation)

基础架构即代码(Infrastructure as Code)
使用高级配置语法来描述基础架构,这样就可以对数据中心的蓝图进行版本控制,就像对待其他代码一样对待它。

执行计划(Execution Plans)
Terraform 有一个 plan 步骤,它生成一个执行计划。执行计划显示了当执行 apply 命令时 Terraform 将做什么。通过 plan 进行提前检查,可以使 Terraform 操作真正的基础结构时避免意外。

资源图(Resource Graph)
Terraform 构建的所有资源的图表,它能够并行地创建和修改任何没有相互依赖的资源。因此,Terraform 可以高效地构建基础设施,操作人员也可以通过图表深入地解其基础设施中的依赖关系。

自动化变更(Change Automation) 
把复杂的变更集应用到基础设施中,而无需人工交互。通过前面提到的执行计划和资源图,我们可以确切地知道 Terraform 将会改变什么,以什么顺序改变,从而避免许多可能的人为错误。

基于CentOS7.5安装配置Terraform

1.安装需要的工具

yum install wget unzip git

2.下载与安装Terraform


wget https://releases.hashicorp.com/terraform/0.11.13/terraform_0.11.13_linux_amd64.zip
unzip terraform_0.11.13_linux_amd64.zip
mv terraform /usr/local/bin/

测试安装是否成功,执行如下命令,如正确输出Terraform版本信息则为正确:

# terraform version

正确结果如下所示:

3.安装待管理资源相关provider

Linux 以及 Mac 中将这个二进制文件放到 ~/.terraform.d/plugins/ 中。在 Windows 当中把这个二进制文件放到用户的 “Application Data” 目录下的 terraform.d/plugins/ 下。或者插件和terrafrom放到同一个目录,本次安装放在/usr/local/terraform/路径下。

# cd /usr/local/
# mkdir -p terraform/terraform.d/plugins/
# cd terraform.d/plugins/

下载相应的provider,例如:kubernetes、mysql等provider

# git clone git@github.com:terraform-providers/terraform-provider-kubernetes
# git clone git@github.com:terraform-providers/terraform-provider-mysql
# cd terraform-provider-kubernetes

配置Go语言编译环境(provider都是基于Go语言开发的,所以要编译provider需要先配置Go语言环境,且要求Go语言版本为Go 1.11.x,本次安装版本为go1.11.9)。首先下载Go语言软件包(安装路径可自设,本次安装在/usr/local目录下):

# cd /usr/local/
# wget -c https://studygolang.com/dl/golang/go1.11.9.linux-amd64.tar.gz
# tar -zxvf go1.11.9.linux-amd64.tar.gz

设置环境变量:

# vim /etc/profile

# 在文件尾部添加如下内容
# Go path
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin

保存退出后,执行如下命令使上一步中设置的环境变量生效:

# source /etc/profile

测试go语言环境是否正常,执行如下命令如果正确输出Go语言版本则正确:

# go version

正确结果如下所示:

编译provider,执行如下命令:

# cd /usr/local/terraform/terraform.d/plugins/
#cd terraform-provider-kubernetes/
# make build
# make test

至此,Terraform自动化编排工具安装完成,可以使用它管理k8s集群,mysql数据库等。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用go-zero和Terraform实现自动化云平台部署的项目,可以分为以下几个步骤: 1. 安装go-zero和Terraform 在开始之前,您需要确保已经安装了go-zero和Terraform。您可以从官方网站下载和安装它们。 2. 创建go-zero项目 使用goctl命令创建一个新的go-zero项目: ``` goctl api new your_project ``` 这将在当前目录中创建一个新的go-zero项目。 3. 编写go-zero服务代码 在项目目录中,您可以使用goctl命令来创建一个新的服务: ``` goctl api add -plugin tf your_service ``` 这将在services目录中创建一个新的服务,该服务将使用Terraform插件。 现在,您可以在该服务中编写自己的业务逻辑代码。 4. 编写Terraform代码 在该服务的tf目录中,您可以编写Terraform代码来定义您的基础设施。 例如,您可以使用Terraform代码来定义一个新的云服务器实例: ``` resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" tags = { Name = "example-instance" } } ``` 5. 编写自动化脚本 最后,您可以编写一个自动化脚本来自动化部署您的服务和基础设施。 例如,您可以使用bash脚本来自动化部署: ``` #!/bin/bash # 编译服务 go build -o your_service # 初始化Terraform terraform init # 应用Terraform配置 terraform apply -auto-approve ``` 这将自动编译您的服务并应用您的Terraform配置来创建您的基础设施。 总之,使用go-zero和Terraform实现自动化云平台部署的项目可以简化部署流程并提高效率。但是,在使用自动化工具之前,您需要了解基础设施和自动化工具的工作原理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值