잼크레커는 앤시블 기반이였다....
- name: Creating ECS Instance
hosts: localhost
connection: local
gather_facts: no
vars:
clusterName: ""
instance_type: ""
vpc_name: ""
public_subnet_name: ""
regionToHost: ""
iam_role_name: ""
ecs_sg_proto: ""
ecs_sg_from_port: ""
ecs_sg_to_port: ""
ecs_sg_cidr_ip: ""
ecsOptmzdImage: ""
serviceCount: ""
taskName: ""
sec_group_name: ""
ecs_cluster_delay: 10
ecs_cluster_repeat: 10
containers:
- name: phpmyadmin
cpu: 10
essential: true
image: "corbinu/docker-phpmyadmin"
memory: 500
links:
- mysql
environment:
- name: "MYSQL_ROOT_PASSWORD"
value: "password"
- name: "MYSQL_USERNAME"
value: "root"
portMappings:
- containerPort: 80
hostPort: 80
- name: mysql
cpu: 10
essential: true
image: "mysql"
memory: 500
environment:
- name: "MYSQL_ROOT_PASSWORD"
value: "password"
tasks:
- name: Gather VPC facts
ec2_vpc_net_facts:
filters:
"tag:Name": "{{ vpc_name }}"
aws_access_key: "{{ accessKey }}"
aws_secret_key: "{{ secretKey }}"
region: "{{ regionToHost }}"
register: vpc_facts
- name: Gather VPC subnet facts
ec2_vpc_subnet_facts:
filters:
"tag:Name": "{{ public_subnet_name }}"
aws_access_key: "{{ accessKey }}"
aws_secret_key: "{{ secretKey }}"
region: "{{ regionToHost }}"
register: subnet_facts
- name: Create security group
local_action:
module: ec2_group
name: "{{ sec_group_name }}"
description: Access to the Episode2 servers
region: "{{ regionToHost }}"
aws_access_key: "{{ accessKey }}"
aws_secret_key: "{{ secretKey }}"
vpc_id: "{{ vpc_facts.vpcs[0].id }}"
rules:
- proto: "{{ ecs_sg_proto }}"
from_port: "{{ ecs_sg_from_port }}"
to_port: "{{ ecs_sg_to_port }}"
cidr_ip: "{{ ecs_sg_cidr_ip }}"
- name: Creating cluster
ecs_cluster:
aws_access_key: "{{ accessKey }}"
aws_secret_key: "{{ secretKey }}"
region: "{{ regionToHost }}"
name: "{{ clusterName }}"
state: present
delay: "{{ ecs_cluster_delay }}"
repeat: "{{ ecs_cluster_repeat }}"
register: task_output
- name: Launch new instance
ec2:
region: "{{ regionToHost }}"
aws_access_key: "{{ accessKey }}"
aws_secret_key: "{{ secretKey }}"
group: "{{ sec_group_name }}"
vpc_subnet_id: "{{ subnet_facts.subnets[0].id }}"
image: "{{ ecsOptmzdImage }}"
instance_profile_name: "{{ iam_role_name }}"
instance_type: "{{ instance_type }}"
instance_tags:
Name: "ECSInstance-EC2ContainerService-{{ clusterName }}" # capitalize because it is AWS convention
cluster: "{{ clusterName }}"
class: "{{ clusterName }}_class"
wait: yes
user_data: |
#!/bin/sh
echo ECS_CLUSTER="{{ clusterName }}" >> ##ETC_ECS_FILE##
register: ec2
- name: Add new instances to host group
add_host:
name: "{{ item.public_ip }}"
groups: "tag_class_{{ clusterName }}_class"
ec2_id: "{{ item.id }}"
with_items: "{{ ec2.instances }}"
- name: create task def- from ansible
ecs_taskdefinition:
containers: "{{ containers }}"
state: present
aws_access_key: "{{ accessKey }}"
aws_secret_key: "{{ secretKey }}"
region: "{{ regionToHost }}"
family: "{{ taskName }}"
register: task_output
- name: Print details name
debug: var=task_output.taskdefinition["family"]
- name: Print details Task revision
debug: var=task_output.taskdefinition["revision"]
- name: Print details Task name and revision
debug:
msg: "{{ task_output.taskdefinition[\"family\"] }}:{{ task_output.taskdefinition[\"revision\"] }}"
- name: create ecs service
ecs_service:
aws_access_key: "{{ accessKey }}"
aws_secret_key: "{{ secretKey }}"
region: "{{ regionToHost }}"
state: present
name: "{{ clusterName }}_service"
cluster: "{{clusterName}}"
task_definition: "{{ task_output.taskdefinition[\"family\"] }}:{{ task_output.taskdefinition[\"revision\"] }}"
desired_count: "{{serviceCount}}"
register: service_output
- name: Service Status
debug: var=service_output.service.status
- name: Service name
debug: var=service_output.service.serviceName
- name: Service ARN
debug: var=service_output.service.serviceArn
- name: Cluster ARN
debug: var=service_output.service.clusterArn
***************