Terraform插件Provider管理,搜索、定义、下载
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶!
简介
最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人。
Terraform系列文章如下:
Terraform入门教程,示例展示管理Docker和Kubernetes资源
Terraform插件Provider管理,搜索、定义、下载
Terraform模块Module管理,聚合资源的抽取与复用
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管理,搜索、定义、下载的更多相关文章
- Terraform状态State管理,让变更有记录
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: Ter ...
- Terraform模块Module管理,聚合资源的抽取与复用
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: T ...
- Activiti第二篇【管理流程定义、执行任务和流程实例、流程变量】
上篇Activiti只是一个快速入门案例,这篇就讲定义.部署.查看任务等等的一些细节[涉及到的数据库表.对象等等]- 管理流程定义 管理流程定义主要涉及到以下的4张表: -- 流程部署相关的表 SEL ...
- EasyIcon:免费图标搜索和下载平台
EasyIcon是一个为设计师提供免费图标搜索和下载服务的网站. 步骤如下: 第一步,打开EasyIcon网站主页: http://www.easyicon.net/ 第二步,在EasyIcon网站的 ...
- 【形式化方法:VDM++系列】3.基于VDM++的图书管理系统需求定义
接前文:http://www.cnblogs.com/Kassadin/p/4091040.html 1.Before We Start: 在开始图书管理系统需求定义之前,需要先进行一些说明. 1.1 ...
- 代码高亮插件Codemirror使用方法及下载
代码高亮插件Codemirror使用方法及下载 - 老男孩的日志 - 网易博客 代码高亮插件Codemirror使用方法及下载 2013-10-31 16:51:29| 分类: 默认分类 | ...
- python一键电影搜索与下载
代码地址如下:http://www.demodashi.com/demo/14313.html python一键电影搜索与下载 概述 使用python搜索并爬取豆瓣电影信息,包括评分,主演,导演,类型 ...
- JBPM4.4_管理流程定义
1. 管理流程定义 没有更新功能 1.1. 部署流程定义 注意区分Deployment与ProcessDefinition 1.1.1. 示例代码1:流程定义有关文件在classpath中 Strin ...
- 4. docker镜像的概念、管理(查看、下载、删除)
镜像的概念 镜像是一个包含程序运行必要依赖环境和代码的只读文件,它采用分层的文件系统,将每一次改变以读写层的形式增加到原来的只读文件上.镜像是容器运行的基石. 下图展示的是Docker镜像的系统结构. ...
随机推荐
- 在微信框架模块中,基于Vue&Element前端的事件和内容的管理
在微信后台管理中,我们需要定义好菜单对应的事件管理,因为微信通过菜单触发相关的事件,因此菜单事件的响应关系,我们如果处理好,就能构建出我们的微信应用入口了.通过入口,我们可以响应用户菜单的事件,如响应 ...
- 白日梦的MySQL专题(第33篇):各种登陆MySQL的骚操作
阅读原文 系列文章公众号首发,点击阅读原文 前置知识 我们想登陆到mysql中前提是肯定需要一个用户名和密码:比如 mysql -uroot -proot 在mysql中用户的信息会存放在 mysql ...
- 统一UOS操作系统 修改源地址
统一UOS操作系统 修改源地址 问题: 执行apt-get update的时候提示: root@sugon-PC:/etc/apt# apt-get update -y错误:1 https://uos ...
- 保存 yum 下载的软件包并制作成本地 yum 源
保存 yum 下载的软件包并制作成本地 yum 源 实验对象 CentOS 7 yum 安装 nginx (nginx必须使用第三源才能安装:redhat8版本的则不需要,官网源自带nginx软件包) ...
- k8s运行容器之Job应用(6)
容器按照持续运行的时间可分为两类:服务类容器和工作类容器. 服务类容器通常持续提供服务,需要一直运行,比如 http server,daemon 等.工作类容器则是一次性任务,比如批处理程序,完成后容 ...
- OSI七层模型与TCP/IP五层模型-(转自钛白Logic)
OSI七层模型与TCP/IP五层模型 博主是搞是个FPGA的,一直没有真正的研究过以太网相关的技术,现在终于能静下心学习一下,希望自己能更深入的掌握这项最基本的通信接口技术.下面就开始 ...
- lvscan 查看系统中存在的所有LVM逻辑卷
相关命令:lvresize,lvreduce,lvextend,lvdisplay,lvcreate,lvremove lvscan指令:扫描逻辑卷[语 法]lvscan [选项][功能介绍]l ...
- USB NCM介绍
1 功能概述 USB NCM,属于USB-IF定义的CDC(Communication Device Class)下的一个子类:Network Control Model,用于Host和Device ...
- Linux下使用LVM管理(扩展/缩小/删除)
LVM的工作原理 LVM( Logical Volume Manager)逻辑卷管理,是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件 ...
- 『言善信』Fiddler工具 — 3、Fiddler界面布局详解【菜单栏】
目录 (一)Fiddler界面布局介绍 (二)菜单栏 1.File文件菜单: 2.Edit编辑菜单: 3.Rules规则菜单: 4.Tools工具菜单: 5.View视图菜单: 6.Help帮助菜单: ...