从远程服务器复制文件并使用ansible替换字符串

从远程服务器复制文件并使用ansible替换字符串,ansible,Ansible,我知道您可以使用ansible将文件从远程服务器复制到本地服务器。您甚至可以使用一些与从中获取的节点相关的变量来命名文件。我想做的是在复制文件后替换该文件上的某些字符串,理想情况下使用库存变量。这可能吗?是否有不涉及后处理bash脚本的解决方法?在获取文件后,只需通过任务向localhost进行委派即可 给定/tmp/somefile 还有剧本: -主机:所有 收集事实:不 任务: -获取: src:/tmp/somefile 目的地:/tmp/已提取 -替换: 路径:/tmp/fetched/

我知道您可以使用ansible将文件从远程服务器复制到本地服务器。您甚至可以使用一些与从中获取的节点相关的变量来命名文件。我想做的是在复制文件后替换该文件上的某些字符串,理想情况下使用库存变量。这可能吗?是否有不涉及后处理bash脚本的解决方法?

在获取文件后,只需通过任务向localhost进行委派即可

给定/tmp/somefile

还有剧本:

-主机:所有
收集事实:不
任务:
-获取:
src:/tmp/somefile
目的地:/tmp/已提取
-替换:
路径:/tmp/fetched/{{inventory\u hostname}}/tmp/somefile
regexp:“^这是一个示例字符串$”
替换:“{inventory_hostname}”
委托给:localhost
它产生了一个概述:

PLAY [all] *********************************************************************************************************

TASK [fetch] *******************************************************************************************************
changed: [host1]

TASK [replace] *****************************************************************************************************
changed: [host1 -> localhost]

PLAY RECAP *********************************************************************************************************
host1                      : ok=2    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 
并给出文件/tmp/fetched/host1/tmp/somefile,其中包含:

foo bar baz
host1
Lorem Ipsum
The quick brown fox jumps over the lazy dog

我做了类似的事情。。。但那是很久以前的事了。。。我不记得我到底做了什么,但如果我的记忆正确,我会在写入文件之前在ram驱动器中的临时文件上使用
命令:sed…
,可能是
lineinfle
模块?你看过了吗<代码>行是您分配的内容。另外还支持
regex
。这正是我想要的。但是为什么replace路径与fetch任务上的dest路径不同呢?因为我没有使用参数,所以Ansible在其中创建一个文件夹,作为我传递的文件夹
dest
,创建一个名为主机的子文件夹,然后使用
src
路径复制到文件。
foo bar baz
host1
Lorem Ipsum
The quick brown fox jumps over the lazy dog