Первый раздел кода, который вы опубликовали, - это подготовка нового экземпляра EC2 путем вызова API AWS из вашей локальной системы:
- name: Provision an EC2 Instance
hosts: localhost
connection: local
gather_facts: False
...
- name: Create New security group with below given name
local_action:
module: ec2_group
Обратите внимание на раздел local_action
, в котором указано, как выполнить действие локально.Кроме того, ваша цель - localhost
.
Если вы затем хотите настроить новую систему, вы можете добавить ее в группу хостов и выполнить некоторые шаги по настройке.Например, добавьте это после шага Provision an EC2 Instance
, чтобы добавить общедоступный IP-адрес нового экземпляра в группу хостов с именем ec2hosts
:
- name: Add instance public IP to host group
add_host: hostname={{ item.public_ip }} groups=ec2hosts
loop: "{{ ec2.instances }}"
Теперь вы можете настроить хост, настроив группу хостов:
- hosts: ec2hosts
name: configuration play
user: ec2-user
gather_facts: true
tasks:
- name: Disable timers for unattended upgrade, so that none will be triggered by the `date -s` call.
raw: systemctl disable --now {{item}}
with_items:
- 'apt-daily.timer'
- 'apt-daily-upgrade.timer'
- name: Reload systemctl daemon to apply the new changes
raw: systemctl daemon-reload
- name: Purge autoupdate
raw: apt -y purge unattended-upgrades
- name: Update apt cache
raw: apt -y update
Подводя итог, вы сначала создаете экземпляр из локальной системы, ждете его загрузки, добавляете его IP-адрес в группу хостов, затем выполняете дополнительные шаги по настройке, выполняя ansible для этой группы хостов.Чтобы это работало, обязательно используйте пару ключей SSH, для которых закрытый ключ был добавлен в агент SSH.Кроме того, обязательно запустите экземпляр EC2 в общедоступной подсети.
См. Ansible Amazon Web Service Guide .