22.04LTS にしたら codedeploy-agent が動作しなくなった

Posted on 2022-05-08 in zakki

Ubuntu を 22.04LTS にアップグレードしたことを書いたけど、おそらくこれの余波で以前導入した codedeploy-agent が正常に動かなくなってしまった。

ログを見てみるとこんな風に出ていた。ruby のことはからきしなので細かいところはわからないのだけど内容からwebrick/httputilsが見つからないようなことは分かった。

  • /var/log/aws/codedeploy-agent/codedeploy-agent.log
2022-05-05 02:32:40 INFO  [codedeploy-agent(1383)]: master 1383: Spawned child 1/1
2022-05-05 02:32:40 DEBUG [codedeploy-agent(15881)]: Registering Plugins: ["codedeploy"].
2022-05-05 02:32:40 DEBUG [codedeploy-agent(15881)]: Loading plugin codedeploy from /opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/register_plugin
2022-05-05 02:32:40 ERROR [codedeploy-agent(15881)]: Plugin codedeploy could not be loaded: cannot load such file -- webrick/httputils.
2022-05-05 02:32:40 ERROR [codedeploy-agent(15881)]: booting child: error during start or run: LoadError - cannot load such file -- webrick/httputils - <internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:148:in `require'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:148:in `require'
/opt/codedeploy-agent/vendor/gems/aws-sdk-s3-1.81.0/lib/aws-sdk-s3/legacy_signer.rb:7:in `<top (required)>'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:96:in `require'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:96:in `require'
/opt/codedeploy-agent/vendor/gems/aws-sdk-s3-1.81.0/lib/aws-sdk-s3/customizations.rb:10:in `<top (required)>'
/opt/codedeploy-agent/vendor/gems/aws-sdk-s3-1.81.0/lib/aws-sdk-s3.rb:39:in `require_relative'
/opt/codedeploy-agent/vendor/gems/aws-sdk-s3-1.81.0/lib/aws-sdk-s3.rb:39:in `<top (required)>'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:160:in `require'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:160:in `rescue in require'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:149:in `require'
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/command_executor.rb:4:in `<top (required)>'
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/register_plugin.rb:2:in `require_relative'
/opt/codedeploy-agent/lib/instance_agent/plugins/codedeploy/register_plugin.rb:2:in `<top (required)>'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:148:in `require'
<internal:/usr/lib/ruby/vendor_ruby/rubygems/core_ext/kernel_require.rb>:148:in `require'
/opt/codedeploy-agent/lib/instance_agent/runner/child.rb:17:in `block in load_plugins'
/opt/codedeploy-agent/lib/instance_agent/runner/child.rb:13:in `each'
/opt/codedeploy-agent/lib/instance_agent/runner/child.rb:13:in `load_plugins'
/opt/codedeploy-agent/lib/instance_agent/runner/child.rb:29:in `prepare_run'
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:64:in `block in prepare_run_with_error_handling'
/opt/codedeploy-agent/lib/instance_agent/runner/child.rb:78:in `with_error_handling'
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:63:in `prepare_run_with_error_handling'
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/child.rb:20:in `start'
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:206:in `block in spawn_child'
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:204:in `fork'
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:204:in `spawn_child'
/opt/codedeploy-agent/vendor/gems/process_manager-0.0.13/lib/process_manager/master.rb:283:in `block (2 levels) in replace_terminated_children'
/opt/codedeploy-agent/vendor/gems/logging-1.8.2/lib/logging/diagnostic_context.rb:323:in `block in create_with_logging_context'
2022-05-05 02:32:40 INFO  [codedeploy-agent(1383)]: master 1383: Received CHLD - cleaning dead child process
2022-05-05 02:32:40 INFO  [codedeploy-agent(1383)]: master 1383: been told to replace child 15881
2022-05-05 02:32:40 INFO  [codedeploy-agent(1383)]: master 1383: not enough child processes running - missing at least 1 - respawning

webrick/httputilsを検索してみるとこちらを見つけて、どうもバージョン 3.0 では標準で導入されないようになったみたいだった。そして、22.04LTS ではリリースノートによると ruby 環境がバージョン 3.0 となったようなので、これが根本原因のように思える。codedeploy-agent の対応状況を見てみるとちょうどissuesで話がされていて、自分でパッケージビルドして導入することを除けば現在対応中という状況らしい。

ビルドとなると自分の体力が持ちそうにないので、観念した顔で一旦 codedeploy-agent サービスを停止にした。次思い出したときに確認して対応しているようになっていると嬉しい。


勢いで OS バージョンアップをするとちゃんと何某かに引っ掛かるものなのだなあと思った出来事だった。

ubuntu Codedeploy