我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶!

简介

最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人。

Terraform系列文章如下:

Terraform入门教程,示例展示管理Docker和Kubernetes资源

Terraform插件Provider管理,搜索、定义、下载

Terraform状态State管理,让变更有记录

Terraform模块Module管理,聚合资源的抽取与复用

Terraform常用命令

Provider即插件

Provider可理解为插件,Terraform是支持多云基础设施编排的,但光terraform这个程序只是核心功能,对于不同的云平台,需要不同的Provider来支持。这样可以非常灵活的添加平台,需要AWS的部署,就添加AWS的Provider;需要Kubernetes,就添加Kubernetes的功能。

其实一个Provider就一个程序,它是一个独立的进程,terrafrom会跟Provider通信,以完成所有功能。

搜索Provider

Provider分为四种:

  • Official:官方提供的;
  • Verified:官方认证的;
  • Community: 社区提供的;
  • Custom: 自定义的;

我们可以到( https://registry.terraform.io/browse/providers )去搜索,这里已经提供了极其丰富的Provider,基本是够用的了。

而且每个Provider都提供了很好的文档说明,如GCP:https://registry.terraform.io/providers/hashicorp/google/latest/docs

˛

定义Provider

我们可以定义需要用到哪些Provider和对应的版本,新建一个versions.tf文件,内容如下:

terraform {
required_version = "= v0.15.4" required_providers {
kubernetes = {
source = "hashicorp/kubernetes"
version = "= 2.2.0"
}
docker = {
source = "kreuzwerker/docker"
version = "= 2.12.2"
}
}
}

版本号可以用=或者>=等,灵活方便。

下载Provider

当我们定义好了Provider和对应的版本号后,就可以通过terraform init命令下载了。如下:

$ terraform init
Initializing provider plugins...
- Finding hashicorp/kubernetes versions matching "2.2.0"...
- Finding kreuzwerker/docker versions matching "2.12.2"...
- Installing kreuzwerker/docker v2.12.2...
- Installed kreuzwerker/docker v2.12.2 (self-signed, key ID 24E54F214569A8A5)
- Installing hashicorp/kubernetes v2.2.0...
- Installed hashicorp/kubernetes v2.2.0 (signed by HashiCorp)

这里有两个问题需要解决:

(1)它从哪里下载?

(2)它下载到什么地方去了?

对于Provider的定义有一个source值,格式如下:

[<HOSTNAME>]<NAMESPACE>/<TYPE>

HostName是选填的,默认是官方的 registry.terraform.io,所以它是从这个地址去下载的,当然也可以自建Terraform仓库,特别是许多大公司,不会直接连外网。

那它会下载到哪里呢?以版本Terraform v0.15.4 on darwin_amd64为例,它会下载在项目当前目录下:

$ tree -a
.
├── .terraform
│   ├── modules
│   │   └── modules.json
│   └── providers
│   └── registry.terraform.io
│   ├── hashicorp
│   │   └── kubernetes
│   │   └── 2.2.0
│   │   └── darwin_amd64
│   │   └── terraform-provider-kubernetes_v2.2.0_x5
│   └── kreuzwerker
│   └── docker
│   └── 2.12.2
│   └── darwin_amd64
│   ├── CHANGELOG.md
│   ├── LICENSE
│   ├── README.md
│   └── terraform-provider-docker_v2.12.2
├── .terraform.lock.hcl
├── main.tf
├── nginx
│   ├── main.tf
│   └── variables.tf
└── versions.tf 13 directories, 11 files

但如果每个项目都要单独下载一次,那可是太麻烦了。我们可以把所有插件都放在同一个地方,然后通过-plugin-dir来指定,如下:

$ rm -rf ./.terraform*

$ terraform init -plugin-dir=/Users/larry/Software/terraform/plugins
Initializing provider plugins...
- Finding kreuzwerker/docker versions matching "2.12.2"...
- Finding hashicorp/kubernetes versions matching "2.2.0"...
- Installing kreuzwerker/docker v2.12.2...
- Installed kreuzwerker/docker v2.12.2 (unauthenticated)
- Installing hashicorp/kubernetes v2.2.0...
- Installed hashicorp/kubernetes v2.2.0 (unauthenticated) $ tree -a
.
├── .terraform
│   ├── modules
│   │   └── modules.json
│   ├── plugin_path
│   └── providers
│   └── registry.terraform.io
│   ├── hashicorp
│   │   └── kubernetes
│   │   └── 2.2.0
│   │   └── darwin_amd64 -> /Users/larry/Software/terraform/plugins/registry.terraform.io/hashicorp/kubernetes/2.2.0/darwin_amd64
│   └── kreuzwerker
│   └── docker
│   └── 2.12.2
│   └── darwin_amd64 -> /Users/larry/Software/terraform/plugins/registry.terraform.io/kreuzwerker/docker/2.12.2/darwin_amd64
├── .terraform.lock.hcl
├── main.tf
├── nginx
│   ├── main.tf
│   └── variables.tf
└── versions.tf 13 directories, 7 files

可以看到它只是在当前目录创建了一个链接到指定plugin目录的Provider上。

如果想要自己手动下载,可以到这个网址:https://releases.hashicorp.com/

其实工作时用到的Provider就几个,直接下载好放在plugin目录即可。


欢迎关注微信公众号<南瓜慢说>,将持续为你更新...

多读书,多分享;多写作,多整理。

Terraform插件Provider管理,搜索、定义、下载的更多相关文章

  1. Terraform状态State管理,让变更有记录

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: Ter ...

  2. Terraform模块Module管理,聚合资源的抽取与复用

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: T ...

  3. Activiti第二篇【管理流程定义、执行任务和流程实例、流程变量】

    上篇Activiti只是一个快速入门案例,这篇就讲定义.部署.查看任务等等的一些细节[涉及到的数据库表.对象等等]- 管理流程定义 管理流程定义主要涉及到以下的4张表: -- 流程部署相关的表 SEL ...

  4. EasyIcon:免费图标搜索和下载平台

    EasyIcon是一个为设计师提供免费图标搜索和下载服务的网站. 步骤如下: 第一步,打开EasyIcon网站主页: http://www.easyicon.net/ 第二步,在EasyIcon网站的 ...

  5. 【形式化方法:VDM++系列】3.基于VDM++的图书管理系统需求定义

    接前文:http://www.cnblogs.com/Kassadin/p/4091040.html 1.Before We Start: 在开始图书管理系统需求定义之前,需要先进行一些说明. 1.1 ...

  6. 代码高亮插件Codemirror使用方法及下载

    代码高亮插件Codemirror使用方法及下载 - 老男孩的日志 - 网易博客 代码高亮插件Codemirror使用方法及下载   2013-10-31 16:51:29|  分类: 默认分类 |   ...

  7. python一键电影搜索与下载

    代码地址如下:http://www.demodashi.com/demo/14313.html python一键电影搜索与下载 概述 使用python搜索并爬取豆瓣电影信息,包括评分,主演,导演,类型 ...

  8. JBPM4.4_管理流程定义

    1. 管理流程定义 没有更新功能 1.1. 部署流程定义 注意区分Deployment与ProcessDefinition 1.1.1. 示例代码1:流程定义有关文件在classpath中 Strin ...

  9. 4. docker镜像的概念、管理(查看、下载、删除)

    镜像的概念 镜像是一个包含程序运行必要依赖环境和代码的只读文件,它采用分层的文件系统,将每一次改变以读写层的形式增加到原来的只读文件上.镜像是容器运行的基石. 下图展示的是Docker镜像的系统结构. ...

随机推荐

  1. 笔记·RCNN系相关

    这篇博客总述了从RCNN到Mask RCNN的发展过程 https://blog.csdn.net/heavenpeien/article/details/80534963 简单的说,Fast RCN ...

  2. centos 7 启动和关闭zabbix 服务

    systemctl start zabbix-server  启动服务端 systemctl stop zabbix-server  停止服务端 systemctl start zabbix-agen ...

  3. 045.Python线程队列

    线程队列 1 基本语法和用法 put 往线程队列里防止,超过队列长度,直接阻塞 get 从队列中取值,如果获取不到,直接阻塞 put_nowait: 如果放入的值超过队列长度,直接报错(linux) ...

  4. CSS 四种引入样式表优缺点分析

    CSS 四种引入样式表 CSS 有四种方式引入样式表,如下: 外部样式表 内部样式表 行内样式表 导入样式表 外部样式表优缺点 优点 实现了结构与表现的代码完全分离 方便复用及维护 因为分离到各自独立 ...

  5. Linux 性能监控工具

  6. kafka之一:kafka简介

    现在从事java开发的同学,不论是在面试过程中还是在日常的工作中,肯定会碰到消息队列的情况,市面上消息队列有很多:kafka.rocketMQ.rabbitMQ.zeroMQ等,从本篇博客起计划分享一 ...

  7. node.js学习(7)流和管道

    1 导入模块 输入流 # 读取流 # 写入流 # # 管道 # 压缩 # 解压缩

  8. 将视频插入视频:CVPR2019论文解析

    将视频插入视频:CVPR2019论文解析 Inserting Videos into Videos 论文链接: http://openaccess.thecvf.com/content_CVPR_20 ...

  9. 旷视MegEngine网络搭建

    旷视MegEngine网络搭建 在 基本概念 中,介绍了计算图.张量和算子,神经网络可以看成一个计算图.在 MegEngine 中,按照计算图的拓扑结构,将张量和算子连接起来,即可完成对网络的搭建.M ...

  10. HiLink & LiteOS & IoT芯片 让IoT开发简单高效

    HiLink & LiteOS & IoT芯片让IoT开发简单高效 华为HiLink & LiteOS & IoT芯片使能三件套,让IoT开发更简单高效.下一代智能手机 ...