273 July 21, 2024, 4:46 p.m.

Монтирование AWS EFS диска через ansible

Задача: получить доступ к данным которые, которые находятся в AWS EFS.

Для достижения поставленной задачи требуется написать следующий код:

Установка зависимостей:

- name: Install depends
  ansible.builtin.apt:
    name:
      - nfs-common
    state: latest
    update_cache: true

Переменные:

VARIABLE:
  - {name: "example",  src: "1.1.1.1",  state: present}

Код:

- name: Create mount point of efs storage
  file:
    path: /mnt/EFS/{{ item.name }}
    state: directory
  when: item.type == "efs-tar"
  with_items: "{{ VARIABLE }}"

- name: Mount efs storage
  mount:
    path: /mnt/EFS/{{ item.name }}
    src: "{{ item.src }}:/"
    fstype: nfs4
    opts: nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport
    state: mounted
  when: item.type == "efs-tar"
  with_items: "{{ VARIABLE }}"

Чтобы в какой-то момент сервер не упал, предлагаю использовать вариант монтирования дисков через CRONTAB

- name: Add cron job to run a mount at system boot
  cron:
    name: "Add mount at boot for {{ item.name }}"
    special_time: "reboot"
    job: "mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport {{ item.src }}:/ /mnt/EFS/{{ item.name }}"
  when: item.type == "efs-tar" and SERVERNAME == item.target
  with_items: "{{ VARIABLE }}"