amazon.aws.ec2_instance 模块 – 创建和管理 EC2 实例

注意

此模块是 amazon.aws 集合(版本 9.0.0)的一部分。

如果您正在使用 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install amazon.aws。您需要进一步的要求才能使用此模块,请参阅 要求 以获取详细信息。

要在 playbook 中使用它,请指定: amazon.aws.ec2_instance

amazon.aws 1.0.0 中的新增功能

概要

要求

以下是在执行此模块的主机上所需的要求。

  • python >= 3.6

  • boto3 >= 1.28.0

  • botocore >= 1.31.0

参数

参数

注释

aap_callback

别名:tower_callback

字典

预配置的用户数据,使实例能够执行 Ansible Automation Platform 回调(仅限 Linux)。

对于 Windows 实例,要通过 Ansible 启用远程访问,请将 aap_callback.windows 设置为 true,并可选择设置管理员密码。

如果使用 aap_callback.windowsaap_callback.set_password,则不会执行 Ansible Automation Platform 的回调,但实例将准备好接收来自 Ansible 的 winrm 连接。

user_data 互斥。

host_config_key

字符串

由 Tower 作业模板生成的主机配置密钥。

如果 aap_callback.windows=False 则为必填项。

job_template_id

字符串

Tower 作业模板的整数 ID 或名称。在 3.2 之前的 Ansible Tower 版本中不支持使用作业模板的名称。

如果 aap_callback.windows=False 则为必填项。

set_password

字符串

如果 aap_callback.windows=True,则使用的可选管理员密码。

tower_address

字符串

Tower 服务器的 IP 地址或 DNS 名称。必须可以通过此地址从将启动此实例的 VPC 访问。

如果 aap_callback.windows=False 则为必填项。

windows

布尔值

设置 aap_callback.windows=True 以使用 powershell 而不是 bash 作为回调脚本。

选项

  • false ←(默认)

  • true

access_key

别名:aws_access_key_id、aws_access_key、ec2_access_key

字符串

AWS 访问密钥 ID。

有关访问令牌的详细信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys

也可以按优先级递减的顺序使用 AWS_ACCESS_KEY_IDAWS_ACCESS_KEYEC2_ACCESS_KEY 环境变量。

aws_access_keyprofile 选项互斥。

为了与 AWS botocore SDK 保持一致,在 5.1.0 版本中添加了 aws_access_key_id 别名。

ec2_access_key 别名已弃用,将在 2024-12-01 之后的版本中删除。

EC2_ACCESS_KEY 环境变量的支持已弃用,将在 2024-12-01 之后的版本中删除。

additional_info

字符串

在 amazon.aws 7.1.0 中添加

保留供亚马逊内部使用。

availability_zone

字符串

指定一个可用区以使用其默认子网。如果未指定 vpc_subnet_id 参数,则此项很有用。

如果未提供子网、ENI 或可用区,则将使用默认 VPC 中按字母顺序排序的第一个可用区中的默认子网。

aws_ca_bundle

path

用于验证 SSL 证书的 CA 捆绑包的位置。

也可以使用 AWS_CA_BUNDLE 环境变量。

aws_config

字典

用于修改 botocore 配置的字典。

参数可以在 AWS 文档 https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config 中找到。

count

integer

在 amazon.aws 2.2.0 中添加

要启动的实例数量。

设置此值将始终启动新实例。

exact_count 互斥。

cpu_credit_specification

字符串

对于 T 系列实例,如果默认池耗尽,请选择是否允许增加费用以购买 CPU 积分。

选择 unlimited 以启用购买额外的 CPU 积分。

选项

  • "unlimited"

  • "standard"

cpu_options

字典

减少暴露给实例的 vCPU 数量。

这些参数只能在实例启动时设置。两个子选项 cpu_options.threads_per_corecpu_options.core_count 是强制性的。

有关可用组合,请参阅 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-optimize-cpu.html

core_count

integer / required

设置要启用的核心数。

threads_per_core

integer / required

选择每个核心要启用的线程数。禁用或启用 Intel HT。

选项

  • 1

  • 2

debug_botocore_endpoint_logs

布尔值

使用 botocore.endpoint 记录器来解析任务期间发出的唯一(而不是总计)"resource:action" API 调用,将该集合输出到任务结果中的 resource_actions 键。使用 aws_resource_action 回调输出剧本期间生成的总列表。

也可以使用 ANSIBLE_DEBUG_BOTOCORE_LOGS 环境变量。

选项

  • false ←(默认)

  • true

detailed_monitoring

布尔值

是否允许收集详细的 CloudWatch 指标,从而启用更详细的警报。

选项

  • false

  • true

ebs_optimized

布尔值

实例是否应使用优化的 EBS 卷,请参阅 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSOptimized.html

选项

  • false

  • true

endpoint_url

别名:ec2_url,aws_endpoint_url,s3_url

字符串

