如何使用Ansible更改现有AWS VPC资源?

时间:2017-04-21 11:17:31

标签: ansible

我刚刚在AWS上用ansible创建了一个vpc:

- name: Ensure VPC is present
  ec2_vpc:
    state: present
    region: "{{ ec2_region }}"
    cidr_block: "{{ ec2_subnet }}"
    subnets:
      - cidr: "{{ ec2_subnet }}"
    route_tables:
      - subnets:
          - "{{ ec2_subnet }}"
        routes:
          - dest: 0.0.0.0/0
            gw: igw
    internet_gateway: yes # we want our instances to connect internet
    wait: yes # wait for the VPC to be in state 'available' before returning
    resource_tags: { Name: "my_project", environment: "production", tier: "DB" } # we tag this VPC so it will be easier for us to find it later

请注意,此任务是从另一个负责填充变量的playbook中调用的。 另请注意,我知道ec2_vpc模块已弃用,我应该尽快更新这段代码。 但我认为这些要点与这个问题无关。

所以你可以注意到resource_tags我有一个该项目的名称。当我第一次运行这本剧本时,我没有名字。 VPC第一次成功创建,但后来我想为它添加一个名称。所以我尝试在游戏中添加它,却不知道Ansible如何知道我想要更新现有的VPC。 事实上,Ansible创建了一个新的VPC并且没有更新现有的VPC。

所以问题是,如何更新现有的资源而不是创建新资源?

1 个答案:

答案 0 :(得分:0)

在ansible irc上进行了对话(不记得用户名,对不起),看来这个特定的模块不擅长更新资源。

看起来答案在于新的ec2_vpc_net模块,特别是选项multi_ok,默认情况下不会复制具有相同名称和CIDR块的VPC。

docs:http://docs.ansible.com/ansible/ec2_vpc_net_module.html#ec2-vpc-net