在执行 playbook 以在远程主机中运行命令并使用 shell 传递输出时,出现以下错误。

致命:[master1]:失败! => {} 味精:模板字符串时出现模板错误:4 处的意外字符 u'a'。字符串:{{54aa7fda16833bff8358b6bd1157df2d9caa26b2}}

以下是我的剧本内容

- name: 'Play1' 

  hosts: master 

  tasks: 

   - name: 'Execute command' 

     shell: ''sh generate_ticket.sh" #command to generate ticket 

     register: shell_output 

   - name: 'debug shell_output' 

     debug: 

      var="{{ shell_output.stdout | from_yaml }}"

当我对 msg 尝试同样的操作并且不尝试过滤时,输出将被打印出来,没有任何错误。 但是我更喜欢使用 var 因为它最适合我的进一步要求。 如果票号是不同的字符串,我不会遇到任何问题。 请参阅以下内容:

输出:

ok: [master1] => {}


MSG:


54aa7fda16833bff8358b6bd1157df2d9caa26b2


Playbook :

- name: 'Play1' 

  hosts: master 

  tasks: 

   - name: 'Execute command' 

     shell: ''sh generate_ticket.sh" #command to generate ticket 

     register: shell_output 

   - name: 'debug shell_output' 

     debug: msg="{{ shell_output.stdout | from_yaml }}"

#1楼 票数:1 已采纳

当我在shell_output.stdout周围加上单引号时,它似乎shell_output.stdout

var="{{ 'shell_output.stdout' | from_yaml}}"

如果有人有比这更好的解决方法,请告诉我。

  ask by Haris translate from so

未解决问题?本站智能推荐:

1回复

ansible模板使用变量和字符串

我正在尝试使用以下内容填充 ansible 变量: "docker-ce" 如果在 RedHat “码头工人”否则以下工作,但不是很干净: 我想用一个三元表达式来写这个,我尝试了以下方法: 但我无法让这个工作。 为了澄清起见,以下内容将起作用: 但我想将docker_edition变量分开,
1回复

如何根据条件在Ansible模板中设置串联字符串变量

我需要在可以在主机之间更改的模板中创建一个字符串,并且它的格式必须为:“ cores”:“ 0,1,2,3” 在此示例中,该字符串之所以为“ 0,1,2,3”的原因是主机具有4个处理器内核。 因此,我陷入了似乎对我来说太复杂的问题,而且我甚至不确定如何在模板文件中使用此core_coun
1回复

Ansible模板在模板中添加'u'到数组

我的ansible playbook中有以下vars我得到了以下结构 并在我的conf.j2有以下conf.j2 现在,当我进入VM并查看文件时,我得到以下内容: 产量 请注意sans数组中的u 。 兴奋的输出 为什么会发生这种情况,我该如何解决?
2回复

Jinja2模板中“列表中存在项目”时打印字符串

我正在尝试使用从列表中确定的值填充 nsswitch.conf。 该列表是字符串: 如果字符串在列表中,我想在模板中输出一些内容。 仅当我的列表包含特定元素时,如何编写字符串?
1回复

当列表中有多个字符串时,Ansible词典不起作用

我有字典来循环列表中的多个字符串,如果我提供2个或更多,则它总是读取列表中的最后一个值,请建议我。 第一个是set_fact,它具有映射。 当我们在定义为“ MICROSERVICE_NAMES”的变量中包含多个字符串时,第二个任务应该可以循环 有一个正在运行的ansible命令,它始
2回复

当条件循环时在ansible中搜索字符串

团队,我想在sda设备上循环,只排除loop设备,所以我试图比较字符串的一部分,如果它存在于来自 ansible_devices 项目变量的键中并且卡在语法错误处。 我只想在满足WHEN条件时打印 msg。 基本上,当密钥中有子字符串loop时,我只想打印 msg。 我有以下示例输出,我能够检索它,
1回复

如何从包含YAML的字符串中读取Ansible变量?

我有一个运行uri调用的任务,以获取包含YAML片段的JSON文件(从Rancher API获得)。 我可以使用以下任务提取YAML片段 当我运行ansible调试策略时,它表明我的docker_compose变量包含 在我看来,这是有效的YAML。 结果,我想应该可以将该值解释为
1回复

ansible:将列表中的一个元素过滤为字符串

安全的 2.9.13 需要添加到远程文件字符串如MyIP = xxx.xxx.xxx.xxx 这是一个测试模板: 结果 问题:我需要添加什么过滤器,以获取字符串形式的 IP 值。 或者也许使用其他方法?