Автоматизация настройки хранилища и точек монтирования

AnsibleBeginner
Практиковаться сейчас

Введение

Автоматизация монтирования должна быть воспроизводимой и безопасной. Для виртуальной машины в лабораторной работе файловая система tmpfs является отличным вариантом: она безопасна, но при этом позволяет полноценно отработать навыки управления точками монтирования и файлом fstab.

В этой лабораторной работе вы создадите точку монтирования, подключите tmpfs с помощью модуля ansible.posix.mount, проверите результат с помощью findmnt и содержимого /etc/fstab, а также убедитесь в идемпотентности вашего плейбука.

Создание проекта автоматизации монтирования

На этом этапе вы создадите проект для автоматизации безопасного монтирования tmpfs.

cd /home/labex/project
mkdir -p rhce-ansible/{inventory,playbooks,reports}
cd rhce-ansible
cat > ansible.cfg <<'EOF'
[defaults]
inventory = ./inventory/hosts
host_key_checking = False
retry_files_enabled = False
EOF
cat > inventory/hosts <<'EOF'
[managed]
host ansible_connection=local
EOF

Целевая точка монтирования является реальной системной точкой, но использование tmpfs избавляет от необходимости разбивать диск на разделы. Это делает лабораторную работу безопасной, сохраняя при этом возможность полноценной работы с монтированием и файлом /etc/fstab.

Определение переменных монтирования

На этом этапе вы определите точку монтирования, тип файловой системы и параметры. Параметр size=16m позволит ограничить размер tmpfs. Перед выполнением команд на этом этапе вернитесь в каталог проекта Ansible. Это обеспечит стабильность выполнения команд, даже если LabEx запускает каждый шаг отдельно.

cd /home/labex/project/rhce-ansible
mkdir -p inventory/group_vars
cat > inventory/group_vars/managed.yml <<'EOF'
mount_point: /mnt/rhce-ansible-data
mount_src: tmpfs
mount_fstype: tmpfs
mount_opts: size=16m,mode=0755
EOF

Переменные описывают как текущее монтирование, так и запись для постоянного хранения. tmpfs выступает в качестве источника и типа файловой системы, а size=16m,mode=0755 управляет размером файловой системы в оперативной памяти и правами доступа к точке монтирования.

cat inventory/group_vars/managed.yml

Написание плейбука для монтирования

На этом этапе вы будете использовать ansible.posix.mount. Параметр state: mounted выполняет монтирование файловой системы прямо сейчас и гарантирует наличие записи в /etc/fstab. Перед выполнением команд на этом этапе вернитесь в каталог проекта Ansible.

cd /home/labex/project/rhce-ansible
cat > playbooks/manage-mount.yml <<'EOF'
---
- name: Configure a safe tmpfs mount
  hosts: managed
  become: true
  gather_facts: false
  tasks:
    - name: Ensure mount point exists
      ansible.builtin.file:
        path: "{{ mount_point }}"
        state: directory
        mode: '0755'

    - name: Mount and persist tmpfs
      ansible.posix.mount:
        path: "{{ mount_point }}"
        src: "{{ mount_src }}"
        fstype: "{{ mount_fstype }}"
        opts: "{{ mount_opts }}"
        state: mounted

    - name: Write evidence inside mounted filesystem
      ansible.builtin.copy:
        dest: "{{ mount_point }}/mounted-by-ansible.txt"
        content: |
          mounted=true
        mode: '0644'
EOF

Состояние state: mounted выполняет две задачи: монтирует файловую систему в текущий момент и обеспечивает наличие записи в /etc/fstab для будущих загрузок системы. Последняя задача копирования записывает небольшой маркер внутри смонтированной файловой системы, чтобы вы могли убедиться в работоспособности точки монтирования.

ansible-playbook playbooks/manage-mount.yml --syntax-check

Запуск и проверка монтирования

На этом этапе вы запустите плейбук и проверите текущее состояние монтирования и запись в fstab.

cd /home/labex/project/rhce-ansible
ansible-playbook playbooks/manage-mount.yml | tee reports/mount-first.txt

Первый запуск должен создать точку монтирования, смонтировать tmpfs, обновить /etc/fstab и создать файл-маркер. Вы проверите каждый из этих результатов.

findmnt /mnt/rhce-ansible-data

Команда findmnt подтверждает, что в таблице монтирования ядра присутствует данная точка.

grep -F /mnt/rhce-ansible-data /etc/fstab

Строка в /etc/fstab подтверждает наличие постоянной конфигурации.

cat /mnt/rhce-ansible-data/mounted-by-ansible.txt

Чтение файла-маркера доказывает, что файловая система доступна для записи и подключена по ожидаемому пути.

Подтверждение идемпотентности автоматизации монтирования

На этом этапе вы повторно запустите плейбук. Точка монтирования, запись в fstab и файл-маркер уже должны соответствовать желаемому состоянию.

cd /home/labex/project/rhce-ansible
ansible-playbook playbooks/manage-mount.yml | tee reports/mount-second.txt

Второй запуск проверяет, может ли Ansible распознать существующее монтирование, запись в fstab и файл-маркер, не внося при этом никаких изменений.

grep -E 'host.*changed=0' reports/mount-second.txt

Резюме

Вы настроили безопасное монтирование tmpfs с помощью ansible.posix.mount, проверили состояние монтирования (текущее и постоянное) и подтвердили, что плейбук корректно сходится к заданному состоянию (идемпотентен).