【发布时间】:2016-06-01 14:01:23
【问题描述】:
通过 Ansible 创建 EC2 实例时,如何指定安全组(这是针对非账户默认的 Amazon VPC 环境)?就我而言,我试图将一个安全组(当前存在)分配给我的网络服务器 EC2 实例,该实例将流量限制为仅来自位于其前面的 ELB 的流量。如果我尝试以下操作:
- name: Create webserver instance
ec2:
key_name: "{{ project_name }}-{{ env }}-key"
image: "{{ image }}"
instance_type: "{{ instance_type }}"
instance_tags: '{"Name":"{{ project_name }}-{{ env }}-{{ webserver_name }}","Owner":"{{ project_name }}", "Type":"{{ webserver_name }}","Environment":"{{ env }}"}'
region: "{{ aws_region }}"
group: "{{ security_group_name }}"
wait: true
register: ec2
其中 {{ security_group_name }} 是在 AWS 控制台中找到的“组名称”,我收到以下错误:“参数 groupId 的值 () 无效。值不能为空'
如果我尝试以下操作:
- name: Create webserver instance
ec2:
key_name: "{{ project_name }}-{{ env }}-key"
image: "{{ image }}"
instance_type: "{{ instance_type }}"
instance_tags: '{"Name":"{{ project_name }}-{{ env }}-{{ webserver_name }}","Owner":"{{ project_name }}", "Type":"{{ webserver_name }}","Environment":"{{ env }}"}'
region: "{{ aws_region }}"
group_id: "{{ security_group_id }}"
wait: true
register: ec2
其中 {{ security_group_id }} 是在 AWS 控制台中找到的“组 ID”(例如 sg-xxxxxx),我收到同样的错误。 Ansible 文档指出,“group”和“group_id”用于指定安全组 (http://docs.ansible.com/ansible/ec2_module.html)。
我唯一能想到的是 AWS 找不到安全组,因为我正在创建它并且它不知道要放置它的 VPC,或者它正在将它放置在我的默认 VPC 中并且找不到安全组它位于不同的 VPC 中。
那么,也许一个更好的问题是,我如何为特定的 EC2 实例指定 VPC(当我在一个区域中有多个 VPC 时)?
【问题讨论】:
-
请确保
region参数和AWS_REGION或EC2_REGION环境变量正确。如果您使用ec2_group创建组,请检查您是否使用了正确的vpc_id参数。 -
不创建组,而是创建一个 ec2 实例。
-
你可以参考这个github repo:github.com/arbabnazar/ansible-aws-roles以获得详细说明
标签: amazon-ec2 ansible ansible-2.x