【发布时间】:2017-10-03 15:33:46
【问题描述】:
我在 Puppet 的文件编码地狱中。 即使是最简单的尝试也不起作用:
hiera-data/test.yaml:
---
test: Äñö
init.pp:
$test = hiera('test')
file { "/root/encoding.txt":
ensure => file,
content => $test
}
在 Puppet 服务器上一切正常:
puppet:~ # file -i /etc/puppetlabs/puppet/hiera-data/env/test.yaml
/etc/puppetlabs/puppet/hiera-data/env/test.yaml: text/plain charset=utf-8
puppet:~ # cat /etc/puppetlabs/puppet/hiera-data/env/test.yaml
---
test: Äñö
puppet:~ # locale
LANG=POSIX
LC_CTYPE=en_US.UTF-8
关于傀儡代理:
puppet-test:~ # locale
LANG=POSIX
LC_CTYPE=en_US.UTF-8
运行后:
puppet-test:~ # file -i encoding.txt
encoding.txt: text/plain charset=utf-8
但是
这是要求的十六进制数据:
0000000: efbf bdef bfbd efbf bdef bfbd efbf bdef ................
0000010: bfbd 0a ...
直接运行 hiera 不会提供任何进一步的见解。特别是我只能在服务器上试用,因为代理没有源。
我的环境已经过时了,但我不允许使用任何更新的版本,至少现在还没有,没有任何好的理由:
- SuSE Enterprise Linux 11 Service Pack 3
- 傀儡企业 3.8.6
- pe-ruby-1.9.3.551-9.pe.sles11
我将不胜感激对此问题的任何见解。
【问题讨论】:
-
你确定问题不是你的终端吗?在十六进制编辑器(或具有二进制/十六进制模式的文本编辑器)中打开
encoding.txt并检查文件是否包含正确的字节。特别是,您提供的字符串的 UTF-8 编码将由以下六个字节组成:c3 84 c3 b1 c3 b6。如果它包含不同的内容,请将其添加到您的问题中。 -
我用缺失的信息更新了问题,谢谢@JohnBollinger
-
再看一遍,这似乎不是傀儡问题。这似乎是系统环境问题。
-
@MattSchuchard:可能是,但我可以检查什么才能更进一步?
-
如果从命令行使用 hiera 会得到什么?例如:`# hiera -d test > test-encoding.txt`(您可能必须使用 -c
来查找正确的文件)