我正在使用下面的剧本将条目写入/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
&当我试图在命令之上运行时它获得成功。
您正在使用 Ansible 的
command
模块,该模块需要独立的二进制文件,但echo...
需要将该行提供给 shell 来解释它。替换command:
为,shell:
然后您的剧本应该可以工作。您还可以安全地从命令中删除“sudo”,因为该命令将以 root 身份执行...
...但要实现这一点,您可能需要为您的命令指定
--ask-become-pass
标志(短格式-K
)ansible-playbook
,因此,我已经解决了以下问题: