本篇笔记参考官方教程和terraform cloud教程。
作者学习环境:VMware虚拟机,centos7。
本笔记继上一篇笔记学习。学习目的是为了将本地的配置信息存储在云上,并且可以通过本地和云两处地方进行配置、执行和销毁,在本地执行过程中,云上也可以看到过程,并且还可以干涉执行过程(在workplace)
1.设置terraform cloud
注册terraform cloud新用户并创建组织,创建组织流程:在注册确认的邮件中,选择start from scratch,填写组织名称并记录此名称。
修改main.tf文件将cloud块添加到terraform配置,<ORG_NAME>改为自己组织名:
cloud {
organization = "<ORG_NAME>"
workspaces {
name = "Example-Workspace"
}
}
2.CLI登录到terraform Cloud
启动login流程,运行terraform login命令,输入yes后自动跳入浏览器,如果浏览器没有自动打开,浏览器输入终端中的 URL。在页面输入账号密码然后登录,单击Create API token以生成身份验证令牌,复制令牌到终端中(将隐藏令牌以确保安全),然后回车,系统显示“Welcome to Terraform Cloud! ”和logo则表示成功。接下来可以远程操作了。
3.在云上初始化terraform
运行terraform init以重新初始化您的配置并将您的状态文件迁移到 Terraform Cloud。提示确认迁移时输入“yes”。
现在 Terraform 已将状态文件迁移到 Terraform Cloud,删除本地状态文件。
rm terraform.tfstate
将 Terraform Cloud 与 CLI 驱动的工作流一起使用时,可以选择让 Terraform 远程运行,或者在本地计算机上运行。 使用本地执行时,Terraform Cloud 将在本地计算机上执行 Terraform,并将状态文件远程存储在 Terraform Cloud 中。 对于本教程,将使用远程执行模式。
4.设置工作区变量
在terraform init步骤中,Example-Workspace在Terraform Cloud 组织中创建了工作区,使用AWS凭证对其进行配置。浏览器进入到 Terraform Cloud 中的 Workspace 选择Example-Workspace 工作区,然后选择“变量”选项卡。 在“环境变量”部分添加您的 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY,确保将它们标记为“敏感”。
5.apply 配置
执行terraform apply,会触发在terraform cloud上的运行,terraform显示无需任何更改。
terraform apply
## ...
No changes. Your infrastructure matches the configuration.
Your configuration already matches the changes detected above. If you'd like
to update the Terraform state to match, create and apply a refresh-only plan.
------------------------------------------------------------------------
这意味着 Terraform 没有检测到当前云上配置与存在的真实物理资源之间的任何差异。 因此,Terraform 不需要做任何事情。
Terraform 现在将状态信息(?)远程存储在 Terraform Cloud 中。 远程状态存储使协作更容易,并使状态和机密信息远离本地磁盘。 远程状态仅在使用时才加载到内存中。
如果想回到本地状态,从配置中删除云块并再次运行 terraform init。 Terraform 将再次询问是否要将状态迁移回本地。
6.销毁