gpt4 book ai didi

file - 将源文件的内容附加到目标文件

转载 作者:行者123 更新时间:2023-12-04 07:52:13 25 4
gpt4 key购买 nike

我需要扫描/etc/fstab一个条目的文件,如果它不存在,则将另一个文件的内容附加到 /etc/fstab .

我见过的 Ansible 模块似乎不允许将文件附加到另一个文件,而只是添加特定的“文本”行。

最佳答案

lineinfile如果您的用例只是检查是否存在特定行,则可以使用模块。

例如,如果您想确保有 /dev/sdb1已定义分区并映射到 /data并使用 ext4 文件系统,然后您可以使用:

lineinfile: dest=/etc/fstab regexp="^/dev/sdb1 " line="/dev/sdb1    /data    ext4    defaults    1  2"

如果没有以 /dev/sdb1 开头的行然后它将它添加到文件的末尾。有帮助的是,如果该行的其余部分不匹配(例如,如果它安装为 ext3 ),那么它将更改为提供的行。

如果你真的需要它来使用文件的全部内容,那么你可以使用 file lookup这可能看起来像:
lineinfile: dest=/etc/fstab regexp="^/dev/sdb1 " line="{{ lookup('file', 'files/fstabdata') }}"

我还没有测试过。

如果您的用例是安装磁盘,那么您可以考虑使用 mount模块可以更好地处理事情。

如果你真的被卡住了,那么你总是可以用类似的东西来解决:
-name: Check for line in /etc/fstab
command: grep /dev/sdb1
changed_when: False
register: shell_out

-name: Append to /etc/fstab
command: cat /home/ansible/files/fstabdata >> /etc/fstab
when: shell_out.std_out != ''

但总的来说,在使用 Ansible 之前,您应该始终考虑使用提供的模块,然后再进行炮击。

关于file - 将源文件的内容附加到目标文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33127360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com