我正在尝试
stop/start
组group
下的hosts
文件中列出的特定实例[target]
。
以下剧本可以很好地停止实例。
---
- hosts: target
remote_user: ubuntu
tasks:
- name: Gather facts
action: ec2_facts
- name: Stop Instances
local_action:
module: ec2
region: "{{region}}"
instance_ids: "{{ansible_ec2_instance_id}}"
state: stopped
但是当我尝试启动这些实例时,它不起作用,因为
ec2_facts
无法 ssh
进入实例(因为它们现在已停止)并获取 instance-ids
---
- hosts: target
remote_user: ubuntu
tasks:
- name: start instances
local_action:
module: ec2
region: "{{region}}"
instance_ids: "{{ansible_ec2_instance_id}}"
state: running
我已经看过使用
dynamic inventory
文件作为主机的文档以及对 instance-ids
进行硬编码的方法。我想启动 IPs
文件的 target
组中列出的实例。使用 AWS CLI 使用 IP 或名称查询已停止实例的实例 ID。例如,要查询给定实例名称的实例 ID:
---
- name: Start instances
hosts: localhost
gather_facts: false
connection: local
vars:
instance_ids:
- 'i-XXXXXXXX'
region: ap-southeast-1
tasks:
- name: Start the feature instances
ec2:
instance_ids: '{{ instance_ids }}'
region: '{{ region }}'
state: running
wait: True
将 Ansible 升级到版本 2.0(越过山丘和遥远的地方)并使用新的 ec2_remote_facts 模块
shell: aws ec2 describe-instances --filters 'Name=tag:Name,Values={{inst_name}}' --output text --query 'Reservations[*].Instances[*].InstanceId'
register: inst_id
- hosts: target
remote_user: ubuntu
gather_facts: false