前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >terraform初体验

terraform初体验

作者头像
Python研究所
发布2022-06-17 08:22:25
1.7K0
发布2022-06-17 08:22:25
举报
文章被收录于专栏:大飞的部落阁大飞的部落阁

前言

Terraform 的大名我知道很久了,但是一直没有机会体验。刚好最近正在研究关于 PyVmomiLibCloud,顺便也对 Terraform 进行了简单体验,特此分享给大家。

关于 Terraform

Terraform 是一种开源的基础设施即代码软件工具,它提供了一致的 CLI 工作流来管理数百个云服务。Terraform 将云 API 编码为声明式配置文件。这个声明式配置文件以.tf 结尾。

呆猫

我们通过创建 opensatck 虚机实例来清晰的了解 Terraform 的使用方式。

安装 Terraform

我们可以从 Terraform 官网下载最新版本。 下载链接:https://releases.hashicorp.com/terraform/1.1.6/terraform_1.1.6_windows_amd64.zip

下载完成后,解压压缩包,然后将 Terraform 所在的文件目录添加到环境变量,最后通过 cmd 命令 terraform -version 确定安装是否成功。

terraform版本
terraform版本

下载 terraform-provider-openstack

首先我们创建一个名为 trfm_demo 的文件夹用来作为 terraform 的项目包。

我们计划使用 terraform 对接 openstack,对 openstack 的资源进行操作编排。所以我们首先需要安装 terraform-provider-openstack,这是 terraform 操作 openstack 的插件。

我们可以在配置好 tf 文件后使用 terraform init 进行在线下载,由于国内网速堪忧,所以我们直接到 github 上去找到 terraform-provider-openstackrelease 包下载,然后将压缩包解压到.\trfm_demo\.terraform\plugins\registry.terraform.io\terraform-provider-openstack\openstack\1.47.0\windows_amd64\下即可。

编写 tf 文件

我们在 trfm_demo 中创建一个名为 main.tf 的描述文件。

main.tf 文件是对云环境认证,资源编排的描述。

代码语言:javascript
复制
terraform {
  required_version = ">= 0.14.0"
  required_providers {
    openstack = {
      source  = "terraform-provider-openstack/openstack"
      version = "~> 1.47.0"
    }
  }
}

provider "openstack" {
  user_name   = "admin"
  tenant_name = "admin"
  password    = "pwd@pwd"
  cloud       = "default"
  region      = "RegionOne"
}

resource "openstack_compute_instance_v2" "boot-from-volume" {
  name            = "boot-from-volume"
  flavor_id       = "e49548cf-a756-4f01-8967-bfc45be67662"
  security_groups = ["default"]

  block_device {
    uuid                  = "949b1ee2-0ea1-4b0a-a272-e832aaf81724"
    source_type           = "image"
    volume_size           = 55
    boot_index            = 0
    destination_type      = "volume"
    delete_on_termination = true
  }

  network {
    name = "Net29"
  }
}

以上,openstack 的认证信息之所以选择 cloud 字段,是因为直接使用 auth_url 存在问题,所以选择使用 openstack 支持的clous.yaml方式。

clouds.yaml 内容:

代码语言:javascript
复制
clouds:
  default:
    auth:
      auth_url: https://xxx.cloud.com:5000/v3
      project_name: admin
      tenant_name: admin
      username: admina
      password: pwd@pwd
      user_domain_name: Default
      project_domain_name: Default
    region_name: RegionOne
    verify: False
    interface: public
    identity_api_version: "3"

terraform init

init 之前我们可以采用 terraform fmt 来对 tf 文件进行格式化校验。

在完成以上步骤后,我们就可以开始进行初始化了,使用命令 terraform init 完成项目初始化。这个过程中会检查文件合法性和下载依赖,但是因为我们计划使用离线的方式,所以我们在初识化的时候借助参数 -plugin-dir .\.terraform\plugins\ 来使用本地插件。

初始化
初始化

terraform plan

顾名思义,plan 过程是对 tf 中描述的资源进行检查的过程,同时会告诉你将要创建的资源。只会列出资源,不会创建资源。

plan过程
plan过程

terraform apply

apply 过程即实际创建过程,这个过程中,terraform 会向你确认是否要创建资源,你确认 yes 后就会开始根据描述文件向 openstack 创建资源了。

apply过程
apply过程

我们看到最后提示 add 一个资源成功,即成功创建一个虚机资源。我们前去 openstack 进行确认。

资源创建中
资源创建中

我们可以看到在 openstack 上资源已经开始创建了,是一个从卷启动的虚机,没有任何问题。

Q&A

1、Terraform 怎么支持 https 协议?

问题描述:

当我们的环境 public endpointhttps 协议时,我们在 apply 的时候会报 auth_url 证书相关的错误,但是我找了一圈没有找到如何配置忽略证书。

解决方案:

经过查询官方文档,我发现 Terraform 是支持 openstackclouds.yaml 的,在 clouds.yaml 中我们可以配置 https 协议的 auth_url

cloud配置
cloud配置
代码语言:javascript
复制
provider "openstack" {
  user_name   = "admin"
  tenant_name = "admin"
  password    = "pwd@pwd"
  cloud       = "default"
  region      = "RegionOne"
}
yaml文件位置
yaml文件位置

2、Terraform init 很慢怎么办?

问题描述:

我们在 terraform init 过程中,terraform 需要从 github 下载 provider 包,但是由于国内访问 github 慢如牛,所以会出现各种问题。

解决方案:

我们可以复制 github 上的 terraform-provider-openstack 包地址,然后使用 github 加速器进行下载,然后根据上面的教程,将插件放到项目的指定位置,然后在 init 过程中使用 -plugin-dir 参数指定插件路径使用本地插件,问题即可解决。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 关于 Terraform
  • 呆猫
    • 安装 Terraform
      • 下载 terraform-provider-openstack
        • 编写 tf 文件
          • terraform init
            • terraform plan
              • terraform apply
              • Q&A
                • 1、Terraform 怎么支持 https 协议?
                  • 2、Terraform init 很慢怎么办?
                  相关产品与服务
                  资源编排 TIC
                  资源编排 TIC 为您提供易用、高效、安全的基础架构管理平台。平台使用声明型语言,兼容众多优秀的开源社区工具,同时提供代码编辑和视图编辑两种模式,有效降低学习成本和使用难度。TIC 使用代码版本管理的方式管理基础架构,保障基础设施的构建、管理和迁移的可靠性和安全性。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档