Terraform 系列-Terraform 项目的典型文件布局
系列文章
典型文件布局
- modules/
- services/
- webserver-cluster/
- examples/
- main.tf
- outputs.tf
- vars.tf
- user-data.sh
- README.md
- [ ] versions.tf
- stage/
- vpc/
- services/
- frontend-app/
- backend-app/
- main.tf
- outputs.tf
- vars.tf
- user-data.sh
- README.md
- [ ] provider.tf
- [ ] versions.tf
- [ ] terraform.tfvars(or `*.auto.tfvars`)
- [ ] main.tfvars
- data-storage/
- mysql/
- redis/
- prod/
- vpc/
- services/
- frontend-app/
- backend-app/
- data-storage/
- mysql/
- redis/
- mgmt/
- vpc/
- services/
- bastion-host/
- jenkins/
- global/
- iam/
- s3/
- main.tf
- outputs.tf
- vars.tf
- user-data.sh
- README.md
- [ ] provider.tf
- [ ] versions.tf
提示:
- [ ]表示该项为可选内容- 示例如
examples/表示该项为文件夹
详细说明
顶层文件夹
用于隔离环境
modules:Terraform (可复用)模块文件夹stage:预发布 Envprod:生产 envmgmt:管理/DevOps 环境(如:堡垒机、Jenkins 等)global:用于运行各种环境下都要共享的资源(如:Terraform backend - S3、IAM)
二级文件夹
用于环境中的组件
vpc:网络拓扑services:此环境中运行的应用环境或微服务,例如 NGINX 前端或 Java 后端。每个应用程序甚至都应该驻留在单独的文件夹中,与其他应用程序隔离data-storage:在此环境中运行的数据存储,例如 MySQL 或 Redis。每个数据存储应该驻留在它自己的文件夹中,与其他数据存储隔离。
文件
每一个组件中,都会有相应的 Terraform 的配置文件,其命名规则如下:
vars.tf: 输入变量outputs.tf: 输出变量main.tf: 资源定义user-data.sh:(可选),用户自定义脚本README.md:说明文档provider.tf:(可选),provider 信息,典型如:provider、region。不同环境,甚至同一环境的不同组件的 provider 可能不同。versions.tf:(可选),Terraform version、provider version、Terraform backend 信息。terraform.tfvars(or*.auto.tfvars): (可选),terraform plan 及 apply默认会传入该文件中的变量值main.tfvars:(可选),terraform plan 及 apply可以通过-var-file=filename来手动指定。
变量赋值
可以通过如下 3 种方式指定变量:
-var 'foo=bar' Set a value for one of the input variables in the root
module of the configuration. Use this option more than
once to set more than one variable.
-var-file=filename Load variable values from the given file, in addition
to the default files terraform.tfvars and *.auto.tfvars.
Use this option more than once to include more than one
variables file.
命令行参数:
-var 'foo=bar'参数文件:默认读取 terraform.tfvars(or
*.auto.tfvars) 或通过命令行-var-file=filename指定环境变量:可以通过设置名为
TF_VAR_<NAME>的环境变量为输入变量赋值,例如:$ export TF_VAR_image_id=ami-abc123
$ terraform plan
...
环境变量传值非常适合在自动化流水线中使用,尤其适合用来传递敏感数据,类似密码、访问密钥等
三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.
Terraform 系列-Terraform 项目的典型文件布局的更多相关文章
- Asp.Net Core 轻松学系列-3项目目录和文件作用介绍
目录 前言 结语 前言 上一章介绍了 Asp.Net Core 的前世今生,并创建了一个控制台项目编译并运行成功,本章的内容介绍 .NETCore 的各种常用命令.Asp.Net Core M ...
- 多War项目中静态文件的共享方案
[原创申明:文章为原创,欢迎非盈利性转载,但转载必须注明来源] 在互联网产品中,一般会有多个项目(Jar.WAR)组成一个产品线.这些WAR项目,因为使用相同的前端架构(jQuery.easyui等) ...
- 对Android项目中的文件夹进行解释
对Android项目中的文件夹进行解释: · src:里面存放的是Activity程序,或者是以后的其他组件,在此文件夹之中建立类的时候一定要注意,包名称不能是一级. · gen:此文件夹中的内容是自 ...
- webpack4 系列教程(十一):字体文件处理
教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十一):字体文件处理>原文地址.或者来我的小站看更多内容:godbmw.com 0. 课程介 ...
- [Web Chart系列之六] canvas Chart 导出图文件
前言 博主正在参加CSDN2013年度博客之星评选,如果这篇文章对您有用,请投他一票: 投票地址:http://vote.blog.csdn.net/blogstaritem/blogstar2013 ...
- 【MM系列】SAP技巧之更改布局
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP技巧之更改布局 前言部分 ...
- almost最好的Vue + Typescript系列02 项目结构篇
基于vue-cli 3.x,配合typescript的环境构建的新vue项目,跟以前的结构相比,有了一些变化,下面我们来简单的了解一下 基本结构: node_modules: 项目中安装的依赖模块 p ...
- ES6系列之项目中常用的新特性
ES6系列之项目中常用的新特性 ES6常用特性 平时项目开发中灵活运用ES6+语法可以让开发者减少很多开发时间,提高工作效率.ES6版本提供了很多新的特性,接下来我列举项目中常用的ES6+的特性: l ...
- [转载]将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,解决办法
eclipse 代码中文注释乱码 求解决 将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclips ...
- C#项目打开/保存文件夹/指定类型文件,获取路径
C#项目打开/保存文件夹/指定类型文件,获取路径 转:http://q1q2q363.xiaoxiang.blog.163.com/blog/static/1106963682011722424325 ...
随机推荐
- linux 基础命令 apt
Linux apt 命令 apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器. apt 命令提供了查找.安装.升级.删 ...
- HDFS编程 —— 用Java API 操作HDFS
使用Java操作HDFS,首先需要创建maven工程,创建maven工程的方法:https://www.cnblogs.com/ynqwer/p/14540108.html. 在新建的maven工程的 ...
- c++项目
如题, 想搞1-2个c++项目把目前除了进程.线程管理的所有所学都用起来. 在自己设想中.
- 蓝桥2020 B组 第一场考试
2. 纪念日 问题描述: 请问从 1921 年 7 月 23 日中午 12 时到 2020 年 7 月 1 日中午 12 时一共包 含多少分钟? 答案提交: 这是一道结果填空题,你只需要算出结果后提交 ...
- ubuntu中用vscode
下载vscode 终端中输入code运行 输入sudo apt-get update sudo apt-get install gcc 此报错解决方式: sudo rm /var/lib/dpkg/l ...
- 连接打印机Lodop
<div class="panel-body"> <div class="row show-grid"> <div class=& ...
- Verilog 预编译
Verilog 预编译 Verilog 语言支持宏定义(`define),参数 parameter,局域参数(localparam)以及`include等内容.这些数据常量的支持极大方便数字系统设计. ...
- 学生管理系统CLI版
学生管理系统CLI版 学生类 package com.itheima_03; public class Student { String sid; String name; String age; S ...
- Charles4.5.1抓取HTTPS请求
Charles下载以后发现 抓取http请求是成功的: 抓取https请求是失败的: 按照失败提示设置即可: 1.点击 Help -> SSL Proxying -> install ch ...
- SQL语句底层执行顺序
1. SELECT 语句的完整结构 SQL92语法: SELECT ...,....,(存在聚合函数) FROM ...,...,... WHERE 多表的连接条件 AND 不包含聚合函数的过滤条件 ...