我们正在运行 puppet 来管理我们的 AWS 实例,并从自定义模块迁移apt
到 puppetlabs 托管apt
模块。一切似乎都运行正常,直到会话期间puppet apply
,只要我们允许,puppet 进程就会挂在 %100 上。
我相信我已经将其缩小到在等待 apt 模块中的某些“响应”时挂起的 puppet,但我无法进一步弄清楚。我看到了一些相关的错误和问题(例如这里http://projects.puppetlabs.com/issues/12185#note-27),但我找不到好的答案。任何帮助都将不胜感激。
我们在 ubuntu 10.10 上运行 puppet 2.7.20。Puppet apt 模块版本是 1.1.0。
根据要求,以下是挂起前的最后几行调试信息:
debug: /Stage[main]/Kpython/Kpython::Pip_install[simplejson]/Exec[kpython_pip_install simplejson]: Autorequiring File[/mnt/tmp]
debug: /Stage[puppet1]/Kbase::Users/Kbase::Users::Account[tfall]/File[/home/tfall/.ssh]: Autorequiring Group[users]
debug: /Stage[puppet1]/Kbase::Users/Kbase::Users::Account[tfall]/File[/home/tfall/.ssh]: Autorequiring User[tfall]
debug: /Stage[puppet1]/Kbase::Filesystem/File[/usr/local/krux/kbase]: Autorequiring File[/usr/local/krux]
debug: /Stage[main]/Kvagrant/Kruby::Setup_gemset[kvagrant]/Kruby::Wrapper[kvagrant-irb]/Kutil::Symlink_bin[kvagrant-irb]/File[/usr/local/bin/kvagrant-irb]: Autorequiring File[/usr/local/bin]
debug: /Stage[main]/Kvagrant/Kruby::Setup_gemset[kvagrant]/Kruby::Wrapper[kvagrant-irb]/Kutil::Symlink_bin[kvagrant-irb]/File[/usr/local/bin/kvagrant-irb]: Autorequiring File[/usr/local/krux/components/kruby/bin/kvagrant-irb]
debug: /Stage[main]/Kpython/Kpython::Pip_install[boto]/Exec[kpython_pip_install boto]: Autorequiring File[/mnt/tmp]
debug: /Stage[script1]/Kbase::Users::Finalize/Kbase::Users::Init_user[dbrans]/File[/home/dbrans/.ssh/known_hosts]: Autorequiring User[dbrans]
debug: /Stage[puppet1]/Kbase::Users/Kbase::Users::Account[vsvaidya]/File[/home/vsvaidya]: Autorequiring Group[users]
debug: /Stage[main]/Kvagrant/File[/usr/local/krux/components/kvagrant]: Autorequiring File[/usr/local/krux/components]
debug: /Stage[main]/Kvagrant/File[/usr/local/krux/components/kvagrant]: Autorequiring Group[vagrant]
debug: /Stage[main]/Kvagrant/File[/usr/local/krux/components/kvagrant]: Autorequiring User[vagrant]
这个puppet运行级别中的下一步应该与apt模块相关。
这是 strace 的输出(使用 ruby 1.8.7 和 ruby 1.9.1):
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
答案1
你运行的是哪种 Ruby?感觉就像这个问题,它说这是 FreeBSD,但结果却是 ruby 问题。