From 54baed6ccab471140c327a375bd6c681d5d3a248 Mon Sep 17 00:00:00 2001 From: Steve Smith Date: Mon, 1 Apr 2019 15:38:26 +1100 Subject: [PATCH] DCD-224: Add fetching of EC2 metadata and generation of EFS mount from it. --- ansible.cfg | 2 ++ aws_jira_dc_node.yml | 1 + bin/ansible-with-atl-env | 1 - group_vars/all.yml | 6 ++++++ roles/aws_efs_config/defaults/main.yml | 2 ++ roles/aws_efs_config/meta/main.yml | 3 +++ roles/aws_efs_config/tasks/main.yml | 13 +++++++++++++ roles/aws_metadata/tasks/main.yml | 8 ++++++++ roles/product_base/tasks/main.yml | 7 +++++++ 9 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 ansible.cfg create mode 100644 roles/aws_efs_config/defaults/main.yml create mode 100644 roles/aws_efs_config/meta/main.yml create mode 100644 roles/aws_efs_config/tasks/main.yml create mode 100644 roles/aws_metadata/tasks/main.yml diff --git a/ansible.cfg b/ansible.cfg new file mode 100644 index 0000000..5f907dd --- /dev/null +++ b/ansible.cfg @@ -0,0 +1,2 @@ +[default] +retry_files_enabled = False diff --git a/aws_jira_dc_node.yml b/aws_jira_dc_node.yml index 5ca9c76..80d5083 100644 --- a/aws_jira_dc_node.yml +++ b/aws_jira_dc_node.yml @@ -9,3 +9,4 @@ - aws_linux2_common - aws_linux2_product_common - product_base + - aws_efs_config diff --git a/bin/ansible-with-atl-env b/bin/ansible-with-atl-env index 32fd8fa..99060ff 100755 --- a/bin/ansible-with-atl-env +++ b/bin/ansible-with-atl-env @@ -13,4 +13,3 @@ source $ENV_FILE set +a ansible-playbook -v -i $INV $PLAYBOOK - diff --git a/group_vars/all.yml b/group_vars/all.yml index 9e57c0d..e50f9b9 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -2,3 +2,9 @@ java_version: "1.8.0" postgres_version: "9.6" git_version: "2.14.4" +atl_shared_mountpoint: "/media/atl" + +# The following are imports from the environment. These are generally +# set in /etc/atl by the CloudFormation template and sourced before +# Ansible is run. +atl_efs_id: "{{ lookup('env', 'ATL_EFS_ID') }}" diff --git a/roles/aws_efs_config/defaults/main.yml b/roles/aws_efs_config/defaults/main.yml new file mode 100644 index 0000000..64a2f99 --- /dev/null +++ b/roles/aws_efs_config/defaults/main.yml @@ -0,0 +1,2 @@ +--- +efs_target: "{{ ansible_ec2_placement_availability_zone }}.{{ atl_efs_id }}.efs.{{ ansible_ec2_placement_region }}.amazonaws.com" diff --git a/roles/aws_efs_config/meta/main.yml b/roles/aws_efs_config/meta/main.yml new file mode 100644 index 0000000..a2ee36a --- /dev/null +++ b/roles/aws_efs_config/meta/main.yml @@ -0,0 +1,3 @@ +--- +dependencies: + - aws_metadata diff --git a/roles/aws_efs_config/tasks/main.yml b/roles/aws_efs_config/tasks/main.yml new file mode 100644 index 0000000..3d6145d --- /dev/null +++ b/roles/aws_efs_config/tasks/main.yml @@ -0,0 +1,13 @@ +--- + +- name: Enable mountpoint in fstab + # lineinfile: + # path: "/etc/fstab" + # line: "{{ efs_target }}:/ /media/atl nfs4 rw,vers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 0 0" + # notify: mount_all + mount: + path: "{{ atl_shared_mountpoint }}" + src: "{{ efs_target }}:/" + fstype: nfs4 + opts: "rw,vers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2" + state: mounted diff --git a/roles/aws_metadata/tasks/main.yml b/roles/aws_metadata/tasks/main.yml new file mode 100644 index 0000000..1df971b --- /dev/null +++ b/roles/aws_metadata/tasks/main.yml @@ -0,0 +1,8 @@ +--- + +# This role is primarily intended to be depended on via `meta` by +# roles that need runtime information available. + +- name: Fetch local EC2 metadata + ec2_metadata_facts: + diff --git a/roles/product_base/tasks/main.yml b/roles/product_base/tasks/main.yml index 4758609..d072768 100644 --- a/roles/product_base/tasks/main.yml +++ b/roles/product_base/tasks/main.yml @@ -4,3 +4,10 @@ user: name: "{{ product_user }}" comment: "Product runtime user" + +- name: Create mountpoint + file: + state: directory + path: "{{ atl_shared_mount }}" + owner: "{{ product_user }}" + mode: 0755