Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What is going on with this article?
@kijibato

dockerでpuppet実行エラー (invalid byte sequence in US-ASCII)

More than 3 years have passed since last update.

ロケール設定をちゃんとやってなかったdockerコンテナ上で、2バイト文字でつまったとき用のメモです。普通の環境であればインストール時にロケール設定されているはずですが、dockerでちょっと試したい時の暫定対処用。

症状

既存ファイルがないときやdiffが表示されない場合などはエラーにならないけど、ファイルを置き換えるなどで2バイト文字を含むdiffが表示される場合(--testオプションあり)で次のようなエラーになる。

Error: invalid byte sequence in US-ASCII
Error: /Stage[main]/Main/File[/tmp/puppet_erb_sample.txt]/content: change from {md5}5bf1f316d6eebb76edac121be636451c to {md5}f1995f537d52ea45d62b5858778f4368 failed: invalid byte sequence in US-ASCII

原因

RubyがUS-ASCIIになっている。

# /opt/puppetlabs/puppet/bin/ruby -e 'puts Encoding.default_external'
US-ASCII

暫定対策

試すだけであれば、一時的にRUBYOPTをUTF-8に設定。
実行するコマンドの前に、RUBYOPT=-EUTF-8をつける。

# RUBYOPT=-EUTF-8 /opt/puppetlabs/puppet/bin/ruby -e 'puts Encoding.default_external'
UTF-8

puppet applyするときも。

# RUBYOPT=-EUTF-8 /opt/puppetlabs/bin/puppet apply erb01.pp --modulepath=modules -t --noop

きちんとするなら、docker run時に言語設定。

docker run -it -e RUBYOPT=-EUTF-8 centos /bin/bash

さらにきちんとする場合は、Dockerfileでビルドするときにロケール設定をする。

バージョンとか

# cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)

# rpm -qa | grep puppet
puppetlabs-release-pc1-1.0.0-1.el7.noarch
puppet-agent-1.4.1-1.el7.x86_64
5
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kijibato
2018年も6投稿を目標に。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
5
Help us understand the problem. What is going on with this article?