sceptre, 构建更好的AWS基础设施

分享于 

7分钟阅读

GitHub

  繁體 雙語
Build better AWS infrastructure
  • 源代码名称:sceptre
  • 源代码网址:http://www.github.com/cloudreach/sceptre
  • sceptre源代码文档
  • sceptre源代码下载
  • Git URL:
    git://www.github.com/cloudreach/sceptre.git
    Git Clone代码到本地:
    git clone http://www.github.com/cloudreach/sceptre
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/cloudreach/sceptre
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    Sceptre https://circleci.com/gh/cloudreach/sceptre.png?style=shield

    Sceptre是一个用来驱动 AWS CloudFormation的工具。 它自动化一些更容易。重复和错误的任务,让你专注于构建更好的基础结构。

    功能:

    • 通过分离堆栈的模板及其配置来实现代码重用
    • 支持用 JSON。YAML。Jinja2或者 python 等dsl编写的模板
    • 通过将堆栈输出传递到依赖堆栈参数的依赖解析
    • 通过将相关堆栈捆绑到逻辑组( 比如 ) 来支持环境。 开发和生产
    • 环境变量,例如使用单个命令创建多个堆栈
    • 快速,高度parallelised构建
    • 支持在多个AWS帐户中使用堆栈
    • 具有元操作的基础结构可见性,如堆栈查询保护
    • 支持通过可以自定义的解析器在模板中插入动态值
    • 在堆栈生成之前/之后支持将任意代码作为钩子运行

    示例

    Sceptre将堆栈组织到环境中。 每个栈由一个存储在目录中的YAML配置文件表示,该目录代表环境。 在这里,我们有两个栈,vpcsubnets,在一个名为 dev的环境中:

    $ tree
    .
    ├── config
    │ └── dev
    │ ├── config.yaml
    │ ├── subnets.yaml
    │ └── vpc.yaml
    └── templates
     ├── subnets.py
     └── vpc.py

    我们可以使用 create-stack 命令创建一个堆栈。 这里 vpc 堆栈包含一个 VPC:

    $ sceptre create-stack dev vpc
    dev/vpc - Creating stack
    dev/vpc VirtualPrivateCloud AWS::EC2::VPC CREATE_IN_PROGRESS
    dev/vpc VirtualPrivateCloud AWS::EC2::VPC CREATE_COMPLETE
    dev/vpc sceptre-demo-dev-vpc AWS::CloudFormation::Stack CREATE_COMPLETE

    subnets 堆栈包含必须在VPC中创建的子网。 为此,需要将作为 vpc 堆栈的堆栈输出公开的VPC ID传递给 subnets 堆栈的参数。 Sceptre自动为我们解析这里依赖项:

    $ sceptre create-stack dev subnets
    dev/subnets - Creating stack
    dev/subnets Subnet AWS::EC2::Subnet CREATE_IN_PROGRESS
    dev/subnets Subnet AWS::EC2::Subnet CREATE_COMPLETE
    dev/subnets sceptre-demo-dev-subnets AWS::CloudFormation::Stack CREATE_COMPLETE

    Sceptre实现元操作,允许我们查找关于堆栈的信息:

    $ sceptre describe-env-resources dev
    dev/subnets:
    - LogicalResourceId: Subnet
     PhysicalResourceId: subnet-445e6e32
    dev/vpc:
    - LogicalResourceId: VirtualPrivateCloud
     PhysicalResourceId: vpc-c4715da0

    Sceptre提供环境级命令这将删除整个 dev 环境。 子网存在于vpc中,因此必须先删除它。 Sceptre自动处理这里问题:

    $ sceptre delete-env dev
    dev/subnets - Deleting stack
    dev/subnets Subnet AWS::EC2::Subnet DELETE_IN_PROGRESS
    dev/subnets - Stack deleted
    dev/vpc - Deleting stack
    dev/vpc VirtualPrivateCloud AWS::EC2::VPC DELETE_IN_PROGRESS
    dev/vpc - Stack deleted

    用法

    可以从CLI中使用 Sceptre,也可以作为 python 包导入。

    CLI:

    Usage: sceptre [OPTIONS] COMMAND [ARGS]...
    Options:
    --version Show the version and exit.
    --debug Turn on debug logging.
    --dir TEXT Specify sceptre directory.
    --output [yaml|json] The formatting style for command output.
    --no-colour Turn off output colouring.
    --var TEXT A variable to template into config files.
    --var-file FILENAME A YAML file of variables to template into config
     files.
    --help Show this message and exit.
    Commands:
    continue-update-rollback Roll stack back to working state.
    create-change-set Creates a change set.
    create-stack Creates the stack.
    delete-change-set Delete the change set.
    delete-env Delete all stacks.
    delete-stack Delete the stack.
    describe-change-set Describe the change set.
    describe-env Describe the stack statuses.
    describe-env-resources Describe the env's resources.
    describe-stack-outputs Describe stack outputs.
    describe-stack-resources Describe the stack's resources.
    execute-change-set Execute the change set.
    generate-template Display the template used.
    get-stack-policy Display the stack policy used.
    launch-env Creates or updates all stacks.
    launch-stack Create or launch the stack.
    list-change-sets List change sets.
    lock-stack Prevent stack updates.
    set-stack-policy Set stack policy.
    unlock-stack Allow stack updates.
    update-stack Update the stack.
    update-stack-cs Update the stack via change set.
    validate-template Validate the template.

    python:

    from sceptre.environment import Environment
    env = Environment("/path/to/sceptre_dir", "environment_name")
    stack = env.stacks["stack_name"]
    stack.create()

    可以在文档找到sceptre包的完整API描述。

    安装

    $ pip install sceptre

    更多关于安装sceptre的信息可以在我们的安装指南中找到。

    教程和文档

    捐赠

    请参见我们的贡献指南。


    构建  INF  aws  基础设施  
    相关文章