카테고리 없음

잼크레커는 앤시블 기반이였다....

미니대왕님 2020. 1. 31. 03:08

- 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

 

 

***************