2021-02-09 17:05:00 +01:00
---
- name : 'Install AWS CLI'
tags : 'aws-cli'
become : 'yes'
pip : >
executable=pip
name=awscli
state=present
extra_args=--no-cache-dir
- name : 'Install docker python'
tags : 'aws-cli'
become : 'yes'
pip : >
name=docker
state=present
extra_args=--no-cache-dir
- name : 'Install boto python'
tags : 'aws-cli'
become : 'yes'
pip : >
name=boto3
state=present
extra_args=--no-cache-dir
- name : Set home directory of the user
set_fact :
home_dir : /home/{{ aws_cli_user }}
when : "not aws_cli_user == 'root'"
- name : Set home directory for root
set_fact :
home_dir : /root
when : "aws_cli_user == 'root'"
- name : 'Create the AWS config directory'
tags : 'aws-cli'
become : 'yes'
file : >
path={{ home_dir }}/.aws
state=directory
owner={{ aws_cli_user }}
group={{ aws_cli_group }}
mode=0755
- name : 'Copy AWS CLI config'
tags : 'aws-cli'
become : 'yes'
template : >
src=aws_cli_config.j2
dest={{ home_dir }}/.aws/config
owner={{ aws_cli_user }}
group={{ aws_cli_group }}
mode=0600
force=yes
- name : 'Copy AWS CLI credentials'
tags : 'aws-cli'
become : 'yes'
template : >
src=aws_cli_credentials.j2
dest={{ home_dir }}/.aws/credentials
owner={{ aws_cli_user }}
group={{ aws_cli_group }}
mode=0600
force=yes
- name : aws - check AWS meta-data URI
uri :
url : http://169.254.169.254/latest/meta-data
timeout : 1
register : aws_uri_check
tags : 'aws'
failed_when : False
- name : aws - get instance metadata
tags : 'aws'
ec2_metadata_facts :
when : aws_uri_check.status == 200
- name : aws - get instance tags
tags : 'aws'
ec2_tag :
aws_access_key : "{{ aws_access_key_id }}"
aws_secret_key : "{{ aws_secret_access_key }}"
region : "{{ ansible_ec2_placement_region }}"
resource : "{{ ansible_ec2_instance_id }}"
state : list
register : ec2_tags
when : ansible_ec2_instance_id is defined
- name : aws - set hostname
hostname : name="{{ ec2_tags.tags.hostname }}{% if ec2_tags.tags.domainname is defined %}.{{ ec2_tags.tags.domainname }}{% endif %}"
tags : 'aws'
when : ec2_tags.tags is defined and ec2_tags.tags.hostname is defined
- name : aws - ecr login
shell : "$(aws ecr get-login --no-include-email --region {{ aws_region }})"
tags : 'aws'
when : ec2_tags.tags is defined
2021-06-16 13:19:52 +02:00
# ansible v2.8
# - name: aws - prune docker objects
# docker_prune:
# containers: yes
# images: yes
# images_filters:
# dangling: false
# networks: yes
# volumes: yes
# builder_cache: yes
# tags: 'aws'
2021-02-09 17:05:00 +01:00
- name : aws - launch docker containers
docker_container :
image : "{{docker_registry|default(ec2_tags.tags.user)}}/{{ec2_tags.tags.user}}/{{ec2_tags.tags.env}}/{% if ':' in item %}{{item}}{% else %}{{item}}:{{docker_image_tag|default('latest')}}{% endif %}"
name : "{{ec2_tags.tags.user}}_{{ec2_tags.tags.env}}_{{item|replace('/','_')|regex_replace(':.*','')}}"
network_mode : host
pull : yes
restart_policy : always
volumes :
- "{{ lookup('env','ANSIBLE_DISKS_NFS_PATH') }}:/shared"
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
tags : 'aws'
with_items : '{{ec2_tags.tags.services.split(" ")}}'
when : ec2_tags.tags is defined and ec2_tags.tags.env is defined and ec2_tags.tags.services is defined and ec2_tags.tags.user is defined
- name : aws - add docker containers to inventory
add_host :
name : "{{ec2_tags.tags.user}}_{{ec2_tags.tags.env}}_{{item|replace('/','_')|regex_replace(':.*','')}}"
ansible_connection : docker
changed_when : false
tags : 'aws'
with_items : '{{ec2_tags.tags.services.split(" ")}}'
when : ec2_tags.tags is defined and ec2_tags.tags.env is defined and ec2_tags.tags.services is defined and ec2_tags.tags.user is defined
2021-06-02 00:54:33 +02:00
- name : aws - run make deploy-hook in docker containers
2021-02-09 17:05:00 +01:00
delegate_to : "{{ec2_tags.tags.user}}_{{ec2_tags.tags.env}}_{{item|replace('/','_')|regex_replace(':.*','')}}"
2021-06-02 00:54:33 +02:00
raw : "command -v make || exit 0 && make deploy-hook CONTAINER={{ec2_tags.tags.user}}_{{ec2_tags.tags.env}}_{{item|replace('/','_')|regex_replace(':.*','')}} HOST={{ansible_ec2_local_ipv4}}"
2021-02-09 17:05:00 +01:00
tags : 'aws'
with_items : '{{ec2_tags.tags.services.split(" ")}}'
when : ec2_tags.tags is defined and ec2_tags.tags.env is defined and ec2_tags.tags.services is defined and ec2_tags.tags.user is defined