daniel-rhoades.aws-vpc
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)