要连接的 URL,而不是默认的 AWS 端点。虽然这可以用于连接到其他与 AWS 兼容的服务,但 amazon.aws 和 community.aws 集合仅针对 AWS 进行了测试。

也可以使用 AWS_URLEC2_URL 环境变量,优先级依次降低。

ec2_urls3_url 别名已弃用,将在 2024-12-01 之后的版本中删除。

EC2_URL 环境变量的支持已弃用,将在 2024-12-01 之后的版本中删除。

exact_count

integer

在 amazon.aws 2.2.0 中添加

一个整数值,指示应运行多少个与 filters 参数匹配的实例。

实例是根据此值创建或终止的。

如果发生终止,则将根据启动时间终止最近创建的实例。

count, instance_ids 互斥。

filters

字典

一个过滤器字典,用于在决定现有实例是否匹配并应更改时应用。每个字典项都包含一个过滤器键和一个过滤器值。有关可能的过滤器,请参阅 https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html。过滤器名称和值区分大小写。

默认情况下,实例按其 “Name” 标签、基本 AMI、状态(默认情况下为运行)和子网 ID 进行计数过滤。可以使用任何可查询的过滤器。好的候选项是特定标签、SSH 密钥或安全组。

hibernation_options

布尔值

在 amazon.aws 5.0.0 中添加

指示是否为实例启用了休眠。有关休眠先决条件,请参阅 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernating-prerequisites.html

选项

  • false ←(默认)

  • true

iam_instance_profile

别名:instance_role

字符串

要使用的已启用 EC2 的 IAM 实例配置文件的 ARN 或名称。

如果未以 ARN 格式提供名称,则还必须授予 ListInstanceProfiles 权限。https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListInstanceProfiles.html

如果未提供完整的 ARN,则将使用活动 AWS 账户中具有匹配名称的角色。

image

字典

要用于实例的映像。可以使用 amazon.aws.ec2_ami_info 模块检索映像。当实例尚未存在时,需要 imageimage_id 之一。

id

字符串

AMI ID。

kernel

字符串

一个字符串 AKI,用于覆盖 AMI 内核。

ramdisk

字符串

覆盖 AMI 的默认 ramdisk ID。

image_id

字符串

要用于实例的 ami ID。当实例尚未存在时,需要 imageimage_id 之一。

这是 image.id 的别名。

instance_ids

list / elements=string

如果指定一个或多个实例 ID,则仅返回具有指定 ID 的实例。

exact_count 互斥。

Default: []

instance_initiated_shutdown_behavior

字符串

在关机时停止或终止实例。

选项

  • "stop"

  • "terminate"

instance_type

字符串

要用于实例的实例类型,请参阅 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html

启动实例时,必须指定 instance_typelaunch_template 中的至少一个。

当实例存在并且指定的 instance_type 值与当前值不同时,实例将停止,并且实例类型将更新。

key_name

字符串

要分配给实例的 SSH 访问密钥的名称 - 必须存在于创建实例的区域中。

使用 amazon.aws.ec2_key 管理 SSH 密钥。

launch_template

字典

基于其配置实例的 EC2 启动模板。

启动实例时,必须指定 instance_typelaunch_template 中的至少一个。

id

字符串

启动模板的 ID(如果指定了名称,则为可选)。

name

字符串

启动模板的别名(如果指定了 ID,则为可选)。

version

字符串

要使用的启动模板的特定版本。如果未指定,则选择模板默认值。

license_specifications

list / elements=dictionary

要用于实例的许可证规范。

license_configuration_arn

string / required

许可证配置的 Amazon 资源名称 (ARN)。

metadata_options

字典

在 amazon.aws 2.0.0 中添加

修改实例的元数据选项。

有关更多信息,请参阅 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

支持两个子选项 metadata_options.http_endpointmetadata_options.http_tokens

http_endpoint

字符串

启用或禁用实例上的 HTTP 元数据端点。

如果指定禁用值,则无法访问实例的元数据。

选项

  • "enabled" ←(默认)

  • "disabled"

http_protocol_ipv6

字符串

在 amazon.aws 4.0.0 中添加

实例元数据端点是否可通过 IPv6 (enabled) 访问,或不可访问 (disabled)。

选项

  • "enabled"

  • "disabled" ←(默认)

http_put_response_hop_limit

integer

在 amazon.aws 4.0.0 中添加

实例元数据请求所需的 HTTP PUT 响应跳数限制。

数字越大,实例元数据请求可以传播的距离就越远。

Default: 1

http_tokens

字符串

设置实例元数据请求的令牌使用状态。

如果状态是可选的 (v1 和 v2),则可以在请求中包含或不包含签名令牌标头的情况下检索实例元数据。

如果状态是必需的 (v2),则必须在任何实例元数据检索请求中发送签名令牌标头。

选项

  • "optional" ← (默认)

  • "required"

instance_metadata_tags

字符串

在 amazon.aws 4.0.0 中添加

