community.general.spotinst_aws_elastigroup 模块 – 创建、更新或删除 Spotinst AWS Elastigroups
注意
此模块是 community.general 集合(版本 10.1.0)的一部分。
如果您使用的是 ansible
包,您可能已经安装了此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.general
。您需要更多要求才能使用此模块,请参阅 要求 获取详细信息。
要在 playbook 中使用它,请指定:community.general.spotinst_aws_elastigroup
。
概要
可以创建、更新或删除 Spotinst AWS Elastigroups。启动配置是 elastigroup 配置的一部分,因此无需额外的模块来处理启动配置。您必须在此位置拥有一个凭据文件 - <home>/.spotinst/credentials。凭据文件必须包含如下一行:token = <YOUR TOKEN> 完整文档可在 https://help.spotinst.com/hc/en-us/articles/115003530285-Ansible- 找到
要求
执行此模块的主机需要满足以下要求。
spotinst_sdk >= 1.0.38
参数
参数 |
注释 |
---|---|
允许在模块配置中设置 account-id 的可选参数。默认情况下,这是从凭据路径检索的。 |
|
策略方向。 可用的选项是: |
|
在 elastigroup 中配置的可用区哈希/字典列表;‘[{“key”:”value”, “key”:”value”}]’;允许的键是 name(字符串)、subnet_id(字符串)、placement_group_name(字符串)。 |
|
用于 elastigroup 实例的块设备映射的哈希/字典列表;您可以指定虚拟设备和 EBS 卷。‘[{“key”:”value”, “key”:”value”}]’;允许的键是 device_name(字符串列表)、virtual_name(字符串)、no_device(字符串)、ebs(对象,期望以下键 - delete_on_termination(布尔值)、encrypted(布尔值)、iops(整数)、snapshot_id(整数)、volume_type(字符串)、volume_size(整数)) |
|
Chef 集成配置;期望以下键 - chef_server(字符串)、organization(字符串)、user(字符串)、pem_key(字符串)、chef_version(字符串) |
|
允许设置非默认凭据路径的可选参数。 默认值: |
|
TODO 文档。 默认值: |
|
要在 elastigroup 中配置的扩展策略的哈希/字典列表;‘[{“key”:”value”, “key”:”value”}]’;允许的键是 - policy_name(字符串,必需)、namespace(字符串,必需)、metric_name(字符串,必需)、dimensions(对象列表,允许的键是 name(字符串,必需)和 value(字符串))、statistic(字符串,必需)、evaluation_periods(字符串,必需)、period(字符串,必需)、threshold(字符串,必需)、cooldown(字符串,必需)、unit(字符串,必需)、operator(字符串,必需)、action_type(字符串,必需)、adjustment(字符串)、max_target_capacity(字符串)、target(字符串)、maximum(字符串)、minimum(字符串) |
|
实例从传入请求中耗尽并在终止之前从 ELB 中注销的时间。 |
|
为默认未启用的受支持实例启用 EBS 优化;注意 - 将会收取额外费用。 选项
|
|
一个哈希/字典列表,包含在可用时重新连接到弹性组的 EBS 设备;“[{“key”:”value”, “key”:”value”}]”;允许的键包括 - volume_ids(字符串列表)、device_name(字符串) |
|
ECS 集成配置。需要以下键 - cluster_name(字符串) |
|
用于未来实现 Elastic Beanstalk 配置的占位符参数。 |
|
要与组实例关联的 Elastic IP 分配 ID 列表(例如 |
|
如果没有可用的竞价实例,弹性组将改为启动按需实例 选项
|
|
实例启动后开始并检查其运行状况的时间(以秒为单位)。 如果未指定,则默认为 |
|
用于运行状况检查的服务。 可用的选项有: |
|
实例被认为不健康之前,应该处于不健康状态的最短时间。 |
|
实例配置文件的 iamRole arn 只能使用 iam_role_arn 或 iam_role_name |
|
实例配置文件的 iamRole 名称 只能使用 iam_role_arn 或 iam_role_name |
|
如果组已存在且您想要更新或删除它,则为组 ID。除非将 uniqueness_by 字段设置为 id,否则此操作将不起作用。当设置此项并且设置了 uniqueness_by 字段时,组将被更新或删除,但不会被创建。 |
|
用于启动实例的映像 ID。如果实例类型和映像类型之间存在冲突,将返回错误 |
|
指定要附加到实例的密钥对 |
|
Kubernetes 集成配置。需要以下键 - api_server(字符串)、token(字符串) |
|
生命周期 |
|
经典 ELB 名称列表 |
|
您可以扩展到的实例数量上限 |
|
Mesosphere 集成配置。需要以下键 - api_server(字符串) |
|
您可以缩减到的实例数量下限 |
|
描述是否启用了实例增强监控 |
|
Multai 负载均衡器的配置参数。 |
|
用于 Multai 配置的令牌。 |
|
要创建、更新或删除的弹性组的唯一名称 |
|
要添加到弹性组的网络接口的哈希/字典列表;“[{“key”:”value”, “key”:”value”}]”;允许的键包括 - description(字符串)、device_index(整数)、secondary_private_ip_address_count(整数)、associate_public_ip_address(布尔值)、delete_on_termination(布尔值)、groups(字符串列表)、network_interface_id(字符串)、private_ip_address(字符串)、subnet_id(字符串)、associate_ipv6_address(布尔值)、private_ip_addresses(对象列表,键为 privateIpAddress(字符串,必填)和 primary(布尔值)) |
|
如果未设置 risk,则为必填项 要启动的按需实例数量。所有其他实例将是竞价实例;设置此参数或 risk 参数 |
|
将要配置的按需实例类型 |
|
弹性组 OpsWorks 集成配置。需要以下键 - layer_id(字符串) |
|
有状态弹性组配置。接受以下键 - should_persist_root_device(布尔值)、should_persist_block_devices(布尔值)、should_persist_private_ip(布尔值) |
|
操作系统类型。 可用的选项包括: |
|
Rancher 集成配置。需要以下键 - version(字符串)、access_key(字符串)、secret_key(字符串)、master_host(字符串) |
|
Rightscale 集成配置。需要以下键 - account_id(字符串)、refresh_token(字符串) |
|
如果未设置 on demand,则为必填项。要启动的竞价实例的百分比 (0 - 100)。 |
|
滚动配置。如果您希望组在更新后滚动,请使用此功能。接受以下键 - batch_size_percentage(整数,必填)、grace_period -(整数,必填)、health_check_type(字符串,可选) |
|
要在弹性组中配置的计划任务的哈希/字典列表;“[{“key”:”value”, “key”:”value”}]”;允许的键包括 - adjustment(整数)、scale_target_capacity(整数)、scale_min_capacity(整数)、scale_max_capacity(整数)、adjustment_percentage(整数)、batch_size_percentage(整数)、cron_expression(字符串)、frequency(字符串)、grace_period(整数)、task_type(字符串,必填)、is_enabled(布尔值) |
|
一个或多个安全组 ID。如果更新,它将使用给定的新数组覆盖现有安全组 |
|
在实例终止之前执行的 Base64 编码的关闭脚本。在设置之前进行编码。 |
|
要在弹性组中配置的信号的哈希/字典列表;允许的键包括 - name(字符串,必填)、timeout(整数) |
|
实例的启动时间(以秒为单位) |
|
将要配置的竞价实例类型。 |
|
创建或删除弹性组 选项
|
|
要在弹性组中配置的标签列表。请指定键和值列表(键冒号值); |
|
要启动的实例数 |
|
实例应注册到的目标组 arn 列表 |
|
要在弹性组中配置的目标跟踪策略的哈希/字典列表;“[{“key”:”value”, “key”:”value”}]”;允许的键包括 - policy_name(字符串,必填)、namespace(字符串,必填)、source(字符串,必填)、metric_name(字符串,必填)、statistic(字符串,必填)、unit(字符串,必填)、cooldown(字符串,必填)、target(字符串,必填) |
|
专用与共享租赁。 可用的选项包括: |
|
在计费小时结束时终止 选项
|
|
Spotinst 颁发的个人 API 访问令牌。 如果未指定,该模块将尝试按以下顺序从以下位置获取它:环境变量 |
|
如果您的组名称不是唯一的,您可以使用此功能来更新或删除特定组。每当设置此属性时,您必须设置 group_id 才能更新或删除组,否则将创建组。 选项
|
|
用于启动实例的容量单位。 可用的选项包括: |
|
要在弹性组中配置的扩展策略的哈希/字典列表;“[{“key”:”value”, “key”:”value”}]”;允许的键包括 - policy_name(字符串,必填)、namespace(字符串,必填)、metric_name(字符串,必填)、dimensions(对象列表,允许的键包括 name(字符串,必填)和 value(字符串))、statistic(字符串,必填)、evaluation_periods(字符串,必填)、period(字符串,必填)、threshold(字符串,必填)、cooldown(字符串,必填)、unit(字符串,必填)、operator(字符串,必填)、action_type(字符串,必填)、adjustment(字符串)、min_target_capacity(字符串)、target(字符串)、maximum(字符串)、minimum(字符串) |
|
Base64 编码的 MIME 用户数据。在设置值之前进行编码。 |
|
如果有任何可用的预留实例,弹性组将在购买竞价实例之前利用您的预留。 选项
|
|
弹性组创建/更新操作是否应等待实例启动 选项
|
|
模块在操作失败之前应等待实例的时间。仅当 wait_for_instances 为 True 时才起作用。 |
属性
属性 |
支持 |
描述 |
---|---|---|
支持: 无 |
可以在 |
|
支持: 无 |
在差异模式下,当在 |
示例
# Basic configuration YAML example
- hosts: localhost
tasks:
- name: Create elastigroup
community.general.spotinst_aws_elastigroup:
state: present
risk: 100
availability_vs_cost: balanced
availability_zones:
- name: us-west-2a
subnet_id: subnet-2b68a15c
image_id: ami-f173cc91
key_pair: spotinst-oregon
max_size: 15
min_size: 0
target: 0
unit: instance
monitoring: true
name: ansible-group
on_demand_instance_type: c3.large
product: Linux/UNIX
load_balancers:
- test-lb-1
security_group_ids:
- sg-8f4b8fe9
spot_instance_types:
- c3.large
do_not_update:
- image_id
- target
register: result
- ansible.builtin.debug: var=result
# In this example, we create an elastigroup and wait 600 seconds to retrieve the instances, and use their private ips
- hosts: localhost
tasks:
- name: Create elastigroup
community.general.spotinst_aws_elastigroup:
state: present
account_id: act-1a9dd2b
risk: 100
availability_vs_cost: balanced
availability_zones:
- name: us-west-2a
subnet_id: subnet-2b68a15c
tags:
- Environment: someEnvValue
- OtherTagKey: otherValue
image_id: ami-f173cc91
key_pair: spotinst-oregon
max_size: 5
min_size: 0
target: 0
unit: instance
monitoring: true
name: ansible-group-tal
on_demand_instance_type: c3.large
product: Linux/UNIX
security_group_ids:
- sg-8f4b8fe9
block_device_mappings:
- device_name: '/dev/sda1'
ebs:
volume_size: 100
volume_type: gp2
spot_instance_types:
- c3.large
do_not_update:
- image_id
wait_for_instances: true
wait_timeout: 600
register: result
- name: Store private ips to file
ansible.builtin.shell: echo {{ item.private_ip }}\n >> list-of-private-ips
with_items: "{{ result.instances }}"
- ansible.builtin.debug: var=result
# In this example, we create an elastigroup with multiple block device mappings, tags, and also an account id
# In organizations with more than one account, it is required to specify an account_id
- hosts: localhost
tasks:
- name: Create elastigroup
community.general.spotinst_aws_elastigroup:
state: present
account_id: act-1a9dd2b
risk: 100
availability_vs_cost: balanced
availability_zones:
- name: us-west-2a
subnet_id: subnet-2b68a15c
tags:
- Environment: someEnvValue
- OtherTagKey: otherValue
image_id: ami-f173cc91
key_pair: spotinst-oregon
max_size: 5
min_size: 0
target: 0
unit: instance
monitoring: true
name: ansible-group-tal
on_demand_instance_type: c3.large
product: Linux/UNIX
security_group_ids:
- sg-8f4b8fe9
block_device_mappings:
- device_name: '/dev/xvda'
ebs:
volume_size: 60
volume_type: gp2
- device_name: '/dev/xvdb'
ebs:
volume_size: 120
volume_type: gp2
spot_instance_types:
- c3.large
do_not_update:
- image_id
wait_for_instances: true
wait_timeout: 600
register: result
- name: Store private ips to file
ansible.builtin.shell: echo {{ item.private_ip }}\n >> list-of-private-ips
with_items: "{{ result.instances }}"
- ansible.builtin.debug: var=result
# In this example we have set up block device mapping with ephemeral devices
- hosts: localhost
tasks:
- name: Create elastigroup
community.general.spotinst_aws_elastigroup:
state: present
risk: 100
availability_vs_cost: balanced
availability_zones:
- name: us-west-2a
subnet_id: subnet-2b68a15c
image_id: ami-f173cc91
key_pair: spotinst-oregon
max_size: 15
min_size: 0
target: 0
unit: instance
block_device_mappings:
- device_name: '/dev/xvda'
virtual_name: ephemeral0
- device_name: '/dev/xvdb/'
virtual_name: ephemeral1
monitoring: true
name: ansible-group
on_demand_instance_type: c3.large
product: Linux/UNIX
load_balancers:
- test-lb-1
security_group_ids:
- sg-8f4b8fe9
spot_instance_types:
- c3.large
do_not_update:
- image_id
- target
register: result
- ansible.builtin.debug: var=result
# In this example we create a basic group configuration with a network interface defined.
# Each network interface must have a device index
- hosts: localhost
tasks:
- name: Create elastigroup
community.general.spotinst_aws_elastigroup:
state: present
risk: 100
availability_vs_cost: balanced
network_interfaces:
- associate_public_ip_address: true
device_index: 0
availability_zones:
- name: us-west-2a
subnet_id: subnet-2b68a15c
image_id: ami-f173cc91
key_pair: spotinst-oregon
max_size: 15
min_size: 0
target: 0
unit: instance
monitoring: true
name: ansible-group
on_demand_instance_type: c3.large
product: Linux/UNIX
load_balancers:
- test-lb-1
security_group_ids:
- sg-8f4b8fe9
spot_instance_types:
- c3.large
do_not_update:
- image_id
- target
register: result
- ansible.builtin.debug: var=result
# In this example we create a basic group configuration with a target tracking scaling policy defined
- hosts: localhost
tasks:
- name: Create elastigroup
community.general.spotinst_aws_elastigroup:
account_id: act-92d45673
state: present
risk: 100
availability_vs_cost: balanced
availability_zones:
- name: us-west-2a
subnet_id: subnet-79da021e
image_id: ami-f173cc91
fallback_to_od: true
tags:
- Creator: ValueOfCreatorTag
- Environment: ValueOfEnvironmentTag
key_pair: spotinst-labs-oregon
max_size: 10
min_size: 0
target: 2
unit: instance
monitoring: true
name: ansible-group-1
on_demand_instance_type: c3.large
product: Linux/UNIX
security_group_ids:
- sg-46cdc13d
spot_instance_types:
- c3.large
target_tracking_policies:
- policy_name: target-tracking-1
namespace: AWS/EC2
metric_name: CPUUtilization
statistic: average
unit: percent
target: 50
cooldown: 120
do_not_update:
- image_id
register: result
- ansible.builtin.debug: var=result
返回值
常用返回值记录在此处:此处,以下是此模块特有的字段
键 |
描述 |
---|---|
已创建/更新的组的 ID。 返回:成功 示例: |
|
活动弹性组实例及其详细信息的列表。 返回:成功 示例: |