我正在编写一个理想情况下更新文件中的块的播放,但目标文件可以是基于某些条件的任何粗略的20个文件。虽然这无疑是错误的,但我想要的是:
- name: update files
hosts: localhost
user: myself
tasks:
- blockinfile:
dest: /home/me/file1
when: {{ condition }} == True
dest: /home/me/file2
when: {{ condition2 }} == True
...
block: |
data
data
...
是否有惯用或正确的方法来做到这一点?
答案 0 :(得分:1)
这听起来有点令人费解,我有一种感觉,如果你退出问题,你可能会想到一个更好的解决方案。但是,根据提供的信息,我会说将逻辑移动到变量中,然后将变量用作目标。
所以你有一些vars文件(例如角色默认值或环境组vars,甚至是包含的vars文件),如下所示:
public static byte[] GeneratePdf(this HttpControllerContext context, Controller controller, object model, string viewName, string fileName, string plugin = null)
{
var cnt = new myViewAsPdf(viewName, model) { FileName = fileName };
cnt.InitPlugin(plugin);
return cnt.BuildPdf(controller.ControllerContext);
}
然后在你的任务中只有以下内容:
rolename_blockinfile_dest: '{% if condition %}/home/me/file1{% elif condition2 %}/home/me/file2{% endif %}'