我已经创建了本地配置和 Amazon Auto-scaling 组。使用此代码。
---
-
local_action:
image_id: ami-61f9324
instance_type: t2.micro
module: ec2_lc
name: nice-lc
region: us-west-2
security_groups: launch-wizard-1
name: "Create lc"
-
local_action:
desired_capacity: 2
health_check_period: 5
health_check_type: ELB
launch_config_name: nice-lc
load_balancers: nice-lb1
max_size: 10
min_size: 2
module: ec2_asg
name: nice-asg
region: us-west-2
name: "Create asg"
我正在使用ec2.py
和ec2.ini
文件进行库存盘点。
因此现在已经创建了本地配置和自动扩展组,并且根据我们定义的所需容量,启动了 2 个实例。
现在我想在这两个实例上运行任务。
为此,我正在使用这个 yaml 文件。
---
- name: Example of provisioning servers
hosts: 127.0.0.1
connection: local
tasks:
- name: Add EP2 instances to host group
local_action: add_host hostname={{ ec2_publicIp }} groupname=launch-wizard-1
with_items: ec2.instances
- name: Add tag to instances
local_action: ec2_tag resource={{ item.id }} region=us-west-2 state=present
with_items: ec2.instances
args:
tags:
Name: nice-ec2
- name: Wait for SSH to be available
pause: minutes=1
- name: Configure provisioned servers
hosts: tag_aws_autoscaling_groupName_nice_asg
user: ubuntu
sudo: True
gather_facts: True
tasks:
- name: restart nginx
service: name=nginx state=restarted
当我运行此文件时,出现错误:
一个或多个未定义的变量:“ec2_publicIp”未定义
问题:
我想要运行诸如重新启动 nginx 之类的任务并在由 amazon 自动扩展组启动的实例上添加标签。
我做得对吗?如果我只想在由 asg 启动的实例上运行某些任务,那么看起来我甚至不需要添加到主机。
答案1
在“将 EP2 实例添加到主机组”任务上方,使用
- debug: var=ec2
查看变量包含的内容。如果您查看每个实例的变量,您可能会发现 ec2_publicIP 拼写错误,或者它在变量中的位置不同。
答案2
因为我只想在 asg 启动的实例上运行命令。
---
# I have removed that code and just using this.
# This works with instance launched by asg.
- name: Configure provisioned servers
hosts: tag_aws_autoscaling_groupName_nice_asg
user: ubuntu
sudo: True
gather_facts: True
tasks:
- name: restart nginx
service: name=nginx state=restarted