Amazon ec2 通过Ansible分配EC2
当通过Ansible创建EC2实例时,如何指定安全组(这是针对非默认帐户的Amazon VPC环境)?在我的例子中,我试图将一个安全组(当前存在)分配给我的webserver EC2实例,该实例将流量限制为仅来自位于它前面的ELB的流量。如果我尝试以下方法:Amazon ec2 通过Ansible分配EC2,amazon-ec2,ansible,ansible-2.x,Amazon Ec2,Ansible,Ansible 2.x,当通过Ansible创建EC2实例时,如何指定安全组(这是针对非默认帐户的Amazon VPC环境)?在我的例子中,我试图将一个安全组(当前存在)分配给我的webserver EC2实例,该实例将流量限制为仅来自位于它前面的ELB的流量。如果我尝试以下方法: - name: Create webserver instance ec2: key_name: "{{ project_name }}-{{ env }}-key" image: "{{ image }}"
- 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
- 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\u group\u 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: "{{ security_group_name }}"
wait: true
register: ec2
- 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\u group\u id}}是在AWS控制台中找到的“组id”(例如sg-xxxxxx),我收到了相同的错误。Ansible文档说明“组”和“组id”用于安全组的规范()
我能想到的唯一一件事是,AWS找不到安全组,因为我正在创建它,它不知道要将其放置在哪个VPC中,或者它正在将其放置在我的默认VPC中,并且找不到安全组,因为它位于不同的VPC中
因此,可能更好的问题是,如何为特定EC2实例指定专有网络(当我在一个区域中有多个专有网络时)
我收到以下错误:“参数groupId的值()无效。”。该值不能为空'
听起来这些变量没有定义;你在哪里定义它们?当您不使用变量,而是直接输入值时,它是否有效
因此,可能更好的问题是,如何为特定EC2实例指定专有网络(当我在一个区域中有多个专有网络时)
专有网络由其他值暗示,尤其是group
/group\u id
和VPC\u subnet\u id
使用group\u id
而不是group
的一个主要优点是,如果意外地将子网用于错误的VPC,则会出现错误,而如果在多个VPC中有同名的安全组,使用group
和不正确的vpc\u子网\u id
将成功地在错误的位置启动机器
我收到以下错误:“参数groupId的值()无效。”。该值不能为空'
听起来这些变量没有定义;你在哪里定义它们?当您不使用变量,而是直接输入值时,它是否有效
因此,可能更好的问题是,如何为特定EC2实例指定专有网络(当我在一个区域中有多个专有网络时)
专有网络由其他值暗示,尤其是group
/group\u id
和VPC\u subnet\u id
使用
group\u id
而不是group
的一个主要优点是,如果意外地将子网用于错误的VPC,则会出现错误,而如果在多个VPC中有同名的安全组,使用group
和不正确的vpc\u子网\u id
将成功地在错误的位置启动计算机。无法在您的剧本中指定vpc id
。而是指定vpc\u子网\u id
。AWS可以根据子网id计算VPC。您没有指定子网id,因此AWS假定您希望在EC2 Classic
中启动它。由于在EC2 Classic
中找不到指定的安全组,因此将出现未找到
或无效
错误
如何解决这个问题?查找要在其中启动实例的子网的id
。每个VPC可以有一个或多个公用和/或专用子网。从AWS仪表板中,选择VPC服务
,该服务将列出子网和VPC。找到要在其中启动的子网,并在playbook中指定其id
vpc_subnet_id: subnet-29e63245
无法在您的剧本中指定
专有网络ID
。而是指定vpc\u子网\u id
。AWS可以根据子网id计算VPC。您没有指定子网id,因此AWS假定您希望在EC2 Classic
中启动它。由于在EC2 Classic
中找不到指定的安全组,因此将出现未找到
或无效
错误
如何解决这个问题?查找要在其中启动实例的子网的id
。每个VPC可以有一个或多个公用和/或专用子网。从AWS仪表板中,选择VPC服务
,该服务将列出子网和VPC。找到要在其中启动的子网,并在playbook中指定其id
vpc_subnet_id: subnet-29e63245
请确保
region
参数和AWS\u region
或EC2\u region
环境变量正确。如果使用ec2\u group
创建组,请检查是否使用了正确的vpc\u id
参数。不创建组,而是创建ec2实例。能否参考此github repo:有关详细说明,请确保region
参数和AWS\u region
或ec2\u region
环境变量正确。如果使用ec2\u group
创建组,请检查是否使用了正确的vpc\u id
参数。不创建组,而是创建ec2实例。有关详细说明,请参阅此github repo: