使用配置文件自定义AWS Elastic Beanstalk

文章介绍了如何通过YAML配置文件来自定义AWS ElasticBeanstalk的环境,包括下载安装包、创建文件、创建用户/组、运行命令、启动/停止服务等操作。提供了详细的配置文件元素说明及示例。

用户现在可以通过YAML配置文件来自定义AWS的Elastic Beanstalk的配置了。你可以通过配置来进行如下操作:下载并安装包、下载并解压文件、创建文件、创建用户/组、运行命令、启动/停止服务、定义容器的设置等。 过去,你只能通过创建自定义的亚马逊系统镜像(AMI)来配置Elastic Beanstalk环境,或者修改你的应用使其能够在部署时自动配置。自定义的AMI创建后,需要进行维护,因为它不会对操作系统、应用或AWS Elastic Beanstalk主机管理器进行任何更新。相比之下,配置文件是更好的选择。

\

在Tomat 6/7、Python 2.6和Ruby 1.8.7/1.9.3等环境中都可以使用Elastic Beanstalk配置文件。亚马逊虽然计划支持PHP和.NET的环境,但并未透露具体计划。如果你有安装了Tomcat的Elastic Beanstalk的环境,那你需要进行迁移以获得Elastic Beanstalk配置文件的特性。你需要登陆AWS控制台查看环境的容器类型,来验证你当前的环境的容器类型是否满足需求。

\

Elastic Beanstalk配置文件的扩展名必须是.config。你可以在.ebextensions目录下建立多个.config文件,这是应用程序目录的一级目录。.ebextensions目录和Java中WAR文件的WEB-INF目录一样,都是一级目录。

\

Elastic Beanstalk配置文件基于YAML,其中的元素有:

\

packages:packages 元素支持下载安装已打包好的应用和组件。它支持的包管理器有apt,yum,rubygems,python和rpm。下面是使用yum添加logwatch的例子:

\
\packages:\  yum:\    logwatch: [7.3.6]\
\

sources:sources 元素允许你下载并解压包。你可以引用外部地址,或是其他软件源。它支持的格式有tar,tar+gzip,tar+bz2以及zip。下面以从GitHub下载并解压最新版本jQuery为例:

\
\sources:\  /home/ec2-user/jquery: https://github.com/jquery/jquery/zipball/master\
\

files:files 元素允许你创建文件,文件内容可以直接写在配置中或是从指定URL获取。文件以词典顺序写入磁盘。下面以创建README文件并从外部URL获取内容为例:

\
\files:\  /home/ec2-user/README.md: https://raw.github.com/jquery/jquery/master/README.md\
\

users, groups:users 元素允许你在EC2的实例上创建Linux/UNIX的用户。groups 元素允许你创建Linux/UNIX组并指定组ID。下面是AWS文档中的一个例子:

\
\users:\  - myuser :\      groups:\       - group1\       - group2\      uid: 50\      homedir: \"/tmp\"\\groups:\  - group1 : 45\  - group2 : 99\  - group3\
\

commands:commands 元素允许你执行shell命令。所有命令将按照字典序顺序执行。这些命令在应用和Web服务器安装前以及应用文件解压缩之前运行。下面以重命名先前我们下载的文件为例:

\
\commands:\  rename-README:\    command: mv README.md README\    cwd: /home/ec2-user\
\

containercommands:containercommands 元素允许你执行容器命令。这些命令在应用和Web服务器安装完成、应用文件解压后,应用文件部署之前运行。containercommands命令按照字典序顺序执行。在自动伸缩组中,有一个作为leadr角色的实例。如果leaderonly 的值为true,那么命令只在leader实例上运行。下面以在leader实例上使用定制的Tomcat的server.xml为例:

\
\container_commands:\  replace-server_xml:\    command: cp .ebextensions/server.xml /etc/tomcat7/server.xml\    leader_only: true\
\

services:services 元素允许你定义实例运行时,哪些服务要启动,哪些服务要停止。这个简直同时可以允许你指定与source、package、file的关联关系。下面是AWS文档中的一个例子。

\
\services:\  sysvinit:\    - myservice:\        enabled: true\        ensureRunning: true\
\

optionsettings:optionsettings 元素允许你定义容器的设置。这些值将以环境变量的形式存在于亚马逊EC2的实例中。Python容器支持的命名空间有 aws:elasticbeanstalk:application:environment,aws:elasticbeanstalk:container:python 和 aws:elasticbeanstalk:container:python:staticfiles 。Java容器支持的命名空间有 aws:elasticbeanstalk:application:environment 和 aws:elasticbeanstalk:container:tomcat:jvmoptions 。Ruby容器支持的命名空间有aws:elasticbeanstalk:application:environment 。下面以将Tomcat中JVM的max heap size 设置为512MB为例。

\
\option_settings:\  - namespace: aws:elasticbeanstalk:container:tomcat:jvmoptions\    option_name: Xmx\    value: 512m\
\

如需了解更多的信息,请访问自定义配置AWS Elastic Beanstalk环境页面。对于YAML的新用户可以使用在线YAML解析器,对创建配置文件有很大帮助。

\

查看英文原文Customize AWS Elastic Beanstalk with Configuration Files

\

感谢马国耀对本文的审校。

\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

先展示下效果 https://pan.quark.cn/s/e81b877737c1 Node.js 是一种基于 Chrome V8 引擎的 JavaScript 执行环境,它使开发者能够在服务器端执行 JavaScript 编程,显著促进了全栈开发的应用普及。 在 Node.js 的开发流程中,`node_modules` 文件夹用于存储所有依赖的模块,随着项目的进展,该文件夹可能会变得异常庞大,其中包含了众多可能已不再需要的文件和文件夹,这不仅会消耗大量的硬盘空间,还可能减慢项目的加载时间。 `ModClean 2.0` 正是为了应对这一挑战而设计的工具。 `ModClean` 是一款用于清理 `node_modules` 的软件,其核心功能是移除那些不再被使用的文件和文件夹,从而确保项目的整洁性和运行效率。 `ModClean 2.0` 是此工具的改进版本,在原有功能上增加了更多特性,从而提高了清理工作的效率和精确度。 在 `ModClean 2.0` 中,用户可以设置清理规则,例如排除特定的模块或文件类型,以防止误删重要文件。 该工具通常会保留项目所依赖的核心模块,但会移除测试、文档、示例代码等非运行时必需的部分。 通过这种方式,`ModClean` 能够协助开发者优化项目结构,减少不必要的依赖,加快项目的构建速度。 使用 `ModClean` 的步骤大致如下:1. 需要先安装 `ModClean`,在项目的根目录中执行以下命令: ``` npm install modclean -g ```2. 创建配置文件 `.modcleanrc.json` 或 `.modcleanrc.js`,设定希望清理的规则。 比如,可能需要忽略 `LICENSE` 文件或整个 `docs`...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值