将aws基础设施描述为代码的工具
flying-circus的Python项目详细描述
飞行马戏团
flying circus是一个将aws基础设施描述为代码的工具(使用 Python)。它使用与aws云形成服务相同的数据结构, 除了被描述为Python对象而不是通常的YAML之外Python 程序生成一个yaml模板,传递给云形成 以通常的方式
使用完整的编程语言来描述 基础设施,而不是像我们很多人一样的静态配置文件 习惯(无论我们是否也使用模板工具)。 我们希望飞行马戏团图书馆可以通过解锁来增强德沃斯人的能力 一些可用于软件代码的技术,如 独立于输出格式构造代码的变量和技术, 允许代码与版本控制、自动重构工具一起重用的库 等等。
你可以通过阅读 documentation
安装
通过python打包系统安装flying circus:
pip install flying-circus
许多人还使用Amazon Web服务命令行工具来部署
他们的云层堆积。如果您需要,一个安装
最新版本还带有pip
:
# Optional
pip install awscli
示例
下面是一个简单的例子,说明如何使用飞行马戏团来描述一些ec2 实例并使用aws cloudformation服务部署它们。
首先,创建一个python脚本(在本例中称为my_ec2_stack.py
),以便
描述你的基础设施任何有效的Python都可以用来创建
飞行的马戏团物体,以及任何有效的云层属性和
属性。
这个例子故意简单化了-它只创建了两个EC2实例 具有不同的配置,并输出一个内部IP。然而,它 确实暗示了一些更复杂和强大的使用模式。
importosfromflyingcircus.coreimportStack,Outputfromflyingcircus.intrinsic_functionimportGetAttfromflyingcircus.service.ec2import*defcreate_ec2_instance(name,instance_type="t2.micro"):instance=Instance(Properties=InstanceProperties(ImageId="ami-942dd1f6",InstanceType=instance_type,Monitoring=False,))instance.name=namereturninstanceif__name__=="__main__":stack=Stack()stack.Resources["WebServer"]=create_ec2_instance("webserver")stack.Resources["DatabaseServer"]=dbserver=create_ec2_instance("dbserver","t2.medium")dbserver.DeletionPolicy="Retain"stack.Outputs["DatabaseServerIp"]=Output(Description=f"Internal IP address for the database server",Value=GetAtt(dbserver,"PrivateIp"),)stack.tag(application="api-service",environment="test",owner=os.environ.get("USER"))print(stack.export("yaml"))
现在从python脚本生成cloudformation yaml。注意结果 是否始终是有效的格式良好的yaml,并且内部检查意味着它 也很难生成无效的cloudformation。
最后,使用aws命令行工具创建/更新堆栈 相关资源
python my_ec2_stack.py > my_ec2_stack.yaml aws cloudformation deploy --stack-name demo-flying-circus-ec2 --template-file my_ec2_stack.yaml
您可以在持续集成服务器中执行这些步骤;-)
是/不是
有很多工具可以将基础设施作为代码进行管理,通常使用 分歧和热情的拥护者。快速讨论一下我们的范围 帮助您了解飞行马戏团在这个生态系统中的位置,以及它是否可以 帮你。这是以简单的“是/不是”格式呈现的
飞行马戏团是…
- …一个Pythonic DSL,用于编写功能齐全的Python代码
- …对于Amazon Web服务基础架构
- …建立在aws之上Cloud Formation templates
- …始终生成有效、一致、可读的良好实践yaml的生成器
飞行马戏团不是…
- …YAML或JSON是Python。
- …一个使编写YAML或JSON更容易的工具编写python,yaml是一种输出格式。
- …一个全新语法的DSL。使用普通的Python语法 它的特征没有改变。
- …一种模板语言,像Jinja2
- …模板管理工具,比如Ansible
- …基础设施管理的独立实现,如aws 云层或地形。
- …云不可知的抽象层
- …多云-尽管它将来可能会变成这样。 当前实现的重点是表示AWS基础设施 使用云形成数据模型。其他云提供商也有类似的 本机数据模型,因此我们可以重新使用这些概念和 支持谷歌云平台的工具等。
- …与云形成服务交互的工具。在那里其他工具(比如boto3或aws cli, 首先)
- …一个验证工具-尽管将来可能会变成这样,而且 已经有了验证元素,作为一个副产品 用户界面
听起来不错,我能用一下吗?
当然,你当然可以。这是documentation will get you started
飞行马戏团目前在beta中。这意味着这是预料之中的 为支持的aws服务工作,并被真正的客户使用。 但是,接口和实现的细节仍在 经过验证,可能会发生剧烈变化。
我该怎么帮你?
就用它吧!