使用 Chef-client 和食谱获得 'ArgumentError'
Get 'ArgumentError' with Chef-client and recipe
我正在尝试 运行 与厨师客户一起遵循厨师食谱,我的食谱是:
require 'chef/provisioning/docker_driver'
machine 'wario' do
recipe 'openssh::default'
machine_options :docker_options => {
:base_image => {
:name => 'ubuntu',
:repository => 'ubuntu',
:tag => '14.04'
},
:command => '/usr/sbin/sshd -p 8022 -D'
}
但是当执行那个食谱(和任何一个)时得到这个:
[2016-01-25T09:22:03-05:00] WARN: No config file found or specified on command line, using command line options.
[2016-01-25T09:22:03-05:00] WARN: No cookbooks directory found at or above current directory. Assuming /home/rizotas/Documents/safari.
Starting Chef Client, version 12.6.0
resolving cookbooks for run list: []
Synchronizing Cookbooks:
Compiling Cookbooks...
[2016-01-25T09:22:05-05:00] WARN: Node myHost has an empty run list.
Converging 1 resources
Recipe: @recipe_files::/home/rizotas/Documents/safari/ssh.rb
* machine[wario] action converge
- update node wario at chefzero://localhost:8889
- update normal.chef_provisioning.reference.allocated_at from "2016-01-25 14:18:49 UTC" to "2016-01-25 14:22:05 UTC"
- add normal.chef_provisioning.reference.docker_options.base_image = {:name=>"ubuntu", :repository=>"ubuntu", :tag=>"14.04"}
- add normal.chef_provisioning.reference.docker_options.command = "/usr/sbin/sshd -p 8022 -D"
- remove normal.chef_provisioning.reference.docker_options.base_image
- remove normal.chef_provisioning.reference.docker_options.command
- update run_list from ["recipe[openssh::default]"] to ["recipe[openssh::default]", "recipe[openssh::default]"]
- update node wario at chefzero://localhost:8889
- add normal.chef_provisioning.reference.docker_options.base_image = {:name=>"ubuntu", :repository=>"ubuntu", :tag=>"14.04"}
- add normal.chef_provisioning.reference.docker_options.command = "/usr/sbin/sshd -p 8022 -D"
- remove normal.chef_provisioning.reference.docker_options.base_image
- remove normal.chef_provisioning.reference.docker_options.command
- update run_list from ["recipe[openssh::default]"] to ["recipe[openssh::default]", "recipe[openssh::default]"]
- update node wario at chefzero://localhost:8889
- add normal.chef_provisioning.reference.docker_options.base_image = {:name=>"ubuntu", :repository=>"ubuntu", :tag=>"14.04"}
- add normal.chef_provisioning.reference.docker_options.command = "/usr/sbin/sshd -p 8022 -D"
- remove normal.chef_provisioning.reference.docker_options.base_image
- remove normal.chef_provisioning.reference.docker_options.command
- update run_list from ["recipe[openssh::default]"] to ["recipe[openssh::default]", "recipe[openssh::default]"]
================================================================================
Error executing action `converge` on resource 'machine[wario]'
================================================================================
ArgumentError
-------------
invalid byte sequence in UTF-8
Resource Declaration:
---------------------
# In /home/rizotas/Documents/safari/ssh.rb
2: machine 'wario' do
3: recipe 'openssh::default'
4: machine_options :docker_options => {
5: :base_image => {
6: :name => 'ubuntu',
7: :repository => 'ubuntu',
8: :tag => '14.04'
9: },
10: :command => '/usr/sbin/sshd -p 8022 -D'
11: }
12: end
Compiled Resource:
------------------
# Declared in /home/rizotas/Documents/safari/ssh.rb:2:in `from_file'
machine("wario") do
action [:converge]
retries 0
retry_delay 2
default_guard_interpreter :default
chef_server {:chef_server_url=>"chefzero://localhost:8889", :options=>{:client_name=>"myHost", :signing_key_filename=>nil, :api_version=>"0"}}
driver "docker"
machine_options {:docker_options=>{:base_image=>{:name=>"ubuntu", :repository=>"ubuntu", :tag=>"14.04"}, :command=>"/usr/sbin/sshd -p 8022 -D"}}
declared_type :machine
cookbook_name "@recipe_files"
recipe_name "/home/rizotas/Documents/safari/ssh.rb"
run_list_modifiers [#<Chef::RunList::RunListItem:0x007f087ca79528 @version=nil, @type=:recipe, @name="openssh::default">]
end
Running handlers:
[2016-01-25T09:22:07-05:00] ERROR: Running exception handlers
Running handlers complete
[2016-01-25T09:22:07-05:00] ERROR: Exception handlers complete
Chef Client failed. 0 resources updated in 04 seconds
[2016-01-25T09:22:07-05:00] FATAL: Stacktrace dumped to /home/rizotas/.chef/local-mode-cache/cache/chef-stacktrace.out
[2016-01-25T09:22:07-05:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
[2016-01-25T09:22:07-05:00] ERROR: machine[wario] (@recipe_files::/home/rizotas/Documents/safari/ssh.rb line 2) had an error: ArgumentError: invalid byte sequence in UTF-8
[2016-01-25T09:22:07-05:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
我不知道为什么 ArgumentError
。
Ruby 语法没问题。
Ruby 版本 1.8.7
主厨版本 12.5.1
我该如何解决?
谢谢:)
更新:
1:
我试过 Ruby 1.9、Ruby 2.1.7 和 Ruby 2.0.0
2:
chef-stacktrace.out
文件:
Generated at 2016-01-25 11:43:14 -0500
ArgumentError: machine[wario] (@recipe_files::/home/rizotas/Documents/safari/creating-containers/create-containers.rb line 4) had an error: ArgumentError: invalid byte sequence in UTF-8
/usr/local/lib/ruby/gems/2.0.0/gems/sys-proctable-1.0.0-universal-linux/lib/linux/sys/proctable.rb:137:in `split'
/usr/local/lib/ruby/gems/2.0.0/gems/sys-proctable-1.0.0-universal-linux/lib/linux/sys/proctable.rb:137:in `block in ps'
/usr/local/lib/ruby/gems/2.0.0/gems/sys-proctable-1.0.0-universal-linux/lib/linux/sys/proctable.rb:114:in `foreach'
/usr/local/lib/ruby/gems/2.0.0/gems/sys-proctable-1.0.0-universal-linux/lib/linux/sys/proctable.rb:114:in `ps'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-docker-0.7/lib/chef/provisioning/docker_driver/docker_transport.rb:230:in `using_boot2docker?'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-docker-0.7/lib/chef/provisioning/docker_driver/docker_transport.rb:193:in `make_url_available_to_remote'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-1.5.1/lib/chef/provisioning/machine/basic_machine.rb:75:in `make_url_available_to_remote'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-1.5.1/lib/chef/provisioning/convergence_strategy/precreate_chef_objects.rb:32:in `setup_convergence'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-1.5.1/lib/chef/provisioning/convergence_strategy/install_cached.rb:47:in `setup_convergence'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-1.5.1/lib/chef/provisioning/machine/basic_machine.rb:17:in `setup_convergence'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-1.5.1/lib/chef/provider/machine.rb:58:in `block in <class:Machine>'
(eval):2:in `block in action_converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/provider.rb:360:in `instance_eval'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/provider.rb:360:in `compile_and_converge_action'
(eval):2:in `action_converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/provider.rb:144:in `run_action'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource.rb:596:in `run_action'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/runner.rb:74:in `run_action'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/runner.rb:106:in `block (2 levels) in converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/runner.rb:106:in `each'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/runner.rb:106:in `block in converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/resource_list.rb:83:in `block in execute_each_resource'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/stepable_iterator.rb:116:in `call'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/stepable_iterator.rb:116:in `call_iterator_block'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/stepable_iterator.rb:85:in `step'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/stepable_iterator.rb:104:in `iterate'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/stepable_iterator.rb:55:in `each_with_index'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/resource_list.rb:81:in `execute_each_resource'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/runner.rb:105:in `converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/client.rb:658:in `block in converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/client.rb:653:in `catch'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/client.rb:653:in `converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/client.rb:692:in `converge_and_save'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/client.rb:271:in `run'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application.rb:261:in `block in fork_chef_client'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application.rb:249:in `fork'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application.rb:249:in `fork_chef_client'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application.rb:215:in `block in run_chef_client'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/local_mode.rb:44:in `with_server_connectivity'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application.rb:203:in `run_chef_client'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application/client.rb:413:in `block in interval_run_chef_client'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application/client.rb:403:in `loop'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application/client.rb:403:in `interval_run_chef_client'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application/client.rb:393:in `run_application'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application.rb:58:in `run'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/bin/chef-client:26:in `<top (required)>'
/usr/local/bin/chef-client:23:in `load'
/usr/local/bin/chef-client:23:in `<main>'
Chef 12.5.1
requires Ruby 2 or higher.
Ruby 1.8.7 reached EOL long ago.
尝试升级您的 Ruby 版本。
阅读您的 chef-stacktrace.out
输出后更新:
The following code from sys-proctable
gem 好像是问题所在:
IO.read("/proc/#{file}/environ").split("[=10=]").each{ |str|
key, value = str.split('=')
struct.environ[key] = value
}
某些进程在其环境中包含无效的 UTF-8 字符。
这里有一个相关问题:djberg96/sys-proctable#19. In that case it was related to the dovecot/imap
process environ
file filled with 0xab
chars。也许您在使用 Dovecot 或其他行为类似的进程时遇到了同样的问题。
他们修复了设置默认外部编码的问题:
Encoding.default_external = Encoding::ASCII_8BIT
我建议您尝试停止此进程,或者尽可能修复其环境。
基于,您可以使用ag
搜索environ
个文件:
# ag "[\x80-\xFF]" /proc/*/environ
另一种可能的方法是 open an issue in the sys-proctable
gem。
我 double-checked 你的 UTF-8 字符输出并找到 none。因此,正如评论中所说并给出堆栈跟踪,您的 ssh.rb 中有一些 UTF-8 字符(在您的 chef 存储库中 - home/rizotas/Documents/safari/ssh.rb
)。那是你写的文件吗b/c 听起来像是通常包含在 Chef 中的文件之一?
我不完全确定它与您的 ruby 版本有关,但我猜可能是。问题是,Chef 现在与独立 ruby 捆绑在一起,所以我怀疑是这样。
我会尝试的事情,排名不分先后:
- 更新 ruby 只是 b/c 使用 RVM 之类的东西很容易,就像@zuazo 说的那样,1.8 是 EOL
运行 ag
(银色搜索器)在 ssh.rb 上以确保其中没有 UTF-8 字符 https://github.com/ggreer/the_silver_searcher
ag "[\x80-\xFF]" ssh.rb
- 在线仔细检查 OpenSSH 说明书中的错误,以确保这不是已知问题。
您应该为您的工作站使用 ChefDK 安装程序。对于一般用途,我们不再支持通过 gems 安装(阅读:它可以工作并将继续工作,但您需要正确设置您的环境)。
我正在尝试 运行 与厨师客户一起遵循厨师食谱,我的食谱是:
require 'chef/provisioning/docker_driver'
machine 'wario' do
recipe 'openssh::default'
machine_options :docker_options => {
:base_image => {
:name => 'ubuntu',
:repository => 'ubuntu',
:tag => '14.04'
},
:command => '/usr/sbin/sshd -p 8022 -D'
}
但是当执行那个食谱(和任何一个)时得到这个:
[2016-01-25T09:22:03-05:00] WARN: No config file found or specified on command line, using command line options.
[2016-01-25T09:22:03-05:00] WARN: No cookbooks directory found at or above current directory. Assuming /home/rizotas/Documents/safari.
Starting Chef Client, version 12.6.0
resolving cookbooks for run list: []
Synchronizing Cookbooks:
Compiling Cookbooks...
[2016-01-25T09:22:05-05:00] WARN: Node myHost has an empty run list.
Converging 1 resources
Recipe: @recipe_files::/home/rizotas/Documents/safari/ssh.rb
* machine[wario] action converge
- update node wario at chefzero://localhost:8889
- update normal.chef_provisioning.reference.allocated_at from "2016-01-25 14:18:49 UTC" to "2016-01-25 14:22:05 UTC"
- add normal.chef_provisioning.reference.docker_options.base_image = {:name=>"ubuntu", :repository=>"ubuntu", :tag=>"14.04"}
- add normal.chef_provisioning.reference.docker_options.command = "/usr/sbin/sshd -p 8022 -D"
- remove normal.chef_provisioning.reference.docker_options.base_image
- remove normal.chef_provisioning.reference.docker_options.command
- update run_list from ["recipe[openssh::default]"] to ["recipe[openssh::default]", "recipe[openssh::default]"]
- update node wario at chefzero://localhost:8889
- add normal.chef_provisioning.reference.docker_options.base_image = {:name=>"ubuntu", :repository=>"ubuntu", :tag=>"14.04"}
- add normal.chef_provisioning.reference.docker_options.command = "/usr/sbin/sshd -p 8022 -D"
- remove normal.chef_provisioning.reference.docker_options.base_image
- remove normal.chef_provisioning.reference.docker_options.command
- update run_list from ["recipe[openssh::default]"] to ["recipe[openssh::default]", "recipe[openssh::default]"]
- update node wario at chefzero://localhost:8889
- add normal.chef_provisioning.reference.docker_options.base_image = {:name=>"ubuntu", :repository=>"ubuntu", :tag=>"14.04"}
- add normal.chef_provisioning.reference.docker_options.command = "/usr/sbin/sshd -p 8022 -D"
- remove normal.chef_provisioning.reference.docker_options.base_image
- remove normal.chef_provisioning.reference.docker_options.command
- update run_list from ["recipe[openssh::default]"] to ["recipe[openssh::default]", "recipe[openssh::default]"]
================================================================================
Error executing action `converge` on resource 'machine[wario]'
================================================================================
ArgumentError
-------------
invalid byte sequence in UTF-8
Resource Declaration:
---------------------
# In /home/rizotas/Documents/safari/ssh.rb
2: machine 'wario' do
3: recipe 'openssh::default'
4: machine_options :docker_options => {
5: :base_image => {
6: :name => 'ubuntu',
7: :repository => 'ubuntu',
8: :tag => '14.04'
9: },
10: :command => '/usr/sbin/sshd -p 8022 -D'
11: }
12: end
Compiled Resource:
------------------
# Declared in /home/rizotas/Documents/safari/ssh.rb:2:in `from_file'
machine("wario") do
action [:converge]
retries 0
retry_delay 2
default_guard_interpreter :default
chef_server {:chef_server_url=>"chefzero://localhost:8889", :options=>{:client_name=>"myHost", :signing_key_filename=>nil, :api_version=>"0"}}
driver "docker"
machine_options {:docker_options=>{:base_image=>{:name=>"ubuntu", :repository=>"ubuntu", :tag=>"14.04"}, :command=>"/usr/sbin/sshd -p 8022 -D"}}
declared_type :machine
cookbook_name "@recipe_files"
recipe_name "/home/rizotas/Documents/safari/ssh.rb"
run_list_modifiers [#<Chef::RunList::RunListItem:0x007f087ca79528 @version=nil, @type=:recipe, @name="openssh::default">]
end
Running handlers:
[2016-01-25T09:22:07-05:00] ERROR: Running exception handlers
Running handlers complete
[2016-01-25T09:22:07-05:00] ERROR: Exception handlers complete
Chef Client failed. 0 resources updated in 04 seconds
[2016-01-25T09:22:07-05:00] FATAL: Stacktrace dumped to /home/rizotas/.chef/local-mode-cache/cache/chef-stacktrace.out
[2016-01-25T09:22:07-05:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
[2016-01-25T09:22:07-05:00] ERROR: machine[wario] (@recipe_files::/home/rizotas/Documents/safari/ssh.rb line 2) had an error: ArgumentError: invalid byte sequence in UTF-8
[2016-01-25T09:22:07-05:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
我不知道为什么 ArgumentError
。
Ruby 语法没问题。
Ruby 版本 1.8.7
主厨版本 12.5.1
我该如何解决?
谢谢:)
更新:
1:
我试过 Ruby 1.9、Ruby 2.1.7 和 Ruby 2.0.0
2:
chef-stacktrace.out
文件:
Generated at 2016-01-25 11:43:14 -0500
ArgumentError: machine[wario] (@recipe_files::/home/rizotas/Documents/safari/creating-containers/create-containers.rb line 4) had an error: ArgumentError: invalid byte sequence in UTF-8
/usr/local/lib/ruby/gems/2.0.0/gems/sys-proctable-1.0.0-universal-linux/lib/linux/sys/proctable.rb:137:in `split'
/usr/local/lib/ruby/gems/2.0.0/gems/sys-proctable-1.0.0-universal-linux/lib/linux/sys/proctable.rb:137:in `block in ps'
/usr/local/lib/ruby/gems/2.0.0/gems/sys-proctable-1.0.0-universal-linux/lib/linux/sys/proctable.rb:114:in `foreach'
/usr/local/lib/ruby/gems/2.0.0/gems/sys-proctable-1.0.0-universal-linux/lib/linux/sys/proctable.rb:114:in `ps'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-docker-0.7/lib/chef/provisioning/docker_driver/docker_transport.rb:230:in `using_boot2docker?'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-docker-0.7/lib/chef/provisioning/docker_driver/docker_transport.rb:193:in `make_url_available_to_remote'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-1.5.1/lib/chef/provisioning/machine/basic_machine.rb:75:in `make_url_available_to_remote'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-1.5.1/lib/chef/provisioning/convergence_strategy/precreate_chef_objects.rb:32:in `setup_convergence'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-1.5.1/lib/chef/provisioning/convergence_strategy/install_cached.rb:47:in `setup_convergence'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-1.5.1/lib/chef/provisioning/machine/basic_machine.rb:17:in `setup_convergence'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-provisioning-1.5.1/lib/chef/provider/machine.rb:58:in `block in <class:Machine>'
(eval):2:in `block in action_converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/provider.rb:360:in `instance_eval'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/provider.rb:360:in `compile_and_converge_action'
(eval):2:in `action_converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/provider.rb:144:in `run_action'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource.rb:596:in `run_action'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/runner.rb:74:in `run_action'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/runner.rb:106:in `block (2 levels) in converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/runner.rb:106:in `each'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/runner.rb:106:in `block in converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/resource_list.rb:83:in `block in execute_each_resource'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/stepable_iterator.rb:116:in `call'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/stepable_iterator.rb:116:in `call_iterator_block'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/stepable_iterator.rb:85:in `step'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/stepable_iterator.rb:104:in `iterate'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/stepable_iterator.rb:55:in `each_with_index'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/resource_collection/resource_list.rb:81:in `execute_each_resource'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/runner.rb:105:in `converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/client.rb:658:in `block in converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/client.rb:653:in `catch'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/client.rb:653:in `converge'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/client.rb:692:in `converge_and_save'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/client.rb:271:in `run'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application.rb:261:in `block in fork_chef_client'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application.rb:249:in `fork'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application.rb:249:in `fork_chef_client'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application.rb:215:in `block in run_chef_client'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/local_mode.rb:44:in `with_server_connectivity'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application.rb:203:in `run_chef_client'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application/client.rb:413:in `block in interval_run_chef_client'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application/client.rb:403:in `loop'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application/client.rb:403:in `interval_run_chef_client'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application/client.rb:393:in `run_application'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/lib/chef/application.rb:58:in `run'
/usr/local/lib/ruby/gems/2.0.0/gems/chef-12.6.0/bin/chef-client:26:in `<top (required)>'
/usr/local/bin/chef-client:23:in `load'
/usr/local/bin/chef-client:23:in `<main>'
Chef 12.5.1
requires Ruby 2 or higher.
Ruby 1.8.7 reached EOL long ago.
尝试升级您的 Ruby 版本。
阅读您的 chef-stacktrace.out
输出后更新:
The following code from sys-proctable
gem 好像是问题所在:
IO.read("/proc/#{file}/environ").split("[=10=]").each{ |str|
key, value = str.split('=')
struct.environ[key] = value
}
某些进程在其环境中包含无效的 UTF-8 字符。
这里有一个相关问题:djberg96/sys-proctable#19. In that case it was related to the dovecot/imap
process environ
file filled with 0xab
chars。也许您在使用 Dovecot 或其他行为类似的进程时遇到了同样的问题。
他们修复了设置默认外部编码的问题:
Encoding.default_external = Encoding::ASCII_8BIT
我建议您尝试停止此进程,或者尽可能修复其环境。
基于ag
搜索environ
个文件:
# ag "[\x80-\xFF]" /proc/*/environ
另一种可能的方法是 open an issue in the sys-proctable
gem。
我 double-checked 你的 UTF-8 字符输出并找到 none。因此,正如评论中所说并给出堆栈跟踪,您的 ssh.rb 中有一些 UTF-8 字符(在您的 chef 存储库中 - home/rizotas/Documents/safari/ssh.rb
)。那是你写的文件吗b/c 听起来像是通常包含在 Chef 中的文件之一?
我不完全确定它与您的 ruby 版本有关,但我猜可能是。问题是,Chef 现在与独立 ruby 捆绑在一起,所以我怀疑是这样。
我会尝试的事情,排名不分先后:
- 更新 ruby 只是 b/c 使用 RVM 之类的东西很容易,就像@zuazo 说的那样,1.8 是 EOL
运行
ag
(银色搜索器)在 ssh.rb 上以确保其中没有 UTF-8 字符 https://github.com/ggreer/the_silver_searcherag "[\x80-\xFF]" ssh.rb
- 在线仔细检查 OpenSSH 说明书中的错误,以确保这不是已知问题。
您应该为您的工作站使用 ChefDK 安装程序。对于一般用途,我们不再支持通过 gems 安装(阅读:它可以工作并将继续工作,但您需要正确设置您的环境)。