运行来自Ansible到Terraform的模块
首先
基础设施即代码(IaC)非常方便。一旦习惯了这种便利,通过图形界面一点一点地操作就会变得麻烦起来。
大家都在使用哪些IaC工具呢?比如Ansible、Puppet、Chef、Terraform和CloudFormation等等。
这次我们将结合擅长操作云资源的Terraform和擅长管理操作系统的Ansible,试图通过Ansible将从云资源分配到EC2配置更改的一系列操作统一起来。
这篇文章是将个人博客文章编辑后用于Qiita的版本。
https://tagfa.wpx.jp/archives/312
Implement or put into practice (实施)
只需要一种选择,以下是对原文的汉语转述:
通过Ansible命令一键完成云资源部署和EC2配置更改。
其流程是,首先使用Ansible执行Terraform创建VPC、EC2和ELB。然后,使用Ansible进行通用处理和安装nginx。
模块结构如下所示。
因为Ansible具有可以执行Terraform代码的Terraform模块,所以我们将使用此模块。
在这里有一个问题,使用 Terraform 创建 EC2 实例之后,需要使用 Ansible 进行共同处理并安装 Nginx,但是将处理流程统一到 Ansible 中会遇到一个问题,就是在执行之前无法获取 EC2 的 IP 地址。
在这里出现的是Ansible的DynamicInventory功能。使用它可以动态更改清单文件。
作为处理流程
-
- Terraformでクラウドリソースデプロイ
-
- DynamicInventory更新
- Ansibleで共通処理、nginxインストール
会按照这个趋势发展。
请查看以下存储库以获取关于具体实施的更多信息:
https://github.com/tagfa/ansible-terraform
最后
如何呢?使用Ansible进行统一管理,只需一条命令即可完成多种操作,非常方便。
我猜同样的IaC工具,人们经常会纠结于“应该用哪个”,但我认为组合使用而不是互相替换会变得更好。
如果你有兴趣的话,请试试看。