无法使用ansible删除AWS的专有网络

无法使用ansible删除AWS的专有网络,ansible,ansible-playbook,aws-sdk,aws-opsworks,Ansible,Ansible Playbook,Aws Sdk,Aws Opsworks,已创建具有子网的vpc。已删除该子网中的实例。因此,子网和vpc不再包含任何实例(依赖项) 此外,可以从控制台中删除专有网络。但当尝试通过ec2_vpc模块时,会出现错误,说明“此vpc下存在依赖项,因此无法删除”。但它可以从控制台中看到已删除 所以认为这个vpc下的子网可能是依赖关系。ansible文档为子网提供了模块,但在使用时,它给出了不存在的模块,并声明“非法参数” 显示路由表的图像,该路由表不能通过olle提供的代码段删除 [IMG]我正在使用此代码创建一个具有ansible的VPC

已创建具有子网的vpc。已删除该子网中的实例。因此,子网和vpc不再包含任何实例(依赖项)

此外,可以从控制台中删除专有网络。但当尝试通过ec2_vpc模块时,会出现错误,说明“此vpc下存在依赖项,因此无法删除”。但它可以从控制台中看到已删除

所以认为这个vpc下的子网可能是依赖关系。ansible文档为子网提供了模块,但在使用时,它给出了不存在的模块,并声明“非法参数”

显示路由表的图像,该路由表不能通过olle提供的代码段删除


[IMG]

我正在使用此代码创建一个具有ansible的VPC

- name: create a VPC
  local_action:
    module: ec2_vpc
    state: present
    cidr_block: 10.0.0.0/16
    resource_tags: "{}"
    subnets:
      - cidr: 10.0.0.0/16
    internet_gateway: True
    route_tables:
      - subnets:
          - 10.0.0.0/16
        routes:
          - dest: 0.0.0.0/0
            gw: igw
    region: '{{ region }}'
    wait: yes
  register: vpc
并使用以下两个命令将其删除

第一个命令删除子网、IGW和路由表

- name: remove subnets and route tables from VPC
  local_action:
    module: ec2_vpc
    vpc_id: "{{ vpc.vpc_id }}"
    region: "{{ region }}"
    state: present
    resource_tags: "{}"
    subnets: []
    internet_gateway: False
    route_tables: []
    wait: yes
然后我可以删除实际的专有网络

- name: delete VPC
  local_action:
    module: ec2_vpc
    vpc_id: "{{ vpc.vpc_id }}"
    region: "{{ region }}"
    state: absent
    resource_tags: "{}"
    wait: yes

希望这对您有所帮助。

Ansible已经为vpc提供了ec2_vpc_net模块,您可以创建或删除vpc。 例:


希望这对您有所帮助

您能否编辑您的问题,以显示在呼叫您的play以删除VPC时出现的错误?还有删除子网ID时出现的错误,你知道吗?两年后我看到了同样的事情。@darkwing我认为罪魁祸首是一些子网或路由表,在删除VPC之前,您必须先删除它们。虽然现在不确定,但我没有使用ansible。谢谢,我的问题基本上是,我在开发过程中创建了附加到VPC的额外组件,这些组件不再被我的“destroy AWS”Playbook覆盖(例如名称已更改)。这非常适合删除internet网关和子网。它也会删除路由表,但不会删除与此vpc关联的主路由表。因此,由于一个路由表,仍然会出现依赖项错误。我将编辑我的问题,添加显示需要删除的路由表的图像,以避免此错误。此外,我使用set_facts,其范围是主机级别。所以,当我在其他主机中使用它时,应该与jinja 2模板一起使用。如果在同一个剧本中检索到set_事实,那么它是有效的,但是当我在不同的剧本中使用时,它不会被持久化。是实施错误,还是我应该使用redis进行事实缓存以在Playbook中持久化。现在,与子网关联的所有子网、Internet网关、路由表都已删除,但无法删除主路由表。因此,在删除vpc本身时,这仍然会产生依赖性sir
- name: DELETE THE VPC
  ec2_vpc_net:   
    name: vpc_name  
    cidr_block: "{{ build_env.vpc_net_cidr }}".  
    region: "{{ build_env.region }}"  
    profile: "{{ build_env.profile }}"  
    state: absent  
    purge_cidrs: yes  
    register: vpc_delete