是否可以通过元数据端点访问实例标签 (enabled) 或不访问 (disabled)。

选项

  • "enabled"

  • "disabled" ←(默认)

name

字符串

实例的 Name 标签。

network

字典

一个包含键 interfaces 的字典,该键对应于网络接口 ID 列表或包含单个网络接口的规范。

使用 amazon.aws.ec2_eni 模块创建具有特殊设置的 ENI。

此字段已弃用,将在 2026-12-01 之后的版本中删除,请改用 network_interfacesnetwork_interfaces_ids

network_interfaces 互斥。

network_interfaces_ids 互斥。

assign_public_ip

布尔值

true 时,为接口分配一个公共 IP 地址。

选项

  • false

  • true

delete_on_termination

布尔值

当附加到的实例终止时,删除该接口。

选项

  • false

  • true

description

字符串

网络接口的描述。

device_index

integer

要修改的接口的索引。

groups

list / elements=string

要附加到接口的安全组 ID 列表。

interfaces

list / elements=string

ENI ID(字符串)列表或包含键 id 的对象列表。

ipv6_addresses

list / elements=string

要分配给网络接口的 IPv6 地址列表。

private_ip_address

字符串

要分配给接口的 IPv4 地址。

private_ip_addresses

list / elements=string

要分配给网络接口的 IPv4 地址列表。

source_dest_check

布尔值

控制是否在接口上启用源/目标检查。

当提供了 source_dest_check 时,将忽略此字段。

选项

  • false

  • true

subnet_id

字符串

要将网络接口连接到的子网。

network_interfaces

list / elements=dictionary

在 amazon.aws 8.2.0 中添加。

包含网络接口规范的字典列表。

使用 amazon.aws.ec2_eni 模块创建具有特殊设置的 ENI。

network 互斥。

assign_public_ip

布尔值

true 时,为接口分配一个公共 IP 地址。

选项

  • false

  • true

delete_on_termination

布尔值

当附加到的实例终止时,删除该接口。

选项

  • false

  • true ← (默认)

description

字符串

网络接口的描述。

device_index

integer

网络接口在附加顺序中的位置。

对于主网络接口,使用设备索引 0

默认值: 0

groups

list / elements=string

要附加到接口的安全组 ID 或名称列表。

ipv6_addresses

list / elements=string

要分配给网络接口的 IPv6 地址列表。

private_ip_address

字符串

要分配给接口的 IPv4 地址。

private_ip_addresses

list / elements=dictionary

要分配给网络接口的私有 IPv4 地址列表。

只有一个私有 IPv4 地址可以被指定为主地址。

如果您要启动多个实例,则不能指定此选项。

primary

布尔值

指示私有 IPv4 地址是否是主私有 IPv4 地址。

只有一个 IPv4 地址可以被指定为主地址。

选项

  • false

  • true

private_ip_address

string / required

私有 IPv4 地址。

subnet_id

字符串

要将网络接口连接到的子网。

network_interfaces_ids

list / elements=dictionary

在 amazon.aws 8.2.0 中添加。

要附加到实例的 ENI ID 列表。

network 互斥。

security_group 互斥。

security_groups 互斥。

device_index

integer

网络接口在附加顺序中的位置。

默认值: 0

id

string / required

网络接口的 ID。

placement

字典

在 amazon.aws 7.0.0 中添加。

如果适用,实例启动的位置。

affinity

字符串

专用主机上实例的关联设置。

availability_zone

字符串

实例的可用区。

group_name

字符串

实例所在的放置组的名称。

host_id

字符串

实例所在的专用主机的 ID。

host_resource_group_arn

字符串

要在其中启动实例的主机资源组的 ARN。

partition_number

integer

实例所在的分区号。

tenancy

字符串

允许实例使用的租户类型。默认为共享租户。专用租户会产生额外费用。

在 amazon.aws 7.6.0 中添加了对 tenancy=host 的支持。

选项

  • "dedicated"

  • "default"

  • "host"

placement_group

字符串

需要分配给实例的放置组。

此字段已弃用,将在 2025-12-01 之后的版本中删除,请改用 placement

profile

别名:aws_profile

字符串

用于身份验证的命名 AWS 配置文件。

有关命名配置文件的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html

也可以使用 AWS_PROFILE 环境变量。

profile 选项与 aws_access_keyaws_secret_keysecurity_token 选项互斥。

purge_tags

布尔值

如果 purge_tags=true 且设置了 tags,则将从资源中清除现有标签,以完全匹配 tags 参数定义的标签。

如果未设置 tags 参数,则即使 purge_tags=True,也不会修改标签。

aws: 开头的标签键由 Amazon 保留,不能修改。因此,出于 purge_tags 参数的目的,它们将被忽略。有关更多信息,请参阅 Amazon 文档 https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html#tag-conventions

选项

  • false

  • true ← (默认)

region

别名:aws_region, ec2_region

字符串

要使用的 AWS 区域。

