将aws基础设施描述为代码的工具

flying-circus的Python项目详细描述


PyPI releasePython versionsBuild StatusDocumentation StatusDownloadsCode style: black

飞行马戏团

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服务工作,并被真正的客户使用。 但是,接口和实现的细节仍在 经过验证,可能会发生剧烈变化。

我该怎么帮你?

就用它吧!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在servlet中更改后自动重新加载属性文件   java构建路径问题学习指南   java使用模拟的spring服务在Jersey API上运行单元测试的正确方法是什么?   java索引将Jlabel创建为2D Jlabel数组   我可以用Java扩展Kotlin委托类吗?   java关闭MQ连接   java如何配置过滤器在servlet处理后工作?   如何在Intellij中导入另一个java项目包并使用它   java不使用线程,但使用ArrayList得到错误的结果,使用Vector得到正确的结果   java Unity3D如何向AndroidManifest添加权限。安卓插件的xml   Java中的字符串和开关大小写   Java数组和ArrayList   java如何使用JAXRS客户端通过GET调用发送有效负载?   JSch如何使用PuTTY私钥   在java中创建带块的构造函数   java使用相互SSL安全代理请求   java CommonExec:在系统路径上执行程序?   java如何设置线边框的角半径?   java是否支持SpringBoot2.2.4缓存实现