Ansible创建AWS VPC后如何动态获取VPC ID用于子网创建
Ansible动态传递VPC ID实现方案
你只需要对现有playbook做两处小修改即可:
- 给创建VPC的任务添加
register字段,将任务返回结果存储到自定义变量中。amazon.aws.ec2_vpc_net模块的稳定返回结构中,vpc.id字段就是创建好的VPC资源ID,该结构在Ansible 2.10及之后的AWS官方集合版本中通用,不存在过时问题。 - 子网创建任务的
vpc_id参数直接引用上述变量即可,不需要手动复制硬编码。
完整修改后的代码示例如下:
--- - name: Create VPC hosts: localhost tasks: - name: create a VPC with default tenancy and a couple of tags amazon.aws.ec2_vpc_net: name: Ansible cidr_block: 10.0.0.0/16 region: us-east-1 state: present tags: Name: Ansible Team: DevOps tenancy: default register: created_vpc - name: Create subnet for database servers amazon.aws.ec2_vpc_subnet: state: present vpc_id: "{{ created_vpc.vpc.id }}" cidr: 10.0.1.16/28 tags: Name: Database Subnet register: database_subnet
如果想要确认返回的变量结构是否符合预期,可以在VPC创建任务后临时加一行调试任务打印变量:
- debug: var: created_vpc
验证后删除调试任务即可。
内容的提问来源于stack exchange,提问作者Farrukh Sadykov
相关产品推荐
相关产品推荐

