关于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也有自己的状态管理组件 ...
随机推荐
- curl/libcurl获取打开网页平均网速
CURL: curl -o /dev/null -s -w %{http_code}:%{http_connect}:%{content_type}:%{time_namelookup}:%{time ...
- 选择排序—简单选择排序(Simple Selection Sort)
基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素 ...
- linux服务器中毒可疑进程sfewfesfs CPU80%
我用的是wdlinux, 难免会有漏洞,不知怎么就被莫名其妙地给入侵了,而且还频繁发包.下面是我查看攻击机器的整个过程. 首先跟客户要了root密码登录看,第一个命令是就top cd /proc/25 ...
- nginx域名跳转技巧
1.地址重写:访问server_name的时候跳转到http://www.cnblogs.com/qinyujie/ 修改nginx配置文件.加入到server{...}字段或者location字段里 ...
- 设计模式之迭代器模式详解(foreach的精髓)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 各位好,很久没以LZ的身份和 ...
- js和jquery判断checkbox是否被选中
js判断: if(document.getElementById("checkboxID").checked){ alert("checkbox is checked&q ...
- PTA题目的處理(四)
题目7-3 求交错序列前N项和 1.实验代码 #include <stdio.h> //#include <stdlib.h> int main() { ,N; double ...
- 玩转Leveldb原理及源码--拙见1
可以说是不知天高地厚.. 可以说是班门弄斧.. 但是,我今天还就这样走了,我喜欢!!!!!! 注:后续文章,限于篇幅,不懂名词都有 紫色+下划线 超链接,有兴趣,可以查阅: 网上关于Leveldb 的 ...
- win7下,使用django运行django-admin.py无法创建网站
安装django的步骤: 1.安装python,选择默认安装在c盘即可.设置环境变量path,值添加python的安装路径. 2.下载ez_setup.py,下载地址:http://peak.tele ...
- linux下安装配置jdk(解压版)
在linux下登录oracle官网,下载解压版jdk 传送门 系统默认下载到"下载"目录中 创建要将该文件解压的文件夹: 其中 -p 参数代表递归创建文件夹(可以创建多级目录 ...