对于 IAM、Route53 和 CloudFront 等全局服务,将忽略 region

也可以使用 AWS_REGIONEC2_REGION 环境变量。

有关更多信息,请参阅 Amazon AWS 文档 http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region

ec2_region 别名已弃用,将在 2024-12-01 之后的版本中删除。

EC2_REGION 环境变量的支持已弃用,将在 2024-12-01 之后的版本中删除。

secret_key

别名:aws_secret_access_key, aws_secret_key, ec2_secret_key

字符串

AWS 私有访问密钥。

有关访问令牌的详细信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys

也可以使用 AWS_SECRET_ACCESS_KEYAWS_SECRET_KEYEC2_SECRET_KEY 环境变量,优先级依次降低。

secret_keyprofile 选项互斥。

为了与 AWS botocore SDK 保持一致,在 5.1.0 版本中添加了 aws_secret_access_key 别名。

ec2_secret_key 别名已弃用,将在 2024-12-01 之后的版本中删除。

EC2_SECRET_KEY 环境变量的支持已弃用,将在 2024-12-01 之后的版本中删除。

security_group

字符串

安全组 ID 或名称。

security_groups 互斥。

network_interfaces_ids 互斥。

security_groups

list / elements=string

安全组 ID 或名称(字符串)列表。

security_group 互斥。

network_interfaces_ids 互斥。

Default: []

session_token

别名:aws_session_token, security_token, aws_security_token, access_token

字符串

用于临时凭证的 AWS STS 会话令牌。

有关访问令牌的详细信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys

也可以使用环境变量 AWS_SESSION_TOKENAWS_SECURITY_TOKENEC2_SECURITY_TOKEN,优先级依次降低。

security_tokenprofile 选项互斥。

别名 aws_session_tokensession_token 在 3.2.0 版本中添加,参数在 6.0.0 版本中从 security_token 重命名为 session_token

security_tokenaws_security_tokenaccess_token 别名已弃用,将在 2024-12-01 之后的版本中删除。

EC2_SECRET_KEYAWS_SECURITY_TOKEN 环境变量的支持已弃用,将在 2024-12-01 之后的版本中删除。

source_dest_check

布尔值

在 amazon.aws 8.2.0 中添加。

控制是否在接口上启用源/目标检查。

选项

  • false

  • true

state

字符串

实例的目标状态。

state=present:确保实例存在,但不保证任何状态(例如,正在运行)。新启动的实例将由 EC2 运行。

state=runningstate=present + 确保实例正在运行。

state=startedstate=running + 如果 wait=true,则等待 EC2 状态检查报告 OK。

state=stopped:确保现有实例已停止。

state=rebooted:是 state=stopped 立即后跟 state=running 的便捷别名。

state=restarted:是 state=stopped 立即后跟 state=started 的便捷别名。

state=terminated:确保现有实例已终止。

state=absent:是 state=terminated 的别名。

选项

  • "present" ← (默认)

  • "terminated"

  • "running"

  • "started"

  • "stopped"

  • "restarted"

  • "rebooted"

  • "absent"

tags

别名:resource_tags

字典

表示要应用于资源的标签的字典。

如果未设置 tags 参数,则不会修改标签。

tenancy

字符串

允许实例使用的租户类型。默认值为 shared 租户。专用租户将产生额外费用。

此字段已弃用,将在 2025-12-01 之后的版本中删除,请改用 placement

选项

  • "dedicated"

  • "default"

termination_protection

布尔值

是否启用终止保护。

此模块不会终止启用了终止保护的实例,必须先将其关闭。

选项

  • false

  • true

user_data

字符串

可供 EC2 实例使用的不透明数据块。

validate_certs

布尔值

设置为 false 时,与 AWS API 通信时不会验证 SSL 证书。

强烈建议不要设置 validate_certs=false,作为替代方案,请考虑设置 aws_ca_bundle

选项

  • false

  • true ← (默认)

volumes

list / elements=dictionary

块设备映射列表,默认情况下,它将始终使用 AMI 根设备,因此 volumes 选项主要用于添加更多存储。

映射包含(可选)键 device_namevirtual_nameebs.volume_typeebs.volume_sizeebs.kms_key_idebs.snapshot_idebs.iopsebs.delete_on_termination

有关每个参数的更多信息,请参阅 https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html

vpc_subnet_id

别名:subnet_id

字符串

在其中启动实例的子网 ID (VPC)。

如果没有提供,amazon.aws.ec2_instance 将选择默认 VPC 的默认区域。

wait

布尔值

是否等待所需的 state(使用 wait_timeout 自定义此设置)。

选项

  • false

  • true ← (默认)

wait_timeout

integer

等待实例完成启动/终止的时间(以秒为单位)。

默认值: 600

注意

