通常,人们想要将 Bash 脚本转换为 Chef。但有时(比如,现在)你需要做相反的事情。是否有一种自动方法来获取在给定配置上为给定 Chef 食谱运行的命令列表?
我并不想最终得到具有厨师食谱全部功能的东西。我想以一小组命令结束,这些命令可以在此特定环境中重现此特定安装。(在这种情况下,原因是我需要分离出 'sudo' 命令并让它们由其他人运行。我确实在可以运行 Chef 以执行此任务的机器上具有 sudo 访问权限。)
通常,人们想要将 Bash 脚本转换为 Chef。但有时(比如,现在)你需要做相反的事情。是否有一种自动方法来获取在给定配置上为给定 Chef 食谱运行的命令列表?
我并不想最终得到具有厨师食谱全部功能的东西。我想以一小组命令结束,这些命令可以在此特定环境中重现此特定安装。(在这种情况下,原因是我需要分离出 'sudo' 命令并让它们由其他人运行。我确实在可以运行 Chef 以执行此任务的机器上具有 sudo 访问权限。)
我怀疑你是否能做到这一点,即使你能做到,也可能比在 Chef 中实现你需要的工作更多。
例如,即使是像创建配置文件这样简单的事情也在 Chef 中作为 ruby 代码实现;你需要想办法把它变成echo "…" > /etc/whatever.com
. 为所有资源这样做将是一项重大任务。
在我看来,您实际上应该做的是修改您用来以不同用户身份运行命令的任何 Chef 食谱。
类似template
和file
的事情非常简单:文件将以 root 身份创建,然后chown
-ed 给正确的用户。只需指定用户execute
即可将资源(运行命令)配置为运行命令:su
execute "something" do
command "whoami"
user "nobody"
end
您可能需要一些时间才能弄清楚,但是一旦掌握了窍门,就很容易了;比转换为 bash 容易得多。