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_access_key_id 别名在 5.1.0 版本中添加,以与 AWS botocore SDK 保持一致。

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

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

additional_info

字符串

amazon.aws 7.1.0 中添加

保留供 Amazon 内部使用。

availability_zone

字符串

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

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

aws_ca_bundle

路径

验证 SSL 证书时要使用的 CA 捆绑包的位置。

AWS_CA_BUNDLE 环境变量也可使用。

aws_config

字典

用于修改 botocore 配置的字典。

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

count

整数

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

整数 / 必需

设置要启用的核心数。

threads_per_core

整数 / 必需

选择要启用的每个核心的线程数。禁用或启用英特尔超线程。

选项

  • 1

  • 2

debug_botocore_endpoint_logs

布尔值

使用 botocore.endpoint 日志记录器来解析在任务期间进行的唯一(而不是总计)"resource:action" API 调用,并将集合输出到任务结果中的 resource_actions 密钥。使用 aws_resource_action 回调将输出到在 playbook 期间进行的总列表。

也可以使用 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

字符串

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

也可以使用 AWS_URLEC2_URL 环境变量(优先级递减)。

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

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

exact_count

整数

amazon.aws 2.2.0 中添加

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

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

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

countinstance_ids 互斥。

filters

字典

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

默认情况下,实例通过其“名称”标签、基本 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

字符串

覆盖 AMI 内核的字符串 AKI。

ramdisk

字符串

覆盖 AMI 的默认 ramdisk ID。

image_id

字符串

要用于实例的 *ami* ID。当实例不存在时,imageimage_id 之一为必需。

这是 image.id 的别名。

instance_ids

列表 / 元素=字符串

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

exact_count 互斥。

默认值: []

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

列表 / 元素=字典

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

license_configuration_arn

字符串 / 必需

许可证配置的 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 元数据端点。

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

选项

  • "enabled" ← (默认)

  • "disabled"

http_protocol_ipv6

字符串

在 amazon.aws 4.0.0 中添加

实例元数据端点是否可通过 IPv6 (enabled) 使用,还是不可用 (disabled)。

选项

  • "enabled"

  • "disabled" ← (默认)

http_put_response_hop_limit

整数

在 amazon.aws 4.0.0 中添加

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

数字越大,实例元数据请求的传播范围越广。

默认值: 1

http_tokens

字符串

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

如果状态为可选 (v1 和 v2),则可以根据请求使用或不使用签名的令牌标头来检索实例元数据。

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

选项

  • "optional" ← (默认)

  • "required"

instance_metadata_tags

字符串

在 amazon.aws 4.0.0 中添加

实例标签是否可通过元数据端点 (enabled) 使用,还是不可用 (disabled)。

选项

  • "enabled"

  • "disabled" ← (默认)

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

整数

要修改的接口索引。

groups

列表 / 元素=字符串

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

interfaces

列表 / 元素=字符串

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

ipv6_addresses

列表 / 元素=字符串

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

private_ip_address

字符串

要分配给接口的 IPv4 地址。

private_ip_addresses

列表 / 元素=字符串

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

source_dest_check

布尔值

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

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

选项

  • false

  • true

subnet_id

字符串

连接网络接口的子网。

network_interfaces

列表 / 元素=字典

在 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

整数

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

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

默认值: 0

groups

列表 / 元素=字符串

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

ipv6_addresses

列表 / 元素=字符串

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

private_ip_address

字符串

要分配给接口的 IPv4 地址。

private_ip_addresses

列表 / 元素=字典

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

只能将一个私有 IPv4 地址指定为主地址。

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

primary

布尔值

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

只能将一个 IPv4 地址指定为主地址。

选项

  • false

  • true

private_ip_address

字符串 / 必需

私有 IPv4 地址。

subnet_id

字符串

连接网络接口的子网。

network_interfaces_ids

列表 / 元素=字典

在 amazon.aws 8.2.0 中添加

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

network互斥。

security_group互斥。

security_groups互斥。

device_index

