最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人。
Terraform系列文章如下:
Terraform入门教程,示例展示管理Docker和Kubernetes资源
Terraform插件Provider管理,搜索、定义、下载
Terraform模块Module管理,聚合资源的抽取与复用
terraform init
初始化命令,可重复执行,不会造成变更。会进行插件安装,backend初始化等操作。
重要参数:
-plugin-dir=PATH: 插件目录
-backend-config: backend配置
terraform plan
该命令是用来创建变更计划的,就像是dry-run,只是显示会产生怎样的变更,并不会实际影响。可以保存计划,然后再apply。如下:
$ terraform plan -out=pkslow.plan
Terraform will perform the following actions:
# module.pkslow-nginx.kubernetes_deployment.test will be created
# module.pkslow-nginx.kubernetes_service.test will be created
Plan: 2 to add, 0 to change, 0 to destroy.
Saved the plan to: pkslow.plan
To perform exactly these actions, run the following command to apply:
terraform apply "pkslow.plan"
计划保存在了pkslow.plan
文件,再通过以下命令执行即可:
$ terraform apply pkslow.plan
一些重要参数:
-out=path:计划存储位置
-state=path:状态文件的位置,如"terraform.tfstate"。如果启用了远程Backend则该参数设置无效
-var 'foo=bar':输入变量
-var-file=foo:输入变量文件
terraform apply
执行计划,使变更生效。
重要参数:
-backup-path:保存备份文件的路径。默认等于-state-out参数后加上".backup"后缀。设置为"-"可关闭
-compact-warnings:如果Terraform生成了一些告警信息而没有伴随的错误信息,那么以只显示消息总结的精简形式展示告警
-lock=true:执行时是否先锁定状态文件
-lock-timeout=0s:尝试重新获取状态锁的间隔
-input=true:在无法获取输入变量的值是是否提示用户输入
-auto-approve:跳过交互确认步骤,直接执行变更
-no-color:禁用输出中的颜色
-parallelism=n:限制Terraform遍历图时的最大并行度,默认值为10(考试高频考点)
-refresh=true:指定变更计划及执行变更前是否先查询记录的基础设施对象现在的状态以刷新状态文件。
-state=path:保存状态文件的路径,默认值是"terraform.tfstate"。如果使用了远程Backend该参数设置无效。
-state-out=path:写入更新的状态文件的路径,默认情况使用-state的值。该参数在使用远程Backend时设置无效
-var 'foo=bar':设置一组输入变量的值。
-var-file=foo:指定一个输入变量文件。
terraform destroy
销毁资源。入参基本与apply类似。
其它
terraform import
导入已经存在的资源。
terraform output
提取状态文件中输出的值。
terraform state
状态管理。
terraform workspace
工作区管理。