我在远程系统上获取命令的输出并将其存储在变量中.然后它用于填写放置在系统上的文件模板.
- name: Retrieve Initiator Name
command: /usr/sbin/iscsi-iname
register: iscsiname
- name: Setup InitiatorName File
template: src=initiatorname.iscsi.template dest=/etc/iscsi/initiatorname.iscsi
Run Code Online (Sandbox Code Playgroud)
initiatorname.iscsi.template文件包含:
InitiatorName={{ iscsiname.stdout_lines }}
Run Code Online (Sandbox Code Playgroud)
然而,当我运行它时,我得到一个包含以下内容的文件:
InitiatorName=[u'iqn.2005-03.org.open-iscsi:2bb08ec8f94']
Run Code Online (Sandbox Code Playgroud)
我想要的是:
InitiatorName=iqn.2005-03.org.open-iscsi:2bb08ec8f94
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我意识到我可以使用"echo"InitiatorName = $(/ usr/sbin/iscsi-iname)"> /etc/iscsi/initiatorname.iscsi"将其写入文件,但这似乎是一种不可接受的方式.
提前致谢.
小智 8
FWIW,如果你真的有一个数组:
[u'string1', u'string2', u'string3']
Run Code Online (Sandbox Code Playgroud)
并且您希望您的模板/结果不是:
ABC=[u'string1', u'string2', u'string3']
Run Code Online (Sandbox Code Playgroud)
但你更喜欢:
ABC=["string1", "string2", "string3"]
Run Code Online (Sandbox Code Playgroud)
然后,这将做的伎俩:
ABC=["{{ iscsiname.stdout_lines | list | join("\", \"") }}"]
Run Code Online (Sandbox Code Playgroud)
(由于我的代码最初是在字符串中而产生的额外反斜杠.)
使用过滤器来避免unicode字符串:
InitiatorName = {{ iscsiname.stdout_lines | to_yaml }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18331 次 |
| 最近记录: |