
Я создал локальную конфигурацию и группу 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