Двойная запись в fstab с использованием Ansible

#ansible #ansible-2.x

#ansible #ansible-2.x

Вопрос:

Я хочу:

  1. смонтировать /dev/xvdb1 в /mnt/newvar
  2. скопируйте файлы из /var/ в /mnt/newvar
  3. смонтировать /dev/xvdb1 в /var

Но когда я делаю это с помощью ansible, я получаю двойные записи в fstab, и это должно заменить предыдущую, есть ли решение этой проблемы?:

UUID=7698aac5-0a24-333f-a8c3-b76349gec0e2 /mnt/newvar ext4 по умолчанию,noauto 0 0

UUID=7698aac5-0a24-333f-a8c3-b76349gec0e2 /var ext4 по умолчанию 0 2

 - name: "Get UUID for partition"
  command: "lsblk -no UUID /dev/xvdb1"
  register: with_output

- name: Mount /mnt/newvar to /dev/xvdb1
  mount:
    path: "{{ newvar_dir }}"
    src: "UUID={{ item }}"
    fstype: "{{ volume_filesystem_type }}"
    opts: "defaults,noauto"
    state: mounted
  with_items: 
    - "{{ with_output.stdout_lines }}"

- name: copy files from /var/* to /mnt/newvar 
  synchronize:
    src: /var/
    dest: "{{ newvar_dir }}"
    recursive: yes
    archive: yes
    delete: False
  delegate_to: "{{ vault_ip }}"

- name: Mount /dev/xvdb1 to /var
  mount:
    path: /var
    src: "UUID={{ item }}"
    fstype: "{{ volume_filesystem_type }}"
    opts: defaults
    state: mounted
    passno: 2
  with_items: 
    - "{{ with_output.stdout_lines }}"
  

Ответ №1:

При монтировании одно и то же UUID дважды добавляется к /etc/fstab дважды, поскольку mount модуль ansible работает следующим образом:
введите описание изображения здесь

Так что это всегда будет изменяться, /etc/fstab если вы не используете absent , но это не ваш случай

Это все еще обсуждается здесь:
https://github.com/ansible/ansible/issues/48134

Я думаю, вы можете использовать shell module, если хотите монтировать только

Пример:

 - shell: |
    mount /dev/xvdb1 /var
  

Комментарии:

1. спасибо, да, я могу использовать оболочку или: — имя: Размонтировать /mnt/newvar монтировать: путь: «{{ newvar_dir }}» состояние: отсутствует