Как добавить записи в `/ etc / fstab` дисков, используя Ansible -playbook? - PullRequest
0 голосов
/ 10 апреля 2020

Я использую ниже Playbook для записи записей в /etc/fstab. И создать swap файл:

---

- name: Configure SWAP
  hosts: localhost
  become: yes
  become_user: root

  tasks:
    - name: Configuring a SWAP
      command: "{{ item }}"
      loop:
        - mkswap -f "{{ ebs_swap }}"
        - echo "UUID=$(blkid -s UUID -o value {{ ebs_swap }})   swap    swap   defaults  0   0" | sudo tee -a /etc/fstab
        - swapon -a
      register: output

    - name: Display the variable
      debug:
       msg: "{{ output}}"

Мы запускаем его с помощью команды: ansible-playbook mount.yml -e "ebs_swap=/dev/xvdj"

O / P:

                "item": "echo \"UUID=$(blkid -s UUID -o value /dev/xvdj)   swap    swap   defaults  0   0\" | sudo tee -a /etc/fstab",
                "rc": 0,
                "start": "2020-04-09 14:51:23.890047",
                "stderr": "",
                "stderr_lines": [],
                "stdout": "UUID=$(blkid -s UUID -o value /dev/xvdj)   swap    swap   defaults  0   0 | sudo tee -a /etc/fstab",
                "stdout_lines": [
                    "UUID=$(blkid -s UUID -o value /dev/xvdj)   swap    swap   defaults  0   0 | sudo tee -a /etc/fstab"

Может кто-нибудь сказать почему я не могу получить запись в /etc/fstab, и когда я пытаюсь выполнить команды выше, она получает успех.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Я решил, используя ниже:

- name: Dispaly uuid & store in variable
  command: blkid -s UUID -o value {{ ebs_swap }}
  register: uuid_swap

- name: Add the below lines
  blockinfile:
    path: /etc/fstab
    state: present
    block: |
      UUID={{ uuid_swap.stdout }}   swap      swap defaults                         0   0
0 голосов
/ 15 апреля 2020

В соответствии с модулем выполните c https://docs.ansible.com/ansible/latest/modules/command_module.html:

Если вы хотите запустить команду через оболочку (скажем, вы используете <,>, | и т. д. c), вместо этого вам нужен модуль оболочки. Разбор метасимволов оболочки может привести к неожиданному выполнению команд, если цитирование выполнено неправильно, поэтому более безопасно использовать командный модуль, когда это возможно.

В любом случае, я думаю, что вы не хотите, чтобы эта строка быть добавленным в ваш файл при каждом запуске этой книги воспроизведения, вместо этого используйте lineinfile, чтобы убедиться, что эта строка существует:

- shell: blkid -s UUID -o value {{ ebs_swap }})
  register: blkid_out

- lineinfile:
    path: /etc/fstab
    regexp: "^UUID={{ blkid_out.stdout }}"
    line: "UUID={{ blkid_out.stdout }}   swap    swap   defaults  0   0"

Теперь строка будет добавлена, только если она не существует

...