亚马逊云服务之CloudFormation

 

亚马逊的Web Service其实包含了一套云服务。云服务主要分为三种:

  • IaaS: Infrastructure as a service,基础设施即服务。

  • PaaS: Platform as a service, 平台即服务。

  • SaaS: Software as a service, 软件即服务。

而亚马逊提供的云服务至少涵盖了前面两种。以下是亚马逊提供的各种服务。

以上的图中S3、EC2等就属于IaaS,RDS、DynamoDB等就属于PaaS。

今天分享的是亚马逊的CloudFormation,亚马逊将其归类为Deployment&Management(部署及管理类别)。为什么亚马逊要推出这项服务那?我们可以假设一个场景。如果你要将一个WordPress网站部署到亚马逊上,你需要以下几步:创建一个EC2实例->在此EC2实例上配置WordPress->创建RDS数据库实例->在WordPress中配置与该RDS的连接。整个过程耗时耗力,需要在亚马逊不同的云服务间跳转。这些操作关联性很强,不具备自动化。如果你使用了CloudFormation以后,只需要在页面上点几个按钮,输入一些参数,就可以创建一个博客,省时省力,甚至完全不用任何UI,直接通过命令行完成。

CloudFormation给予了用户一种简单的方法来创建和管理一系列有关联的AWS的资源,可以有序的及可预见的初始化和更新这些资源。

要了解CloudFomation之前,先要了解几个概念。

Template - 模板

Template是CloudFormation的一个重要概念。Template本质上是一个json格式的文件。该文件定义了你需要使用那些AWS的资源,并且如何初始化这些资源。CloudFormation支持的资源如下图所示。

一个Template文件至少包含一下几个属性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"AWSTemplateFormatVersion" : "2010-09-09", //Template版本
"Description" : "描述该Template的用途",
"Parameters": { // 应用该Template需要配置的参数
},
"Resources" : { // 使用到的AWS的资源及它们之间的关系
},
"Outputs" : { // stack创建完毕后的一系列返回值
}
}

这个Template就是用来创建一个EC2的虚拟机。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{ "AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "Create an EC2 instance running the Amazon Linux 32 bit AMI.",
"Outputs" : { "InstanceId" : { "Description" : "The InstanceId of the newly created EC2 instance",
"Value" : { "Ref" : "Ec2Instance" }
} },
"Parameters" : { "KeyPair" : { "Description" : "The EC2 Key Pair to allow SSH access to the instance",
"Type" : "String"
} },
"Resources" : { "Ec2Instance" : { "Properties" : { "ImageId" : "ami-3b355a52",
"KeyName" : { "Ref" : "KeyPair" }
},
"Type" : "AWS::EC2::Instance"
} }
}

AWS官方提供了很多Template的资源,我们可以直接使用,当然也可以按需修改,甚至自己手动编写自己的Template。<http://aws.amazon.com/cloudformation/aws-cloudformation-templates/ >列出了一系列可供使用的Template。

Stack - 堆

Template只是一个json格式的文件,如果想要使用它的话,需要创建一个Stack,在Stack中指定你要使用的Template,然后亚马逊才会按照Template中的定义来创建及初始化资源。可以在AWS Management Console中或通过命令行调用API的方式来创建Stack。

实战

接下来,我们就通过AWS Management Console,使用CloudFormation来创建一个部署在EC2上、使用RDS作为数据库的WordPress网站。

首先,需要登录到AWS Management Console,选择EC2服务,点击左侧菜单的Key Pair,创建一个Key Pair。这个Key Pair将在接下来被使用,主要使AWS能够ssh到创建的EC2机器上。当然你也可以使用已有的Key Pair。

然后选择CloudFormation服务,点击Create Stack按钮。

然后输入Stack名称,并选择一个Template。由于我们要创建一个WordPress的站点,可以选择use a sample temple,并选择WordPress这个模板。

然后点击continue按钮,配置相关的参数。注意在KeyName一项中输入我们第一步创建的Key Pair。

然后点击continue按钮,配置此Stack的标签,这个是可选项,可以跳过。再点一下continue,将会再次确认想要的创建的资源信息,继续后就可以看到资源正在创建了。

页面下半部分有很多标签,你可以随时查看该Stack的描述、资源、事件、参数、输出等各项信息。

等待大约20分钟,Stack就会执行完毕,在Outputs标签中你会看到有一个url。

这个就是我们创建的WordPress的入口地址,访问该链接会进入WordPress的初始化设置页面。

配置完以后,一个新的WordPress就诞生了,重新访问URL,你会看到你的博客首页。

CloudFormer

提到CloudFormation就不得不说CloudFormer。CloudFormer是亚马逊提供的一个工具,用来给已有的AWS资源创建CloudFormation Template。这样你在以后创建相同的AWS资源时就可以直接使用这个Template了。

要使用CloudFormer首先要创建一个Stack,CloudFormer就被部署到一台EC2机器上,通过这个Stack返回的Outputs的URL我们可以一步步勾选使用到的资源,最终生成一个Template,该Template会自动放置到你的S3中。

首先创建Stack,Template选择use a sample template,并选择CloudFormer。

然后点击continue,配置其他参数,直到走完创建Stack这个流程。

等待这个Stack创建完毕后,就可以从Outputs标签得到一个URL。这个URL是执行CloudFormer工具的入口地址。

