我在远程系统上获取命令的输出并将其存储在变量中。然后使用它来填充放置在系统上的文件模板。

- 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

启动器名称.iscsi.template 文件包含:
InitiatorName={{ iscsiname.stdout_lines }}

但是,当我运行它时,我得到一个包含以下内容的文件:
InitiatorName=[u'iqn.2005-03.org.open-iscsi:2bb08ec8f94']

我想要的是:
InitiatorName=iqn.2005-03.org.open-iscsi:2bb08ec8f94

我究竟做错了什么?

我意识到我可以使用“echo "InitiatorName=$(/usr/sbin/iscsi-iname)">/etc/iscsi/initiatorname.iscsi”将其写入文件,但这似乎是一种不可靠的方式.

提前致谢。

最佳答案

使用过滤器来避免 unicode 字符串:

InitiatorName = {{ iscsiname.stdout_lines | to_yaml }}

Ansible Playbook Filters

关于unicode - 将 Ansible 变量从 Unicode 转换为 ASCII,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21413613/

10-12 22:53