Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ansible“;带有“u行:cat somefile”;在跳过的块中失败_Ansible - Fatal编程技术网

ansible“;带有“u行:cat somefile”;在跳过的块中失败

ansible“;带有“u行:cat somefile”;在跳过的块中失败,ansible,Ansible,我有一本游戏书,上面有一个方块有一个when条件。内部是一个带有循环的任务。如何更改此循环,以便在条件为false时跳过的任务不会失败 block: - name: create a file lineinfile: line: "Hello World" path: "{{my_testfile}}" create: yes - name: use the file debug:

我有一本游戏书,上面有一个方块有一个when条件。内部是一个带有循环的任务。如何更改此循环,以便在条件为false时跳过的任务不会失败

block:
  - name: create a file
    lineinfile:
      line: "Hello World"
      path: "{{my_testfile}}"
      create: yes

  - name: use the file
    debug: 
      msg: "{{ item}}"
    with_lines: cat "{{my_testfile}}"

when: false


将失败的任务更改为以下选项,即使文件不存在,也始终可以运行该任务,并且在不需要的情况下不会使用shell或命令:

-名称:使用该文件
调试:
msg:“{{item}}”
循环:{{(lookup('file',my_testfile,errors='ignore')| default('',true)).split('\n')}
要点:

  • 文件
    查找插件与
    errors='ignore'
    一起使用,以便在文件不存在时返回文件内容或
    None
    ,而不是错误
  • 使用
    default
    过滤器,并将第二个选项设置为
    true
    ,以便在var存在但为null或空时返回默认值
  • 在新行上拆分结果以获得行列表(如果文件不存在,则为空列表)

注意:@Vladimir报告,我更正了您在ansible中无效的var名称。

将失败的任务更改为以下内容,即使文件不存在,也始终能够运行,并且在不需要的情况下不会使用shell或命令:

-名称:使用该文件
调试:
msg:“{{item}}”
循环:{{(lookup('file',my_testfile,errors='ignore')| default('',true)).split('\n')}
要点:

  • 文件
    查找插件与
    errors='ignore'
    一起使用,以便在文件不存在时返回文件内容或
    None
    ,而不是错误
  • 使用
    default
    过滤器,并将第二个选项设置为
    true
    ,以便在var存在但为null或空时返回默认值
  • 在新行上拆分结果以获得行列表(如果文件不存在,则为空列表)

注意:@Vladimir报告,我更正了您在ansible中无效的var名称。

测试文件是否存在。比如说

-块:
-名称:创建一个文件
线条填充:
台词:“你好,世界”
路径:“{my_testfile}}”
创建:是
-名称:使用该文件
shell:'[-f“{my_testfile}}]&&cat{{my_testfile}”
寄存器:结果
-名称:使用该文件
调试:
msg:“{{item}}”
循环:“{result.stdout_lines}”
何时:假

首选
查找
插件
文件

测试文件是否存在。比如说

-块:
-名称:创建一个文件
线条填充:
台词:“你好,世界”
路径:“{my_testfile}}”
创建:是
-名称:使用该文件
shell:'[-f“{my_testfile}}]&&cat{{my_testfile}”
寄存器:结果
-名称:使用该文件
调试:
msg:“{{item}}”
循环:“{result.stdout_lines}”
何时:假

应该优先选择
查找
插件
文件

最后,我混合了提供的答案。将跳过这些任务,而不会失败或产生警告

-块:
-名称:创建一个文件
线条填充:
台词:“你好,世界”
路径:“{my_testfile}}”
创建:是
-名称:获取文件
啜食:
src:{{my_testfile}}”
寄存器:结果
-名称:使用该文件
调试:
msg:“{{item}}”
循环:{(结果['content']|b64decode.split('\n')}
何时:假

我最终得到了一系列提供的答案。将跳过这些任务,而不会失败或产生警告

-块:
-名称:创建一个文件
线条填充:
台词:“你好,世界”
路径:“{my_testfile}}”
创建:是
-名称:获取文件
啜食:
src:{{my_testfile}}”
寄存器:结果
-名称:使用该文件
调试:
msg:“{{item}}”
循环:{(结果['content']|b64decode.split('\n')}
何时:假

my_testfile
不是有效的变量名。@VladimirBotka,实际上
my testfile
无效,但
my_testfile
无效。我认为你在评论中习惯性地当场改正了:)对。谢谢你的评论:)。
my_testfile
不是有效的变量名。@VladimirBotka,实际上
my testfile
无效,但
my_testfile
无效。我认为你在评论中习惯性地当场改正了:)对。感谢您的评论:)。我对此不太满意,因为它没有失败,但仍然会产生一个警告“无法在预期路径中找到'testfile'(使用-vvv查看路径)”我对此不太满意,因为它没有失败,但仍然会产生一个警告“无法在预期路径中找到'testfile'(使用-vvv查看路径)”
TASK [create a file] ************************************************************************************************************************************************************

TASK [use the file] *************************************************************************************************************************************************************
cat: files/my/testfile: No such file or directory
fatal: [ipad-icpi01]: FAILED! => {"msg": "lookup_plugin.lines(cat \"files/mytestfile\") returned 1"}