Terraform将其配置和有关其管理的基础结构的信息存储在一个称为state的文件中,该state用于跟踪元数据并将实际资源映射到配置,默认情况下,您将在项目文件夹中本地找到此state文件,名为terraform.tfstate。安全建议将Terraform State保持在高度可用的远程数据存储位置,远程state使团队成员之间可以共享,Terraform支持将state存储在:Terraform Cloud、HashiCorp Consul、Amazon S3、Google Cloud Storage (GCS)、Alibaba Cloud OSS、Swift、Etcd、http。在本文中,我们将探讨如何在HashiCorp Consul KV数据存储中存储基础结构store,该后端支持store锁定,并且有利于团队成员之间的store共享。
一、设置Consul Cluster 您需要具有可用的Consul Cluster,然后才能继续进行设置,参考在Ubuntu 18.04/16.04系统上设置Consul Cluster的方法、在CentOS、RHEL 8/7上安装Consul 1.4.4的方法。
二、将Terraform配置为使用Consul 编辑Terraform main.tf文件并配置Consul后端存储。 # Backend #terraform { # backend "local" { # path = "terraform.tfstate" # } #} terraform { backend "consul" { address = "consul.example.com:8500" scheme = "http" path = "tf/terraform.tfstate" lock = true gzip = false } } 注: http://consul.example.com:8500是您的Consul群集的URL。 tf/terraform.tfstate是Consul KV store中的路径。 lock是锁定所有可能写入状态的操作的状态。 gzip用于使用gzip压缩状态数据。 如果您具有ACL身份验证,则需要设置: access_token / CONSUL_HTTP_TOKEN – (Required) Access token 初始化新的或现有的Terraform工作目录: $ terraform init -upgrade=true Upgrading modules... .... Initializing the backend... Successfully configured the backend "consul"! Terraform will automatically use this backend unless the backend configuration changes. Initializing provider plugins... Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary. $ terraform apply 如果您在Consul用户界面中导航至“Key/Value”部分,则会看到写入的路径:
您可以读取state文件的内容:
相关主题 |