注意

  • 注意: 对于模块,环境变量和配置文件是从 Ansible “主机” 上下文读取的,而不是从 “控制器” 上下文读取的。因此,可能需要将文件显式复制到“主机”。对于查找和连接插件,环境变量和配置文件是从 Ansible “控制器” 上下文读取的,而不是从 “主机” 上下文读取的。

  • Ansible 使用的 AWS SDK (boto3) 也可能会从 Ansible “主机” 上下文中的配置文件(通常为 ~/.aws/credentials)读取凭据和其他设置(例如,区域)的默认值。有关更多信息,请参阅 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html

示例

# Note: These examples do not set authentication details, see the AWS Guide for details.

- name: Terminate every running instance in a region. Use with EXTREME caution.
  amazon.aws.ec2_instance:
    state: absent
    filters:
      instance-state-name: running

- name: restart a particular instance by its ID
  amazon.aws.ec2_instance:
    state: restarted
    instance_ids:
      - i-12345678

- name: start an instance with a public IP address
  amazon.aws.ec2_instance:
    name: "public-compute-instance"
    key_name: "prod-ssh-key"
    vpc_subnet_id: subnet-5ca1ab1e
    instance_type: c5.large
    security_group: default
    network_interfaces:
      - assign_public_ip: true
    image_id: ami-123456
    tags:
      Environment: Testing

- name: start an instance and Add EBS
  amazon.aws.ec2_instance:
    name: "public-withebs-instance"
    vpc_subnet_id: subnet-5ca1ab1e
    instance_type: t2.micro
    key_name: "prod-ssh-key"
    security_group: default
    volumes:
      - device_name: /dev/sda1
        ebs:
          volume_size: 16
          delete_on_termination: true

- name: start an instance and Add EBS volume from a snapshot
  amazon.aws.ec2_instance:
    name: "public-withebs-instance"
    instance_type: t2.micro
    image_id: ami-1234567890
    vpc_subnet_id: subnet-5ca1ab1e
    volumes:
      - device_name: /dev/sda2
        ebs:
          snapshot_id: snap-1234567890

- name: Create EC2 instance with termination protection turned on
  amazon.aws.ec2_instance:
    name: "my-ec2-instance"
    vpc_subnet_id: subnet-5ca1ab1e
    instance_type: t3.small
    image_id: ami-123456
    termination_protection: true
    wait: true

- name: start an instance with a cpu_options
  amazon.aws.ec2_instance:
    name: "public-cpuoption-instance"
    vpc_subnet_id: subnet-5ca1ab1e
    tags:
      Environment: Testing
    instance_type: c4.large
    volumes:
      - device_name: /dev/sda1
        ebs:
          delete_on_termination: true
    cpu_options:
      core_count: 1
      threads_per_core: 1

- name: start an instance and have it begin a Tower callback on boot
  amazon.aws.ec2_instance:
    name: "tower-callback-test"
    key_name: "prod-ssh-key"
    vpc_subnet_id: subnet-5ca1ab1e
    security_group: default
    tower_callback:
      # IP or hostname of tower server
      tower_address: 1.2.3.4
      job_template_id: 876
      host_config_key: '[secret config key goes here]'
    network_interfaces:
      - assign_public_ip: true
    image_id: ami-123456
    cpu_credit_specification: unlimited
    tags:
      SomeThing: "A value"

- name: start an instance with ENI (An existing ENI ID is required)
  amazon.aws.ec2_instance:
    name: "public-eni-instance"
    key_name: "prod-ssh-key"
    vpc_subnet_id: subnet-5ca1ab1e
    network_interfaces_ids:
      - id: "eni-12345"
        device_index: 0
    tags:
      Env: "eni_on"
    volumes:
      - device_name: /dev/sda1
        ebs:
          delete_on_termination: true
    instance_type: t2.micro
    image_id: ami-123456

- name: add second ENI interface
  amazon.aws.ec2_instance:
    name: "public-eni-instance"
    network_interfaces_ids:
      - id: "eni-12345"
        device_index: 0
      - id: "eni-67890"
        device_index: 1
    image_id: ami-123456
    tags:
      Env: "eni_on"
    instance_type: t2.micro

- name: start an instance with metadata options
  amazon.aws.ec2_instance:
    name: "public-metadataoptions-instance"
    vpc_subnet_id: subnet-5calable
    instance_type: t3.small
    image_id: ami-123456
    tags:
      Environment: Testing
    metadata_options:
      http_endpoint: enabled
      http_tokens: optional

# ensure number of instances running with a tag matches exact_count
- name: start multiple instances
  amazon.aws.ec2_instance:
    instance_type: t3.small
    image_id: ami-123456
    exact_count: 5
    region: us-east-2
    vpc_subnet_id: subnet-0123456
    network_interfaces:
      - assign_public_ip: true
        groups:
          - default
    tags:
      foo: bar

# launches multiple instances - specific number of instances
- name: start specific number of multiple instances
  amazon.aws.ec2_instance:
    instance_type: t3.small
    image_id: ami-123456
    count: 3
    region: us-east-2
    network_interfaces:
      - assign_public_ip: true
        groups:
          - default
        subnet_id: subnet-0123456
    state: present
    tags:
      foo: bar

