Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在docker容器中运行terraform有什么好处吗_Docker_Terraform - Fatal编程技术网

在docker容器中运行terraform有什么好处吗

在docker容器中运行terraform有什么好处吗,docker,terraform,Docker,Terraform,我正在使用terraform构建azure基础设施,我很想知道在docker容器中运行terraform是否能获得很多好处 我想用参数复制环境会很容易 关于这个主题有很多帖子,比如。尽管所问的问题过于宽泛和笼统,但答案相对简单:是的,你会得到一切,而不会失去任何东西 基础设施即代码的概念以及所有新兴工具(如Terraform)很快在DevOps世界中成为事实。部署脚本被视为应用程序,因此在代码存储库中进行版本控制。因此,此基础架构部署应用程序具备普通应用程序所具备的一切: 操作系统运行时,例如

我正在使用terraform构建azure基础设施,我很想知道在docker容器中运行terraform是否能获得很多好处

我想用参数复制环境会很容易


关于这个主题有很多帖子,比如。

尽管所问的问题过于宽泛和笼统,但答案相对简单:是的,你会得到一切,而不会失去任何东西

基础设施即代码的概念以及所有新兴工具(如Terraform)很快在DevOps世界中成为事实。部署脚本被视为应用程序,因此在代码存储库中进行版本控制。因此,此
基础架构部署
应用程序具备普通应用程序所具备的一切:

  • 操作系统运行时,例如redhat、ubuntu、debian、alpine
  • 系统依赖性,例如地形、ansible
  • 源代码
  • 应用要求,例如Ansible requirements.txt或Terraform模块
  • 配置,例如环境变量、配置文件
与任何现代应用程序一样,出于以下几个原因,您自然需要对其进行dockerize:

  • 将所有需求和依赖项封装到单个映像中
  • 具有不同的映像版本以表示部署代码的不同版本
  • 构建一次,从本地计算机到CI/CD计算机到处运行(支持Docker)
  • 通过在运行同一docker映像时更改配置,可以轻松部署到不同的环境
  • 如果CI/CD管道中存在任何问题,则更容易调试和复制错误
  • 当一个以上的开发人员在同一个项目上工作时,具有一致的开发经验

列表还有很多,但基本上它们都是相同的原因,为什么你应该将你的前端或后端应用程序停靠在码头上。

答案很好,如果你是集装箱化terraform,你把tfstate放在哪里?我使用远程存储,但如果容器化,您会将其存储在哪里?当您使用远程后端时,tfstate存储在远程存储中,如AWS S3或Azure存储。您可以参考更多内容,如何将凭据放入容器中以运行它?是否每次更改
.tf
文件时都会生成新映像?您是否需要与root等效的权限才能在任何可能运行Terraform的地方运行
docker
命令?简单地将Terraform脚本保存在源代码管理中(可能在提交时让CI系统运行
Terraform apply
)有什么好处?这取决于后端类型,但您可以将凭证作为环境变量传入,如AWS\u ACCESS\u KEY\ID和AWS\u SECRET\u ACCESS\u KEY,而无需硬编码,因此,避免每次都创建新的映像。您可以将非root用户添加到docker组,您将能够运行执行Terraform脚本的容器!