无法写入 /etc/fstab 中的条目

无法写入 /etc/fstab 中的条目

我正在使用以下剧本来写入条目/etc/fstab并创建交换文件:

---

- 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

我们使用以下命令运行它: ansible-playbook mount.yml -e "ebs_swap=/dev/xvdj"

有人能告诉我为什么我无法输入内容/etc/fstab并且当我尝试运行上述命令时它成功了。

答案1

您正在使用 Ansiblecommand模块,该模块需要独立的二进制文件,但echo...需要将该行输入到 shell 中才能对其进行解释。将其替换command:shell:,您的剧本就可以正常工作了。

您还可以安全地从命令中删除“sudo”,因为该命令将以 root 身份执行...

...但为了实现这一点,您可能需要在命令中指定--ask-become-pass标志(简称-Kansible-playbook,因此,

ansible-playbook mount.yml -K -e "ebs_swap=/dev/xvdj"

答案2

我已经解决如下问题:

---

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

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

    - name: Adding arguments as CIS benchmark to /etc/fstab file
      blockinfile:
       path: /etc/fstab
       state: present
       block: |
          UUID={{ uuid_swap.stdout }}   swap      swap defaults              0   0

相关内容