# launches an instance with a primary and a secondary network interfaces
- name: start an instance with a primary and secondary network interfaces
  amazon.aws.ec2_instance:
    instance_type: t2.large
    image_id: ami-123456
    region: us-east-2
    network_interfaces:
      - assign_public_ip: true
        groups:
          - default
        subnet_id: subnet-0123456
        private_ip_addresses:
          - primary: true
            private_ip_address: 168.50.4.239
          - primary: false
            private_ip_address: 168.50.4.237
    state: present
    tags:
      foo: bar

# launches a mac instance with HostResourceGroupArn and LicenseSpecifications
- name: start a mac instance with a host resource group and license specifications
  amazon.aws.ec2_instance:
    name: "mac-compute-instance"
    key_name: "prod-ssh-key"
    vpc_subnet_id: subnet-5ca1ab1e
    instance_type: mac1.metal
    security_group: default
    placement:
      host_resource_group_arn: arn:aws:resource-groups:us-east-1:123456789012:group/MyResourceGroup
    license_specifications:
      - license_configuration_arn: arn:aws:license-manager:us-east-1:123456789012:license-configuration:lic-0123456789
    image_id: ami-123456
    tags:
      Environment: Testing

返回值

常见返回值记录在此处,以下是此模块特有的字段

描述

changed_ids

list / elements=string

在 amazon.aws 5.3.0 中添加

模块操作更改的 EC2 实例 ID 的列表。

返回值:当必须存在的实例启动时

示例: ["i-0123456789abcdef0"]

instance_ids

list / elements=string

在 amazon.aws 5.3.0 中添加

与提供的规范和过滤器匹配的 EC2 实例 ID 的列表。

返回值:始终

示例: ["i-0123456789abcdef0", "i-0123456789abcdef1"]

instances

复杂

EC2 实例的列表。

返回值:wait=true 时或当匹配的实例已存在时

additional_info

字符串

在 amazon.aws 7.1.0 中添加

保留供亚马逊内部使用。

返回值:始终

ami_launch_index

integer

AMI 启动索引,可用于在启动组中查找此实例。

返回值:始终

示例: 0

architecture

字符串

映像的体系结构。

返回值:始终

示例: "x86_64"

block_device_mappings

复杂

实例的任何块设备映射条目。

返回值:始终

device_name

字符串

暴露给实例的设备名称(例如,/dev/sdh 或 xvdh)。

返回值:始终

示例: "/dev/sdh"

ebs

复杂

用于在启动实例时自动设置 EBS 卷的参数。

返回值:始终

attach_time

字符串

附件启动的时间戳。

返回值:始终

示例: "2017-03-23T22:51:24+00:00"

delete_on_termination

布尔值

Indicates whether the volume is deleted on instance termination.

返回值:始终

示例: true

status

字符串

附件状态。

返回值:始终

示例: "attached"

volume_id

字符串

EBS 卷的 ID。

返回值:始终

示例: "vol-12345678"

capacity_reservation_specification

复杂

有关容量预留目标选项的信息。

返回值:成功

capacity_reservation_preference

字符串

描述容量预留首选项。

返回值:成功

示例: "open"

client_token

字符串

您在启动实例时提供的幂等令牌(如果适用)。

返回值:始终

示例: "mytoken"

cpu_options

复杂

实例的 CPU 选项。

返回值:成功

amd_sev_snp

字符串

指示实例是否已启用 AMD SEV-SNP。

返回值:成功

示例: "enabled"

core_count

integer

实例的 CPU 核心数。

返回值:成功

示例: 1

threads_per_core

integer

每个 CPU 核心的线程数。

返回值:成功

示例: 2

current_instance_boot_mode

字符串

用于在启动或启动时引导实例的启动模式。

返回值:成功

示例: "legacy-bios"

ebs_optimized

布尔值

指示实例是否针对 EBS I/O 进行了优化。

返回值:始终

示例: false

ena_support

布尔值

指定是否启用 ENA 的增强网络。

返回值:始终

示例: true

enclave_options

字典

指示是否为 Amazon Web Services Nitro Enclaves 启用了实例。

返回值:成功

enabled

布尔值

如果此参数设置为 true,则为 Amazon Web Services Nitro Enclaves 启用实例。

返回值:始终

示例: false

hibernation_options

字典

指示是否为休眠启用了实例。

返回值:成功

configured

布尔值

如果为 true,则您的实例已启用休眠;否则,则未启用休眠。

返回值:始终

示例: false

hypervisor

字符串

实例的虚拟机管理程序类型。

返回值:始终

示例: "xen"

iam_instance_profile

复杂

与实例关联的 IAM 实例配置文件(如果适用)。

返回值:始终

arn

字符串

实例配置文件的 Amazon 资源名称 (ARN)。