点击此URL,即可按照配置一步步配置自己的Template。

流程走完后,生成的Template会存放到你的S3 bucket中。


由于CloudFormation支持对几乎所有的AWS资源进行创建和配置,并且能够按照指定顺序创建,其Template简洁易懂、容易配置、可重用,所以是你使用AWS的不可多得的好帮手。

CloudFormation的更多相关文章

  1. 亚马逊云服务之CloudFormation

    亚马逊的Web Service其实包含了一套云服务.云服务主要分为三种: IaaS: Infrastructure as a service,基础设施即服务. PaaS: Platform as a ...

  2. System Operations on AWS - Lab 7 - CloudFormation

    CloudFormation模板:创建一个VPC(包含Public子网,Private子网,分别在不同的AZ),创建NAT,Bastion Server在Public子网. 1. 修改并运行AWS C ...

  3. DevOps on AWS之Cloudformation概念介绍篇

    Cloudformation的相关概念 AWS cloudformation是一项典型的(IAC)基础架构即代码服务..通过编写模板对亚马逊云服务的资源进行调用和编排.借助cloudformation ...

  4. DevOps on AWS之Cloudformation实践篇

    cloudformation入门实践 AWS cloudformation通过模板对AWS云资源进行编排和调用.并且可以通过模板代码层面的修改就可以对现有环境进行升级改造,云端业务的灵活便捷特点展现无 ...

  5. AWS CloudFormation Template

    { "AWSTemplateFormatVersion" : "2010-09-09", "Parameters" : { "Ba ...

  6. On cloud, be cloud native

    本来不想起一个英文名,但是想来想去都没能想出一个简洁地表述该意思的中文释义,所以就用了一个英文名称,望见谅. Cloud Native是一个刚刚由VMware所提出一年左右的名词.其表示在设计并实现一 ...

  7. 按照Enterprise Integration Pattern搭建服务系统

    在前一篇文章中,我们已经对Enterprise Integration Pattern中所包含的各个组成进行了简单地介绍.限于篇幅(20页Word以内),我并没有深入地讨论各个组成.但是如果要真正地按 ...

  8. AWS开发人员认证考试样题解析

    最近在准备AWS的开发人员考试认证.所以特意做了一下考试样题.每道题尽量给出了文档出处以及解析. Which of the following statements about SQS is true ...

  9. OpenStack调研:OpenStack是什么、版本演变、组件关系(Havana)、同类产品及个人感想

    一点调研资料,比较浅,只是觉得部分内容比较有用,记在这里: 首先,关于云计算,要理解什么是SAAS.PAAS.IAAS,这里不述:关于虚拟化,需要知道什么是Hypervisor,这里也不述: Open ...

随机推荐

  1. sql server 汉字的长度

    前几天改了人家程序中的一个小bug,就是输入时长度的校验问题.项目是.Net的,数据库是 sql server的.检查了一下,发现以前的人员把长度给控制小了,数据库中允许输入256的长度,而别人在as ...

  2. JAVA于Get和Post差异请求

    1. get 离server在对数据的访问.post 它是对server数据的传输. get 请求返回 request - URI 随机信息指出,. Post 请求发送电子邮件.观看新闻或交互式用户发 ...

  3. Android:仿手机QQ朋友动态ListView

    1.介绍: 使用此博客XListView模仿Android版本QQ朋友动态ListView效果.效果如下面的截图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...

  4. CSS3+HTML5特效6 - 闪烁的文字

    先看效果 abcd 这个效果也比较简单,利用keyframes对文字的大小.透明度及颜色做循环显示. CSS <style> @-webkit-keyframes flash { 0%{ ...

  5. vSphere HA状况:未知配置错误解决的方法

    问题:vSphere HA配置出现未知错误,导致打不开主机上的虚拟机电源,vmware client连接vcenter后,主机显示警报信息,例如以下: 解决:例如以下图,选中有问题的物理主机,然后又一 ...

  6. Linux下tomcat管理查看控制台|杀死tomcat进程

    查看控制台 # tail -f catalina.out 脚本执行权限chmod u+x *.sh #看是否已经有tomcat在运行了 ps -ef |grep tomcat #如果有,用kill; ...

  7. 基于protobuf的RPC实现

    可以比较使用google protobuf RPC实现echo service可见.述. google protobuf仅仅负责消息的打包和解包.并不包括RPC的实现.但其包括了RPC的定义.如果有以 ...

  8. ie6、ie7真的不支持inline-block吗?

    本来今天想出JavaScript继承的博文的,由于也才刚学习不久,以及工作比较忙,所以暂推两天写JavaScript的继承,喜欢的童鞋们关注我的博客哟! okay,言归正传.之前在接触前端的时候,处理 ...

  9. 编程算法 - 二部图确定 代码(C)

    二部图确定 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 给定一个具有n个顶点的图. 要给图上每一个顶点染色, 而且要使相邻的顶点颜色不同.  ...

  10. Java 设计模式 -- 示例指南

    设计模式在软件开发者中非常受欢迎的.每个设计模式都是对常见软件问题的通用的描述解决方案. 我们使用设计模式的好处有: 1.设计模式已经对于一个重复出现的问题进行了定义并且提供了工业标准的解决方案,因为 ...