我最新最全的文章都在南瓜慢说 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. 15.Git

    1.Git介绍 1.1版本控制(理解) 无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况 1.2开发中存在的问题(理解) 程序员小明负责的模块就要完成了,就在即将提交发布之前的一瞬间 ...

  2. MySQL之数据定义语言(DDL)

    写在前面 本文中 [ 内容 ] 代表啊可选项,即可写可不写. SQL语言的基本功能介绍 SQL是一种结构化查询语言,主要有如下几个功能: 数据定义语言(DDL):全称Data Definition L ...

  3. 关于文字内容过长,导致文本内容超出html 标签宽度的解决方法之自动换行

    在标签的style 属性中设置 word-break style="word-break:break-all;" 这样就可以实现换行 上截图没设置之前 设置之后 完美解决!!!!! ...

  4. Ansible playbook编写Apache角色

    编写Apache角色:使用源码安装 在files中下载扩展包和安装包 [root@localhost project]# ls roles/httpd/files/ apr-1.6.5.tar.gz ...

  5. Linux——CentOS7添加/删除用户和用户组1

    Linux--CentOS7添加/删除用户和用户组 2017.05.02 19:58 23012浏览   前言 今天又重新装了centos7突然有关用户和用户组有关的命令记不清了,所以记一下,也方便你 ...

  6. 026.Python面向对象类的相关操作以及对象和类的删除操作

    类的相关操作 定义的类访问共有成员的成员和方法 定义的类动态添加公有成员的属性和方法 定义的类删除公有成员的属性和方法 1 定义一个基本的类 #定义一个类 class Plane(): #添加一个共有 ...

  7. IDEA 全局搜索 Jar 包中源码内容

    引言 项目开发过程中,经常遇到需要在依赖的 Jar 包查看源码,查找类方法和属性,介绍两种在 IDEA 中搜索 Jar 包内容的方式 方式一:双击 SHIFT 快捷键 输入需要查询的类名或方法名 方式 ...

  8. SystemVerilog MCDF验证结构

    MCDF的设计和验证花费的时间:(工作中假设的时间) design  cycle time  ==10days how about 验证?verify? 模块越往上(大')验证花费的时间越来越大,但是 ...

  9. 重新整理 .net core 实践篇—————配置系统之军令状[七](配置文件)

    前言 介绍一下配置系统中的配置文件,很多服务的配置都写在配置文件中,也是配置系统的大头. 正文 在asp .net core 提供了下面几种配置文件格式的读取方式. Microsoft.extensi ...

  10. vue 安装sass5.0版本遇到的问题

    cnpm install node-sass@4.9.2 --save-dev cnpm install sass-loader@7.3.1 --save-dev cnpm install style ...