返回值:始终

示例: "arn:aws:iam::123456789012:instance-profile/myprofile"

id

字符串

实例配置文件的 ID。

返回值:始终

示例: "JFJ397FDG400FG9FD1N"

image_id

字符串

用于启动实例的 AMI 的 ID。

返回值:始终

示例: "ami-0011223344"

instance_id

字符串

实例的 ID。

返回值:始终

示例: "i-012345678"

instance_type

字符串

正在运行的实例的实例类型大小。

返回值:始终

示例: "t2.micro"

key_name

字符串

密钥对的名称(如果此实例是使用关联的密钥对启动的)。

返回值:始终

示例: "my-key"

launch_time

字符串

实例启动的时间。

返回值:始终

示例: "2017-03-23T22:51:24+00:00"

licenses

list / elements=dictionary

实例的许可证配置。

返回: 当提供许可证规范时。

license_configuration_arn

字符串

许可证配置的 Amazon 资源名称 (ARN)。

返回值:始终

示例: "arn:aws:license-manager:us-east-1:123456789012:license-configuration:lic-0123456789"

metadata_options

复杂

实例的元数据选项。

返回值:始终

http_endpoint

字符串

指示是否启用或禁用实例上的 HTTP 元数据端点。

返回值:成功

示例: "enabled"

http_protocol_ipv6

字符串

指示是否启用或禁用实例元数据服务的 IPv6 端点。

返回值:成功

示例: "disabled"

http_put_response_hop_limit

integer

元数据令牌可以传输的最大跳数。

返回值:成功

示例: 1

http_tokens

字符串

指示是否需要 IMDSv2。

返回值:成功

示例: "optional"

instance_metadata_tags

字符串

指示是否启用或禁用从实例元数据访问实例标签。

返回值:成功

示例: "disabled"

state

字符串

元数据选项更改的状态。

返回值:成功

示例: "applied"

monitoring

复杂

实例的监控。

返回值:始终

state

字符串

指示是否启用了详细监控。否则,启用基本监控。

返回值:始终

示例: "disabled"

network_interfaces

list / elements=dictionary

实例的一个或多个网络接口。

返回值:始终

association

复杂

与网络接口关联的弹性 IPv4 的关联信息。

返回值:始终

ip_owner_id

字符串

弹性 IP 地址的所有者的 ID。

返回值:始终

示例: "amazon"

public_dns_name

字符串

公有 DNS 名称。

返回值:始终

示例: ""

public_ip

字符串

绑定到网络接口的公有 IP 地址或弹性 IP 地址。

返回值:始终

示例: "1.2.3.4"

attachment

复杂

网络接口附件。

返回值:始终

attach_time

字符串

附件启动的时间戳。

返回值:始终

示例: "2017-03-23T22:51:24+00:00"

attachment_id

字符串

网络接口附件的 ID。

返回值:始终

示例: "eni-attach-3aff3f"

delete_on_termination

布尔值

指示在终止实例时是否删除网络接口。

返回值:始终

示例: true

device_index

integer

网络接口附件的实例上的设备索引。

返回值:始终

示例: 0

network_card_index

integer

网卡的索引。

返回值:始终

示例: 0

status

字符串

附件状态。

返回值:始终

示例: "attached"

description

字符串

描述。

返回值:始终

示例: "My interface"

groups

list / elements=dictionary

一个或多个安全组。

返回值:始终

group_id

字符串

安全组的 ID。

返回值:始终

示例: "sg-abcdef12"

group_name

字符串

安全组的名称。

返回值:始终

示例: "mygroup"

interface_type

字符串

网络接口的类型。

返回值:始终

示例: "interface"

ipv6_addresses

list / elements=dictionary

与网络接口关联的一个或多个 IPv6 地址。

返回值:始终

ipv6_address

字符串

IPv6 地址。

返回值:始终

示例: "2001:0db8:85a3:0000:0000:8a2e:0370:7334"

mac_address

字符串

MAC 地址。

返回值:始终

示例: "00:11:22:33:44:55"

network_interface_id

字符串

网络接口的 ID。

返回值:始终

示例: "eni-01234567"

owner_id

字符串

网络接口所有者的 AWS 账户 ID。

返回值:始终

示例: "01234567890"

private_dns_name

字符串

分配给实例的私有 DNS 主机名。

返回值:始终

示例: "ip-10-1-0-156.ec2.internal"

private_ip_address

字符串

子网中网络接口的 IPv4 地址。

返回值:始终

示例: "10.0.0.1"

private_ip_addresses

list / elements=dictionary

与网络接口关联的私有 IPv4 地址。

返回值:始终

association

复杂

与网络接口关联的弹性 IP 地址 (IPv4) 的关联信息。

返回值:成功

ip_owner_id

字符串

弹性 IP 地址的所有者的 ID。

返回值:始终

示例: "amazon"

public_dns_name

字符串

公有 DNS 名称。

