用Puppet编码地狱

时间:2017-05-05 08:26:27

标签: ruby encoding 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

但:

cat encoding.txt

更新:此处约翰的评论中提到的HEX数据(使用vi :%!xxd查看):

0000000: efbf bdef bfbd efbf bdef bfbd efbf bdef  ................
0000010: bfbd 0a                                  ...

更新:正如彼得的评论中所述,直接运行hiera并未提供任何进一步的见解。特别是,我只能在服务器上试用它,因为代理没有源。 enter image description here

我的环境已经过时了,但我不允许使用任何更新的版本(至少现在没有,没有任何好的理由):

  • SuSE Enterprise Linux 11 Service Pack 3
  • Puppet Enterprise 3.8.6
  • PE-红宝石1.9.3.551-9.pe.sles11

我很感激对此问题的任何见解!

非常感谢提前

1 个答案:

答案 0 :(得分:0)

拥有LANG = POSIX肯定会让事情变得棘手。 LANG是决定控制台显示的编码的因素。通常需要使用LANG和LC_TYPE匹配。

请参阅:Explain the effects of export LANG, LC_CTYPE, LC_ALL

有关LANG = POSIX的更多信息,请参阅http://pubs.opengroup.org/onlinepubs/7908799/xbd/locale.html#tag_005_002

此外,在一个不相关的说明中,Puppet 3.8肯定存在关于正确显示和/或持久化unicode字符的缺陷。在最近的Puppet构建中已经做了很多工作来完全国际化(和本地化)Puppet。