Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >terraform初体验

terraform初体验

作者头像
Python研究所
发布于 2022-06-17 00:22:25
发布于 2022-06-17 00:22:25
1.8K00
代码可运行
举报
文章被收录于专栏:大飞的部落阁大飞的部落阁
运行总次数:0
代码可运行

前言

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-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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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 中描述的资源进行检查的过程,同时会告诉你将要创建的资源。只会列出资源,不会创建资源。

terraform apply

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

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

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

Q&A

1、Terraform 怎么支持 https 协议?

问题描述:

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

解决方案:

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
provider "openstack" {
  user_name   = "admin"
  tenant_name = "admin"
  password    = "pwd@pwd"
  cloud       = "default"
  region      = "RegionOne"
}

2、Terraform init 很慢怎么办?

问题描述:

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

解决方案:

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
terraform简单的开始-简单分析一下内容
紧跟上文:terraform简单的开始-安装和一些配置.先对照上一章文章的main.tf进行一下解读
对你无可奈何
2023/09/15
3400
Grafana 系列-GaC-2-Grafana Terraform Provider 基础
Grafana provider 为 Grafana 提供配置管理资源。是目前 Grafana 官方提供的,覆盖的 Grafana 资源最全的 IaC 工具。
东风微鸣
2023/09/01
3730
Grafana 系列-GaC-2-Grafana Terraform Provider 基础
云计算/云存储---Ceph和Openstack的cinder模块对接方法
在ceph节点两次执行如下语句,两次{your-openstack-server}分别填控制节点和计算节点IP。
yaohong
2019/09/11
2K0
云计算/云存储---Ceph和Openstack的cinder模块对接方法
terraform-远程状态存储
默认情况下,terraform在运行完后,会在当前目录下生成state状态文件,里面存储的是上一次执行成功后的资源状态。
保持热爱奔赴山海
2022/01/11
1.9K0
terraform-远程状态存储
云原生 | Terraform 初体验
Terraform 是一种安全有效地构建、更改和版本控制基础设施的工具(基础架构自动化的编排工具)。
TeamsSix
2022/09/20
1.9K0
云原生 | Terraform 初体验
Terraform实战
Terraform是一种部署技术,任何想要通过基础设施即代码(Infrastructure as Code,IaC)方法来置备和管理基础设施的人,都可以使用这种技术。基础设施指的主要是基于云的基础设施,不过从技术上讲,任何能够通过应用程序编程接口(Application Programming Interface,API)进行控制的东西都可以算作基础设施。基础设施即代码是通过机器可读的定义文件来管理和置备基础设施的过程的
yeedomliu
2024/01/23
4230
Terraform实战
Centos7上部署openstack ocata配置详解
之前写过一篇《openstack mitaka 配置详解》然而最近使用发现阿里不再提供m版本的源,所以最近又开始学习ocata版本,并进行总结,写下如下文档
yaohong
2019/09/11
1.7K0
Centos7上部署openstack ocata配置详解
terraform简单的开始-安装和一些配置
浏览器打开terraform官方主页https://www.terraform.io/ 点击Download Terraform 跳转到程序下载页面:
对你无可奈何
2023/09/13
7820
解决Terraform初始化慢~配置本地离线源
本次实践使用的是Linux/Mac 系统,如果是windows系统有两点不同的配置。
DevOps云学堂
2022/04/25
2K0
解决Terraform初始化慢~配置本地离线源
使用Terraform配置Linode环境
基础架构代码(IaC)是一种软件,使开发人员能够使用高级配置语法构建,管理和配置计算环境。一些好处包括能够实施DevOps最佳实践,流程自动化以及使用版本控制系统在团队中实现更高可见性和协作的机会。
GongAo啊_
2018/09/10
3.7K0
使用Terraform配置Linode环境
Ubuntu 20.04 搭建OpenStack Yoga(allinone)
很多文章都是devstack安装的allinone,我这里使用源码组件手动安装。
全栈程序员站长
2022/11/17
3.7K0
Openstack之Newton
一、组网需求: 1、如下图所示,某用户内网被划分为VLAN 10、VLAN 20、VLAN 30,以实现相互间的2 层隔离; 2、3 个VLAN 对应的IP 子网分别为192.168.10.0/24 、192.168.20.0/24 、192.168.30.0/24,3 个VLAN 通过3 层核心交换机的IP 转发能力实现子网互连。 三、配置要点: 本用例以核心交换机和1 台接入交换机为例说明配置过程。要点如下: 1)在核心交换机配置3 个VLAN,配置下连接入交换机的端口为trunk 口 2)在核心交换机配置3 个SVI 口,分别作为3 个VLAN 对应IP 子网的网关接口,配置对应的IP 地址; 3)分别在3 台接入交换机创建VLAN,为各VLAN 分配Access 口,指定上连核心交换机的trunk 口。本用例以接入交换机Switch A 为例说明配置步骤。
ZHaos
2019/02/27
9820
Terraform 入门
为了使Terraform能够对你的AWS账户进行直接操作,需要将环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY
yeedomliu
2021/12/10
2.7K0
Terraform 入门
完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建
公司在IDC机房有两台很高配置的服务器,计划在上面部署openstack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务。 以下对openstack的部署过程及其使用做一详细介绍,仅仅依据本人实际经验而述,如有不当,敬请指出~ ******************************************************************************************************************************** 1 OpenSt
洗尽了浮华
2018/01/22
12.8K2
完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建
(十)OpenStack---M版---双节点搭建---Heat安装和配置
↓↓↓↓↓↓↓↓视频已上线B站↓↓↓↓↓↓↓↓ 》》》》》》传送门 本章节仅在Controller节点执行 1.Controller节点执行安装和配置 2.验证操作 1.Controller节点执行安装和配置 1.创建数据库 # mysql -uroot -p000000 > create database heat; > grant all privileges on heat.* to 'heat'@'localhost' identified by '000000'; > grant all priv
指剑
2022/07/15
4170
(十)OpenStack---M版---双节点搭建---Heat安装和配置
Terraform快速入门到入土
不过这里值得注意的是,可以看到使用docker ps -a 并没有找到我们停止的容器,所以这里是将这个容器删除了,因为我们正常停止一个容器的时候,使用docker stop,但是在docker ps -a中,我们可以看到已经停止的容器,可以使用docker start 重新将它启动,但是这里是直接将这个容器删除
UzJu@菜菜狗
2022/04/25
2.8K0
Terraform快速入门到入土
(八)OpenStack---M版---双节点搭建---Cinder安装和配置
↓↓↓↓↓↓↓↓视频已上线B站↓↓↓↓↓↓↓↓ 》》》》》》传送门 1.创建数据库并授权 2.获得admin凭证执行管理员命令并创建服务证书 3.创建块存储设备API接口 4.Controller节点安装块存储组件并配置 5.初始化块设备服务的数据库 6.配置计算节点以使用块设备存储 7.重启服务并设置开机启动 8.Compute节点安装并配置一个存储节点,此处用Compute节点代替 9.验证操作 1.创建数据库并授权 # mysql -uroot -p000000 > create database c
指剑
2022/07/15
4930
(八)OpenStack---M版---双节点搭建---Cinder安装和配置
从零开始搭建Openstack-Pike(Ubuntu 16.04桌面版)
找一个服务器(自己的电脑也行),使用 Ubuntu-16.04.7 的镜像创建两个虚拟机。
奇门水镜
2021/12/23
2.1K1
从零开始搭建Openstack-Pike(Ubuntu 16.04桌面版)
Terraform 最佳实践:典型文件布局
•global:用于运行各种环境下都要共享的资源(如:Terraform backend - S3、IAM)
东风微鸣
2022/04/22
2.9K0
OpenStack云计算之路-Mitaka 版本
1.1 云计算简介 云计算(英语:cloud computing ),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备。 云计算是继1980年代
惨绿少年
2018/03/30
6.3K0
相关推荐
terraform简单的开始-简单分析一下内容
更多 >
LV.1
这个人很懒,什么都没有留下~
作者相关精选
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验