返回值:始终

示例: ""

public_ip

字符串

绑定到网络接口的公有 IP 地址或弹性 IP 地址。

返回值:始终

示例: "1.2.3.4"

primary

布尔值

指示此 IPv4 地址是否为网络接口的主要私有 IP 地址。

返回值:始终

示例: true

private_dns_name

字符串

分配给实例的私有 DNS 主机名。

返回值:始终

示例: "ip-10-1-0-156.ec2.internal"

private_ip_address

字符串

网络接口的私有 IPv4 地址。

返回值:始终

示例: "10.0.0.1"

source_dest_check

布尔值

指示是否启用了源/目标检查。

返回值:始终

示例: true

status

字符串

网络接口的状态。

返回值:始终

示例: "in-use"

subnet_id

字符串

网络接口的子网 ID。

返回值:始终

示例: "subnet-0123456"

vpc_id

字符串

网络接口的 VPC 的 ID。

返回值:始终

示例: "vpc-0123456"

placement

复杂

如果适用,实例启动的位置。

返回值:始终

affinity

字符串

专用主机上实例的关联设置。

返回: 当指定安置组时。

availability_zone

字符串

实例的可用区。

返回值:始终

示例: "ap-southeast-2a"

group_id

字符串

实例所在的安置组的 ID(对于集群计算实例)。

返回值:成功

示例: "pg-01234566"

group_name

字符串

实例所在的安置组的名称(对于集群计算实例)。

返回值:始终

示例: "my-placement-group"

host_id

字符串

实例所在的专用主机的 ID。

返回值:成功

host_resource_group_arn

字符串

实例所在的宿主资源组的 ARN。

返回值:成功

示例: "arn:aws:resource-groups:us-east-1:123456789012:group/MyResourceGroup"

partition_number

integer

实例所在的分区号。

返回值:成功

示例: 1

tenancy

字符串

允许实例使用的租户类型。默认为共享租户。专用租户会产生额外费用。

返回值:始终

示例: "default"

platform_details

字符串

实例的平台详细信息值。

返回值:始终

示例: "Linux/UNIX"

private_dns_name

字符串

私有 DNS 名称。

返回值:始终

示例: "ip-10-0-0-1.ap-southeast-2.compute.internal"

private_dns_name_options

字典

实例主机名的选项。

返回值:成功

enable_resource_name_dns_a_record

布尔值

指示是否使用 DNS A 记录响应实例主机名的 DNS 查询。

返回值:成功

示例: false

enable_resource_name_dns_aaaa_record

布尔值

指示是否使用 DNS AAAA 记录响应实例主机名的 DNS 查询。

返回值:成功

示例: false

hostname_type

字符串

要分配给实例的主机名类型。

返回值:成功

示例: "ip-name"

private_ip_address

字符串

子网中网络接口的 IPv4 地址。

返回值:始终

示例: "10.0.0.1"

product_codes

list / elements=dictionary

一个或多个产品代码。

返回值:始终

product_code_id

字符串

产品代码。

返回值:始终

示例: "aw0evgkw8ef3n2498gndfgasdfsd5cce"

product_code_type

字符串

产品代码的类型。

返回值:始终

示例: "marketplace"

public_dns_name

字符串

分配给实例的公共 DNS 名称。

返回值:始终

public_ip_address

字符串

分配给实例的公共 IPv4 地址

返回值:始终

示例: "52.0.0.1"

root_device_name

字符串

根设备的设备名称

返回值:始终

示例: "/dev/sda1"

root_device_type

字符串

AMI 使用的根设备类型。

返回值:始终

示例: "ebs"

security_groups

list / elements=dictionary

实例的一个或多个安全组。

返回值:始终

group_id

字符串

安全组的 ID。

返回值:始终

示例: "sg-0123456"

group_name

字符串

安全组的名称。

返回值:始终

示例: "my-security-group"

source_dest_check

布尔值

指示是否启用了源/目标检查。

返回值:始终

示例: true

state

复杂

实例的当前状态。

返回值:始终

code

integer

低字节表示状态。

返回值:始终

示例: 16

name

字符串

状态的名称。

返回值:始终

示例: "running"

state_transition_reason

字符串

最近一次状态转换的原因。

返回值:始终

subnet_id

字符串

实例运行所在的子网 ID。

返回值:始终

示例: "subnet-00abcdef"

tags

字典

分配给实例的任何标签。

返回值:始终

virtualization_type

字符串

AMI 的虚拟化类型。

返回值:始终

示例: "hvm"

vpc_id

字典

实例所在的 VPC 的 ID。

返回值:始终

示例: "vpc-0011223344"

terminated_ids

list / elements=string

在 amazon.aws 5.3.0 中添加

模块操作终止的 EC2 实例 ID 列表。

返回: 当必须不存在的实例被终止时

示例: ["i-0123456789abcdef1"]

作者

  • Ryan Scott Brown (@ryansb)