Ответ 1
Это короткий ответ на ваш вопрос, если вы хотите подробно и полностью автоматизировать роль, пожалуйста, дайте мне знать. Благодаря
Необходимое условие
-
анзибль
-
Библиотека Python boto
-
Настройка доступа и секретных ключей AWS в настройках среды
(лучше всего внутри ~./boto)
Создание экземпляра EC2:
Чтобы создать экземпляр EC2, пожалуйста, измените эти параметры, которые вы можете найти в файле ec2_launch.yml в разделе "vars":
- регион #, где хотите запустить экземпляр (ы), США, Австралию, Ирландию и т.д.
-
count # Количество экземпляров, которые вы хотите создать
Как только вы упомянули этот параметр, выполните следующую команду:
ansible-playbook -i содержит ec2_launch.yml
Содержимое файла хостов:
[local]
localhost
[webserver]
Содержимое файла ec2_launch.yml:
---
- name: Provision an EC2 Instance
hosts: local
connection: local
gather_facts: False
tags: provisioning
# Necessary Variables for creating/provisioning the EC2 Instance
vars:
instance_type: t1.micro
security_group: webserver # Change the security group name here
image: ami-98aa1cf0 # Change the AMI, from which you want to launch the server
region: us-east-1 # Change the Region
keypair: ansible # Change the keypair name
count: 1
# Task that will be used to Launch/Create an EC2 Instance
tasks:
- name: Create a security group
local_action:
module: ec2_group
name: "{{ security_group }}"
description: Security Group for webserver Servers
region: "{{ region }}"
rules:
- proto: tcp
type: ssh
from_port: 22
to_port: 22
cidr_ip: 0.0.0.0/0
- proto: tcp
from_port: 80
to_port: 80
cidr_ip: 0.0.0.0/0
rules_egress:
- proto: all
type: all
cidr_ip: 0.0.0.0/0
- name: Launch the new EC2 Instance
local_action: ec2
group={{ security_group }}
instance_type={{ instance_type}}
image={{ image }}
wait=true
region={{ region }}
keypair={{ keypair }}
count={{count}}
register: ec2
- name: Add the newly created EC2 instance(s) to the local host group (located inside the directory)
local_action: lineinfile
dest="./hosts"
regexp={{ item.public_ip }}
insertafter="[webserver]" line={{ item.public_ip }}
with_items: "{{ ec2.instances }}"
- name: Wait for SSH to come up
local_action: wait_for
host={{ item.public_ip }}
port=22
state=started
with_items: "{{ ec2.instances }}"
- name: Add tag to Instance(s)
local_action: ec2_tag resource={{ item.id }} region={{ region }} state=present
with_items: "{{ ec2.instances }}"
args:
tags:
Name: webserver