daniel-rhoades.aws-vpc

Circle CI

aws-vpc

一个用于简化在AWS账户内创建和注销VPC的Ansible角色。

有关使用Ansible创建VPC的详细信息,请参见该模块的官方文档:http://docs.ansible.com/ansible/ec2_vpc_module.html。

需求

需要最新的Ansible EC2支持模块以及Boto。

您还需要配置您的Ansible环境以便与AWS一起使用,详细信息请参见:http://docs.ansible.com/ansible/guide_aws.html。

角色变量

默认值:

  • vpc_resource_tags:用于设置VPC的标签,默认使用VPC名称;
  • vpc_internet_gateway:如果您希望VPC能够直接连接到互联网,默认为True;
  • vpc_state:默认组件状态,默认为present。要删除VPC,请将其设置为absent

必需变量:

  • vpc_name:您必须指定要创建的VPC名称,例如my-vpc;
  • vpc_region:您必须指定要创建VPC的区域,例如eu-west-1;
  • vpc_cidr_block:您必须指定VPC的CIDR块范围,例如172.40.0.0/16;
  • vpc_subnets:您必须指定要创建的子网,下面的示例剧本部分提供进一步信息;
  • public_subnet_routes:您必须指定要创建的公共子网路由,下面的示例剧本部分提供进一步信息。

输出:

  • vpc:通过运行ec2_vpc_module和提供的变量创建的AWS VPC对象。

依赖关系

没有其他角色的依赖关系。

示例剧本

在使用此角色之前,您需要安装它,最简单的方法是:ansible-galaxy install daniel-rhoades.aws-vpc

下面的示例剧本确保在AWS中按指定方式创建VPC,例如,如果已有匹配项,则角色不执行任何操作,否则会创建。

- name: My System | Provision all required infrastructure
  hosts: localhost
  connection: local
  gather_facts: no
  vars:
    my_vpc_name: "my_example_vpc"
    my_vpc_region: "eu-west-1"
    my_vpc_cidr: "172.40.0.0/16"
    everywhere_cidr: "0.0.0.0/0"

    # VPC内的子网
    my_vpc_subnets:
      - cidr: "172.40.10.0/24"
        az: "{{ my_vpc_region }}a"

      - cidr: "172.40.20.0/24"
        az: "{{ my_vpc_region }}b"

    # 允许子网路由到外部
    my_public_subnet_routes:
      - subnets:
          - "{{ my_vpc_subnets[0].cidr }}"
          - "{{ my_vpc_subnets[1].cidr }}"
        routes:
          - dest: "{{ everywhere_cidr }}"
            gw: igw
  roles:
    # 提供网络
    - {
        role: daniel-rhoades.aws-vpc,
        vpc_name: "{{ my_vpc_name }}",
        vpc_region: "{{ my_vpc_region }}",
        vpc_cidr_block: "{{ my_vpc_cidr }}",
        vpc_subnets: "{{ my_vpc_subnets }}",
        public_subnet_routes: "{{ my_public_subnet_routes }}"
      }

要注销VPC:

- name: My System | Decommission all required infrastructure
  hosts: localhost
  connection: local
  gather_facts: no
  vars:
    my_vpc_name: "my_example_vpc"
    my_vpc_region: "eu-west-1"
    my_vpc_cidr: "172.40.0.0/16"
    everywhere_cidr: "0.0.0.0/0"

    # VPC内的子网
    my_vpc_subnets:
      - cidr: "172.40.10.0/24"
        az: "{{ my_vpc_region }}a"

      - cidr: "172.40.20.0/24"
        az: "{{ my_vpc_region }}b"

    # 允许子网路由到外部
    my_public_subnet_routes:
      - subnets:
          - "{{ my_vpc_subnets[0].cidr }}"
          - "{{ my_vpc_subnets[1].cidr }}"
        routes:
          - dest: "{{ everywhere_cidr }}"
            gw: igw
  roles:
    # 注销网络
    - {
        role: daniel-rhoades.aws-vpc,
        vpc_state: "absent",
        vpc_name: "{{ my_vpc_name }}",
        vpc_region: "{{ my_vpc_region }}",
        vpc_cidr_block: "{{ my_vpc_cidr }}",
        vpc_subnets: "{{ my_vpc_subnets }}",
        public_subnet_routes: "{{ my_public_subnet_routes }}"
      }

许可证

MIT

作者信息

Daniel Rhoades (https://github.com/daniel-rhoades)

关于项目

Ansible role for simplifying the provisioning and decommissioning of a VPC within an AWS account

安装
ansible-galaxy install daniel-rhoades.aws-vpc
许可证
mit
下载
429
拥有者
Strategist, Technologist and Engineer