关于terraform的状态管理
我们想在aws创建3台主机,使用ansible和terraform都是可以实现的。
用ansible可能是这样子的:
- ec2:
count: 10
image: ami-40d281120
instance_type: t2.micro
用terraform可能是这样子的:
resource "aws_instance" "example" {
count = 10
ami = "ami-40d28157"
instance_type = "t2.micro"
}
好了现在问题来了,我现在想要把主机数从10台增加到15台,怎么办?
ansible:
现在的配置文件不能用了,我们必须再写一个创建5台主机的配置文件
terraform:
直接在原有的基础上把10改成15就可以了,terraform知道之前创建了10台,所以会自动再加5台
也就是说terraform记录了状态。
状态信息记录在哪里?
顾名思意,就是:terraform.tfstate 文件
每次运行terraform apply时,都会把最新的配置和当前状态文件中的内容进行比较后,再做更改。
这东西不能乱改,改乱了你懂的,所以当团队共用一个文件的时候,就要小心了,应该做个加锁处理之类的,来防止差异性。
而且这个文件不应该放到github这些网站上去,因为状态文件里有敏感信息,而且谁也不能保证github上提交的是最新的版本。
即然不能放到github上,又能放到哪里去?答案是可以放到aws的s3上去,当然也支持其它的一些存储。
相关的命令是:terraform remote config
> terraform remote config \
-backend=s3 \
-backend-config="bucket=(YOUR_BUCKET_NAME)" \
-backend-config="key=global/s3/terraform.tfstate" \
-backend-config="region=us-east-1" \
-backend-config="encrypt=true"
Remote configuration updated
Remote state configured and pulled.
上面这堆就把代码都推到s3上了,这样以后再运行terraform命令的时候,terraform会自动保持更新并使用状态文件的。
对于状态文件锁定,是terraform企业版本中提供的功能,如果不想付费,我们可以使用专用的部署服务器来进行操作,而不是在本地pc。
文件的编写应该有良好的文件结构,比如这样:

stage
非生产工作量的环境(即测试)。
prod
生产工作负载环境(即面向用户的应用程序)。
MGMT
DevOps工具的环境(例如,堡垒主机,詹金斯)。
global
一个放置在所有环境中使用的资源的地方(例如S3,IAM)。
在每个环境中,每个“组件”都有单独的文件夹。每个项目的组件都不相同,但典型的组件有:
VPC
此环境的网络拓扑。
service
在此环境中运行的应用程序或微服务,例如Ruby on Rails前端或Scala后端。每个应用程序甚至可以生活在自己的文件夹中,以隔离它与所有其他应用程序。
data-storage
要在此环境中运行的数据存储库,例如MySQL或Redis。每个数据存储甚至可以存放在自己的文件夹中,以将其与所有其他数据存储隔离。
关于terraform的状态管理的更多相关文章
- Terraform插件Provider管理,搜索、定义、下载
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: Ter ...
- Terraform模块Module管理,聚合资源的抽取与复用
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: T ...
- Redux状态管理方法与实例
状态管理是目前构建单页应用中不可或缺的一环,也是值得花时间学习的知识点.React官方推荐我们使用Redux来管理我们的React应用,同时也提供了Redux的文档来供我们学习,中文版地址为http: ...
- 表格搞定 Asp.net Web 状态管理
最近在网上搜罗了 ASP.NET WEB 状态管理方面的一些内容,终于把这些内容整合总结了一下. 1. 希望自己通过整理,能够掌握一些,为自己投资. 2. 以便自己忘记,又要浪费时间搜罗. 3. 希望 ...
- [译]面向初学者的Asp.Net状态管理技术
介绍 本文主要讲解Asp.Net应用程序中的状态管理技术(Asp.Net中有多种状态管理技术),并批判性地分析所有状态管理技术的优缺点. 背景 HTTP是无状态的协议.客户端发起一个请求,服务器响应完 ...
- [Asp.Net]状态管理(Session、Application、Cache)
上篇博文介绍了在客户端状态管理的两种方式:http://www.cnblogs.com/wolf-sun/p/3329773.html.除了在客户端上保存状态外,还可以在服务器上保存状态.使用客户端的 ...
- [Asp.Net]状态管理(ViewState、Cookie)
简介 HTTP协议是无状态的.从客户端到服务器的连接可以在每个请求之后关闭.但是一般需要把一些客户端信息从一个页面传送给另一个页面. 无状态的根本原因是:浏览器和服务器使用Socket通信,服务器将请 ...
- HttpClient_HttpClient 4.3.6 HTTP状态管理
HTTP状态管理 最初的HTTP被设计成以状态.请求/应答为导向的协议,它被制作成是没有特殊条款的,以便在状态会话中能交换逻辑关系请求/应答.HTTP协议越来越受欢迎和被采用,越来越多的系统会在应用程 ...
- Ansible状态管理
转载自:http://xdays.me/ansible状态管理.html 简介 就像所有服务器批量管理工具(puppet有DSL,salt有state)一样,ansible也有自己的状态管理组件 ...
随机推荐
- Nginx正向代理与反向代理
1.正向代理: 正向代理类似一个跳板机,代理访问外部资源. 典型应用:为在防火墙内的局域网客户端提供访问Internet的途径 如:IE例外设置代理服务器 正向代理配置实例:为不影响默认配置:添 ...
- L2-001. 紧急救援(PAT)~最短路应用
作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上.当其他城市有紧急求 ...
- java基础笔记(3)----函数
前言引入函数前,所有的代码都写在main主函数中,代码过多,代码冗余,可读性差. 引入函数后,函数是实现某一特定功能的代码块.一个类中可以定义多个函数,每个函数和main主函数都是并列关系. 函数: ...
- va_list va_start va_end va_arg 解决变参问题
解决参数个数不确定的问题. 头文件 #include<stdarg.h> VA_LIST 是在C语言中解决变参问题的一组宏,用于获取不确定个数的参数. #ifdef _M_ALPHA ty ...
- MySQL之索引详解
这篇博客将要阐述为什么使用b+树作为索引,而不是b树或者其他树 1.什么是b树 (图片来自网络) b树相关特性:⑴关键字分布在整棵树中 ⑵任何一个关键字只出现在一个节点上 ⑶搜索可能在非叶子节点上结束 ...
- 201621123050 《Java程序设计》第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 源代码阅读:多线程程序BounceThread 1.1 BallR ...
- 团队作业8——测试与发布(Beta阶段)
Deadline: 2017-12-17 23:00PM,以博客发表日期为准. 评分基准: 按时交 - 有分,检查的项目包括后文的三个方面 测试报告 发布说明 展示博客(单独一篇博客) 晚交 - ...
- 《招一个靠谱的移动开发》iOS面试题及详解(上篇)
以下问题主要用于技术的总结与回顾 主要问题总结 单例的写法.在单利中创建数组应该注意些什么. NSString 的时候用copy和strong的区别. 多线程.特别是NSOperation 和 GCD ...
- (原创)带模板的OLE输出EXCEL
其实带模板的OLE输出EXCEL就是将要输出的EXCEL中一些拥有固定值(如标题,表头行等)的单元格先填充好数据和设置好格式后作为模板上传到SAP 中.这样后续在输出EXCEL时只需从SAP中将模板下 ...
- hdu 4553 约会安排
约会安排 http://acm.hdu.edu.cn/showproblem.php?pid=4553 Time Limit: 2000/1000 MS (Java/Others) Memory ...