整数

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

默认值: 0

id

字符串 / 必需

网络接口的 ID。

placement

字典

在 amazon.aws 7.0.0 中添加

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

affinity

字符串

在专用主机上实例的亲和性设置。

availability_zone

字符串

实例的可用区。

group_name

字符串

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

host_id

字符串

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

host_resource_group_arn

字符串

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

partition_number

整数

实例所在的区的编号。

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

列表 / 元素=字符串

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

security_group互斥。

network_interfaces_ids互斥。

默认值: []

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=rebootedstate=stopped的便捷别名,紧跟在state=running之后。

state=restartedstate=stopped 的便捷别名,紧跟着 state=started

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

state=absentstate=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

列表 / 元素=字典

块设备映射列表,默认情况下,这将始终使用 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

整数

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

默认: 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

列表 / 元素=字符串

在 amazon.aws 5.3.0 中添加

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

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

示例: ["i-0123456789abcdef0"]

instance_ids

列表 / 元素=字符串

在 amazon.aws 5.3.0 中添加

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

返回:始终

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

instances

复杂

EC2 实例列表。

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

additional_info

字符串

amazon.aws 7.1.0 中添加

保留供 Amazon 内部使用。

返回:始终

ami_launch_index

整数

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

布尔值

指示在实例终止时是否删除卷。

返回:始终

示例: 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

整数

实例的 CPU 核心数。

返回:成功

示例: 1

threads_per_core

整数

每个 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

列表 / 元素=字典

实例的许可证配置。

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

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

整数

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

返回:成功

示例: 1

http_tokens

字符串

指示是否需要 IMDSv2。

返回:成功

示例: "optional"

instance_metadata_tags

字符串

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

返回:成功

示例: "disabled"

state

字符串

元数据选项更改的状态。

返回:成功

示例: "applied"

monitoring

复杂

实例的监控。

返回:始终

state

字符串

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

返回:始终

示例: "disabled"

network_interfaces

列表 / 元素=字典

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

返回:始终

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

整数

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

返回:始终

示例: 0

network_card_index

整数

网卡索引。

返回:始终

示例: 0

status

字符串

附件状态。

返回:始终

示例: "attached"

description

字符串

描述。

返回:始终

示例: "My interface"

groups

列表 / 元素=字典

一个或多个安全组。

返回:始终

group_id

字符串

安全组的 ID。

返回:始终

示例: "sg-abcdef12"

group_name

字符串

安全组的名称。

返回:始终

示例: "mygroup"

interface_type

字符串

网络接口的类型。

返回:始终

示例: "interface"

ipv6_addresses

列表 / 元素=字典

与网络接口关联的一个或多个 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

列表 / 元素=字典

与网络接口关联的私有 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

整数

实例所在的区的编号。

返回:成功

示例: 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

列表 / 元素=字典

一个或多个产品代码。

返回:始终

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

列表 / 元素=字典

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

返回:始终

group_id

字符串

安全组的 ID。

返回:始终

示例: "sg-0123456"

group_name

字符串

安全组的名称。

返回:始终

示例: "my-security-group"

source_dest_check

布尔值

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

返回:始终

示例: true

state

复杂

实例的当前状态。

返回:始终

code

整数

低字节表示状态。

返回:始终

示例: 16

name

字符串

状态名称。

返回:始终

示例: "running"

state_transition_reason

字符串

最近状态转换的原因。

返回:始终

subnet_id

字符串

实例正在运行的子网 ID。

返回:始终

示例: "subnet-00abcdef"

tags

字典

分配给实例的任何标签。

返回:始终

virtualization_type

字符串

AMI 的虚拟化类型。

返回:始终

示例: "hvm"

vpc_id

字典

实例所在的 VPC ID。

返回:始终

示例: "vpc-0011223344"

terminated_ids

列表 / 元素=字符串

在 amazon.aws 5.3.0 中添加

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

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

示例: ["i-0123456789abcdef1"]

作者

  • Ryan Scott Brown (@ryansb)