我需要通过 Ansible playbook 更新一些文件。
通常我的剧本会连接到存储新文件的站点并传输它们。
问题是是否有一种方法可以将新文件的内容集成到剧本中,以便将其捆绑在一起,而无需下载站点。
我想到了 HTML 和图像。您可以引用另一个文件,也可以将其内联 Base64 编码。
编辑
刚刚发现模块副本支持内联数据。
- name: Creating a file with content
copy:
dest: "x.x"
content: |
line1abc xyz
yxz000 123
blabla *** ...
这对我来说是一种可能的方式。也许有更好的 - 请告诉我。
答案1
虽然您的方法有效ansible.builtin.copy
,但content
它无法针对大量文件进行扩展。
我建议你看看文档ansible.posix.synchronize
和ansible.builtin.git
同步模块基本上是 rsync 的包装器。
对于 html 文件或任何其他代码,无论如何您都应该使用 git,这样您就可以利用它进行文件传输。这里 -moduledepth
的 -attribute很git
有趣:您可能想要在您的网络服务器上进行深度为 1 的浅层克隆,而不是本地存储库的完整克隆。