您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

玩转阿里云Terraform(四):Terraform常用命令详解 <网站代码>

  • 时间:2022-10-12 18:20 编辑: 来源: 阅读:313
  • 扫一扫,手机访问
摘要:玩转阿里云Terraform(四):Terraform常用命令详解 <网站代码>
通过前面几篇文章的详细介绍,相信你对Terraform有了大致的熟悉和了解。本文将从实践出发,给大家详细介绍Terraform的几个常用命令。 Terraform是一个面向客户端的工具,所以所有资源都由Terraform命令管理。 本文将集中讨论资源管理和状态管理,以详细说明所涉及的常用命令。 1资源管理常用命令Terraform对资源的管理主要是资源生命周期的管理,即通过命令实现对Terraform模板中定义的资源的创建、修改、查看和删除。 对于这部分的讲解,在上一篇文章《Terraform一分钟部署阿里云ECS集群》的3.3章有详细的细节和代码演示,大家可以一步步了解。 本文只做一个基本的回顾。 1.1 terraform计划:资源预览计划命令用于预览模板中定义的资源,主要针对以下场景:预览当前模板中定义的资源是否能满足管理预期,类似于Markdown的预览功能。如果相应的状态文件已经存在于当前模板中,那么plan命令将显示模板定义和状态文件内容之间的差异结果。如果有任何变化,结果将显示并显示在下面。对于DataSource,执行plan命令,可以直接获取并输出要查询的资源及其属性。1.2 terraform apply:创建和更改资源。apply命令用于创建和更改实际资源。出于安全考虑,在命令操作过程中增加了一个人工交互过程,即需要人工确认是否继续。当然,手动确认过程也可以通过- auto-approve参数跳过。 apply命令适用于以下情况:创建新资源,并通过修改模板参数来修改资源的属性。如果从当前模板中删除了资源的定义,则应用命令将完全删除该资源。 可以理解为“资源的去除也是一种改变”。1.3 terraform show:resources的show命令用于显示当前状态下所有被管理的资源及其所有属性值。 1.4 terra form destroy:resource release destroy命令用于释放资源。出于安全考虑,在命令执行过程中,还增加了一个人为交互的过程。如果想跳过手动确认操作,可以通过- force参数跳过。 Terraform destroy默认会释放当前模板中定义的所有资源。如果只想释放特定的资源,可以使用参数-target =:。& lt名称>:指定 1.5 terraform导入:资源的导入import命令用于将已有的云资源导入terraform状态,然后添加到terraform的管理系统中。适用场景包括但不限于以下:Terraform从未被用于控制任何资源。目前所有现有的云资源都是通过控制台,阿里云CLI,或者ROS直接调用API来创建和管理,现在想切换到Terraform管理。在不影响资源正常使用的前提下,对资源模板中的资源定义进行了重构。阿里云的提供者进行了兼容性更新,新的提供者对原模板定义的资源支持更多的参数,需要同步最新的参数。如何通过导入实现对存量资源的管理,在《揭开存量云资源的管理难题》一文中已经有详细描述,这里不再赘述。 1.6 terraform taint:将资源标记为“受污染”。taint命令用于将资源标记为“受污染”。再次执行apply命令时,会先释放被污染的资源,然后再创建一个新的,相当于先删除这个特定的资源,再创建一个新的。 命令的详细格式是:Terraform taint:。& ltName >:,比如$ terraform taint阿里云_ vswitch。这个资源实例阿里云_ vswitch。这已被标记为已暂停。1.7 Terraform untaintt:取消“被污染”的标记un tain命令是tain的逆操作,用来取消“被污染”的标记,恢复到正常状态。 命令的详细格式类似于taint: terraform untaint:。& ltName >:,比如$ terraform untaint阿里云_ vswitch。这个资源实例阿里云_ vswitch。这已被成功解除训练。1.8 Terraform输出:打印出模板中显示的参数及其值。如果定义了output参数,则输出的值将显示在apply命令之后,但不会显示plan命令。如果想随时随地快速查看输出的值,可以直接运行命令Terraform output:$ terra form outputvswitchid = vsw-GW 8 GL 31 wz * * * * * * 2状态管理的常用命令terra form管理资源状态,实际上就是状态文件中的数据管理。 状态文件保存Terraform管理的所有资源及其属性,内容由Terraform自动存储。为了保证数据的完整性,不建议手动修改状态内容。 对状态数据的操作可以通过terraform state命令来完成。 2.1平台状态列表:根据<资源类型>:,列出当前状态状态列表中的所有资源。& ltName >:格式列出当前状态下存在的所有资源(包括数据源),例如:$ Terraform State List Data。SLBS阿里云。VPC的默认云。DefaultAlicloud _ Vswitch。这个2.2 Terraform状态显示:显示一个资源的属性。state show命令基于键值。该格式显示特定资源的所有属性和值,该命令的完整格式是Terraform State Show:。& ltName >:,例如$ terra form state show Ali cloud _ v switch . this # Ali cloud _ v switch . this:resource " alicloud _ v switch " " this " { avail ability _ zone = " eu-central-1a " CIDR _ block = " 172 . 16 . 0 . 0/24 " id = " vsw-GW 8 GL 31 wz * * * * * * " VPC _ id = " VPC-GW 8 calnzt * * * * * * " } 2.3 terra form状态拉取:获取当前状态内容并显示状态拉取命令,即 " outputs": { *** } }," resources": [ { "mode": "data "," type": "alicloud_slbs "," name": "default "," provider": "provider.alicloud ",*** },{ "mode": "managed "," type": "alicloud_vpc "," name": "default "," provider": "provider.alicloud ",***} ]}2.4 terraform state rm:移除特定资源state rm命令用于移除状态中的一个资源,但实际上并不删除这个资源。 命令格式为:Terraform state RM <资源类型>:。& ltName >:,如:Terraform State RM阿里云_ vswitch。这就去掉了阿里云_ vswitch。这成功删除了1个资源实例。删除后,如果模板的内容保持不变,并且再次执行apply命令,则会添加一个新的相同资源。 可以通过import命令再次添加删除的资源。关于这部分的详细内容,也可以移至文章《揭开股票云资源的管理难题》进行详细了解。 2.5 terraform state mv:改变特定资源的存储地址。如果要调整资源所在的状态文件,可以通过state mv命令来实现,这个命令类似于Shell下的mv命令。使用这个命令有很多选项,可以通过命令Terraform state MV-help详细了解。 本文只详细介绍最常用的一个:terraform state mv-state =。/terraform.tfstate-state-out = <目标路径& gt/terra form-target . TF state & lt;资源类型>:。& lt资源a >:& lt;资源类型>:。& lt资源b >:,如:$terraformstatemv-state-out =../TF . TF State alicloud_vswitch.this alicloud_vswitch.default将" alicloud _ v switch . this "移动到" alicloud _ v switch . default "已成功移动1个对象以上命令省略了default-State =。/terrain.tfState选项,该命令的最终结果是将处于当前状态的VSwitch资源移动到- state=。/terraform.tfstate,并将VSwitch的资源名称从“this”更改为“default” 2.6 terraform刷新:可以使用刷新当前状态refresh命令刷新当前状态的内容,即再次调用API,拉取最新的数据并写入状态文件。 除了资源和状态管理命令之外,在模板、提供程序和其他场景中还有一些常用的命令。 3.1 terraform init:初始化加载模块init用于初始化加载所需的模块,包括Provider、Provisioner、Module等。 3.2地形图:输出当前模板定义的资源关系图。每个模板定义的资源之间存在不同程度的关系。如果想查看资源关系图,可以使用命令terraformgraph:$ terraformgraph di graph { compound = " true " newrank = " true " subgraph " root " { "[root]alicloud _ VPC . default "[label = " alicloud _ VPC . default ",shape = " box "]"[root]alicloud _ v switch . this "[label = " alicloud _ v switch . this ",shape = " box "]* * * * * * *[root]output . vswitchid "-& gt;"[root]alicloud _ v switch . this " "[root]provider . alicloud(close)"-& gt;"[root]alicloud _ v switch . this " * * * * * * "[root]root "-& gt;"[root]provider . alicloud(close)" } }这个命令的结果也可以通过命令terra form Graph | dot-tsvg >:Graph . SVG直接导出为图片(需要提前安装Graphviz: brew安装Graphviz):3.3 terra form Validate:验证模板语法是否正确。Terraform模板的编写需要遵循一套自己定义的简单语法规范。编写完成后,如果您想检查模板中是否有语法错误,或者在运行计划和应用命令时报告语法错误,您可以通过执行命令terraform validate来检查并定位错误的详细位置和原因。 4本文最后主要详细介绍了使用Terraform过程中经常遇到的几个命令。这些命令包括模块下载、模板检查、资源管理、资源状态管理等等。 可以看出,这些命令使用起来并不复杂,不同命令的组合可以满足不同的复杂使用场景。 本文仅详细介绍部分命令,更多命令可直接通过terraform运行或通过terraform - help查看详情。 Terraform是一个面向客户端的工具,而且主要是命令驱动,所以学习Terraform最好的方法就是努力,多尝试,熟能生巧。 阅读此文为云起社区原创内容,未经允许不得转载。


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【技术支持|常见问题】1556原创ng8文章搜索页面不齐(2024-05-01 14:43)
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)
【技术支持|常见问题】别告诉我你没看过邰方这两则有思想的创意广告! (2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部