Terraform
文章平均质量分 72
terraform
富士康质检员张全蛋
人生实难,唯有自渡。只有接受了真实现的现状和真实的自己,调整好心态,才能脚踏实地的活着,然后去发现角落处的那些惊喜和美好,去相信一切苦难困境都会过去!“即使身处阴沟,也要记得仰望星空”。
展开
-
Terraform 华为云最佳实践
之后在network下面创建其backend。}}配置好backend之后就去init一下。init完之后就去模块化资源,然后创建vpc和安全组。(反正就是注意使用variable去定义模块需要传入的参数和output模块需要输出的参数)注意vpc里面需要设置gateway的IP,这是一个特殊的地方。}}接下来就是创建安全组和规则了。网络这块是单独使用state进行存储的,后面在创建ecs和service的时候,需要使用到这里的输出,所以需要将vpc和subnet的id都得拿出来。原创 2022-11-28 14:36:36 · 11433 阅读 · 0 评论 -
Terraform 基础 云计算概述 基础设施即代码
之前机器在数据中心,现在不是了,现在统一放到了云供应商那边,也就是说由云供应商帮我们统一的去管理,比如数据库,还有我们的机器,还有存储,网络这些,这些都交给了云供应商去维护,我们不需要维护它了,而基于这些,形成了云计算的服务,这样就形成了按需购买,需要多少就支付多少,这样就降低了很高的成本。使用云计算,也有了弹性,根据业务的抖动,来实现动态的扩缩容。将私有云和公有云打通了,通过两个云共享数据。在资源的使用上面,就需要在机房里面管理哪些机器了,而是给你一个控制台让你操作。原创 2022-10-26 09:26:31 · 4536 阅读 · 0 评论 -
Terrform 基础 工作流
了解k8s的知道,我们会去写一些yml类型的文件,写完yml之后,使用了kubectl这个工具去创建,其实这个工具调用的就是k8s的api,最后将我们的资源创建出来,它可能是个pod。tf根据我们的配置文件去操作provider,去操作每个云的插件,每个云的供应商都会提供对应的插件,比如aws可能就提供了aws插件,这个插件最后操作的就是云的api。tf核心工作流程,writer阶段,就是我们去写,去定义我们所需要的资源,这一块其实就是让我们去修改配置文件,写配置文件就是我们需要什么资源。原创 2022-10-21 10:09:39 · 1923 阅读 · 0 评论 -
Terraform 基础 开发环境配置
插件好了就是其语法了,tf现在支持两种语法,一种是使用官方的语言HCL这种配置语言,专门去写tf,它的特点是每个人看起来读起来好读。还有一种格式json,它是非常适用在做系统集成的时候,你写json字段来描述你所定义的资源。当然放在一个文件里面也是可以的,后面多了维护起来就比较臃肿,所以建议简单拆开。以tf文件的都会自动去加载,只不过为了方便区分,这里面定义的都是变量,都分离出来了,定义了云供应商版本信息。除了看到上面看到的资源之外,它还支持内置的函数,还有变量的输出,数据源等等。原创 2022-10-22 12:44:45 · 1417 阅读 · 0 评论 -
Terraform 配置阿里云RAM账户
这里以阿里云为例,这里需要去阿里云上开一个账号,RAM是访问控制的一个账号,专门管理用户账号的,在企业里面不建议使用root账号去操作,一般开通具有固定资源操作权限的子账号给大家去使用。在tf里面使用的是provider,它最后调用的也是云供应商提供的api接口,所以账号也需要授予open api的访问。用户添加之后有个注意事项,就是需要在这里设置权限。因为后面要操作的是阿里云上面的资源,比如要管理安全组,vpc,那么需要添加权限。上面就是用户的配置,就是创建用户,然后将key保存下来,最后授予权限。原创 2022-10-22 13:42:35 · 1179 阅读 · 0 评论 -
Terraform基础 配置阿里云Provider
既然要操作阿里云,那么就需要使用阿里云的provider其实和阿里云这块在调用API,其实就是terraform里面的一个插件,tf里面是通过provider来管理这些基础设施的,所以terraform其实也是通过各个云供应商它的api来进行交互的。每个provider里面都包含了很多的资源,资源就是阿里云上面看到的云产品,如api-gateway,还有ecs,dns,等等这些产品可以理解为是资源。所以provider里面都包含了阿里云里面所有的资源。原创 2022-10-22 16:04:51 · 2286 阅读 · 0 评论 -
Terraform 初始化慢~配置本地离线源
在.terraformrc 中添加filesystem_mirror}}原创 2022-11-25 18:14:39 · 12081 阅读 · 0 评论 -
Terraform 基础 定义阿里云资源 VPC、安全组
其实你对照控制台上面的字段,就可以看到非常简单,都代码化了。上面全部就是定义阿里云的资源。原创 2022-10-24 15:58:55 · 2626 阅读 · 0 评论 -
Terraform 基础 申请阿里云资源
stat文件是状态文件,第一次tf创建了资源,会将当前的状态记录下来,第二次再定义的时候会去拿这个状态和我的期望状态做对比,有哪些差异,然后去变更这些差异。申请这些资源就需要使用terraform的命令行了,开始初始化后端,后端是有存储文件的,默认情况下是在本地存储的,然后会多一些文件。上面都是交互需要输入yes,如果你确定没有问题了,那么加上自动的选项,-auto-approve,就不会输出信息了,就直接申请就行了。可以看到VPC ID,网段信息,region信息,用户网段,创建时间,状态。原创 2022-10-25 16:05:10 · 4116 阅读 · 0 评论 -
Terraform 语法 provider插件
语法是terraform最重要的一点,有两个部分来讲解,第一部分是基础,第二部分是更加高级的扩展。后面各种实践其实就是对terraform语法编写。第一部分是provider插件,provider提供了资源和数据源,插件,资源,数据源都是三个比较重要的内容。其次是变量和输出。原创 2022-10-26 15:35:41 · 4437 阅读 · 0 评论 -
Terraform 语法 resource
首先你得知道在哪个区域创建ecs,创建的时候选择镜像,操作系统,然后是系统盘多大,cpu,内存这些规格大小。resource是我们的资源,一般在terraform里面定义的都是资源,是个非常重要的角色。第一个是可用区,第二个是安全组,之前创建过安全组,然后加了两条安全组的规则,80和22。关键字resource+资源类型(比如dns,ecs,vpc,交换机)+资源的名称。对于资源我们只需要了解它的主体,它的结构,接下来就可以开始定义ecs。分配公网IP,带宽,安全组,弹性网卡,ipv6。原创 2022-10-26 16:45:51 · 4560 阅读 · 0 评论 -
Terraform 语法 DataSource 数据源
通过data定义数据源,然后里面的属性是帮助我们去筛选数据的,因为镜像有很多种类型,可能来自于公共市场,也有可能自己定义的,还有系统,阿里这边提供的。provider里面有很多很多的数据源,我们都可以去使用,这里语法是以data关键字开头的,然后后面是它的类型,最后语句块里面就是筛选的条件参数了。这里的镜像就是创建ecs的时候我们选择的镜像,我们在选镜像的时候也不知道镜像对应的ID是多少,这个其实可以通过provider里面去查到。可以看到所有镜像的id都可以拿到,这些镜像都是我们筛选的结果。原创 2022-10-27 14:24:19 · 4487 阅读 · 0 评论 -
Terraform 语法 variable变量 local本地变量的使用
在执行tf部署的时候,传递一个变量是region,可以通过-var,如果是传递很多变量,那么就写多个-var,变量类型有很多,比如list类型,注意使用单引号引用起来。变量参数类型还是很多的,之前在其他语言里面声明了变量,可能是字符串,或者是一个数值,或者是一个布尔值,甚至是any包含了下面的任意对象。之前在写tf的模板文件的时候用了很多变量,比如在写认证信息的时候,定义的变量存放了阿里云的ak和sk,最后就是region的信息。上面图片注意,一个是声明变量,另外一个是定义变量,那么tf才能读取进来。原创 2022-10-28 14:24:18 · 5881 阅读 · 0 评论 -
Terraform 语法 module模块 简介/封装/实践
一个目录下就是一个模块,只不过它叫做根模块。在生产环境代码下都是根模块下面有很多子模块,甚至子模块里面还有子模块。(之前所有文件在一起,其实就已经是一个模块了,之前是大模块,里面没有子模块,现在需要做的就是添加子模块)建议就是根模块和子模块,不易套太深,套太深那么可读性和维护性都会变的很差了,到时候不方便去管理。一个目录下所有.tf文件组成的就是一个模块。这些模块写的资源的语法都是一致的。如果你是json语法,那么会有很多.json结尾的文件组成模块。原创 2022-11-04 09:30:19 · 5963 阅读 · 0 评论 -
Terraform 语法 本地变量
可以通过locals关键子,语句块里面去声明我所需要的变量。在引用的时候是local.变量名。上面就是本地变量的使用方法。本地变量都是通过locals语句块来操作的。本地变量是方便我们测试,或者默认值初始化的时候是非常好用的。本地变量声明和使用就和我们之前定义的变量就不太一样了。变量分为局部变量和全局变量,上面是局部变量。原创 2022-10-29 15:24:26 · 4029 阅读 · 0 评论 -
Terraform expressions 表达式
在写region的时候,定义ecs这些属性的时候,都会使用到特定的语句,比如说循环,遍历,条件判断。上面也就是如果我这个值不为空,我们采用的是这个var.region的值。这是一个动态的表达式,尤其是VPC,镜像的id也会使用到这些。可以便利的对象一个是list,还有一个是map,还有一个set集合。学习表达式就是为了以后在写tf的时候,能够顺利,简化的去写。上面就是条件表达式的一个用法。上面第一行是遍历集合,或者列表,另外一个是遍历map。调试,进入console的时候,是在项目的根模块进去。原创 2022-11-04 15:40:48 · 4192 阅读 · 0 评论 -
Terraform Output 变量输出
比如在写esc代码的时候,创建两台ecs,总不能定义两个ecs资源吧,定义一次,改改参数就行了,或者直接引用。这样就可以在模块里面加上output,将IP打印出来,一个是打印,另外一个是另外模块调用它的IP。比如有两个模块,一个模块a,一个模块b。比如要想返回ecs的IP,那么提供为另外一个模块去引用。output可以理解为它是一个变量,只不过它是输出变量。它主要的是帮我们打印变量。其实每一个目录都可以理解为一个模块,最外层的模块叫做根模块。如果是私密的消息,那么就可以让其不打印。原创 2022-10-29 16:28:14 · 5001 阅读 · 0 评论 -
Terraform 内置函数 Functions
现在学习terraform语言其实就是HCL这样的语言,它是由hashcrop创造的这门语言,它是专门用来定义基础设施即代码的语言。join两个参数,第一个参数是以什么符号进行拼接,然后后面就是参数值。只要掌握这门语言,在写基础设施的时候,以及编排的时候就容易一些。可以取list里面最大值,以...结尾,注意这里的值必须是数值。这语言包含了输入输出变量,语句,以及运算符,循环,遍历等等。一些内置的值可以通过函数来进行处理。split最后返回的是list。原创 2022-11-08 10:36:14 · 4491 阅读 · 0 评论 -
Terraform 华为云实践 项目初始化
这个架构就是DNS加上负载均衡加ecs,最后vpc的架构。网络这块是DNS和VPC,对象存储是用来做terraform的后端来配置。原创 2022-10-31 14:19:29 · 4244 阅读 · 0 评论