Chef infra 通过Chef将Gem安装到ChefDK中

Chef infra 通过Chef将Gem安装到ChefDK中,chef-infra,chefdk,Chef Infra,Chefdk,我想在的Gem路径中安装一个Gem() 通过Chef自身安装此Gem的最佳方式是什么?有比下面更聪明的解决方案吗 执行“chef gem安装厨房docker”操作 用户“詹金斯” 如果“厨师宝石清单”| grep^厨房码头工|则不适用 终止 一些背景信息:我想在我们的CI服务器上使用Jenkins中的ChefDK来进行食谱测试。当然,CI服务器本身应由Chef配置。运行以下操作: chef gem install kitchen-docker 此安装路径为gen un chefdk路径 致以

我想在的Gem路径中安装一个Gem()

通过Chef自身安装此Gem的最佳方式是什么?有比下面更聪明的解决方案吗

执行“chef gem安装厨房docker”操作
用户“詹金斯”
如果“厨师宝石清单”| grep^厨房码头工|则不适用
终止
一些背景信息:我想在我们的CI服务器上使用Jenkins中的ChefDK来进行食谱测试。当然,CI服务器本身应由Chef配置。

运行以下操作:

chef gem install kitchen-docker
此安装路径为gen un chefdk路径

致以最良好的祝愿

运行以下命令:

chef gem install kitchen-docker
此安装路径为gen un chefdk路径


致以最良好的祝愿

显然,为了在系统范围内安装chef gem(进入
/opt/chefdk/
),可以通过
gem
资源使用
gem
命令的参数
--no user install

gem_套装“厨房码头工”怎么办
gem_binary“/opt/chefdk/embedded/bin/gem”
选项”--无用户安装
终止

这将安装gem,并使所有在系统上运行chefdk的用户都可以使用它。

显然,为了在系统范围内安装chef gem(进入
/opt/chefdk/
),可以通过
gem
包使用
命令的参数
--no user install

gem_套装“厨房码头工”怎么办
gem_binary“/opt/chefdk/embedded/bin/gem”
选项”--无用户安装
终止

这将安装gem,并使系统上所有运行chefdk的用户都可以使用它。

这段代码为我创建了一个资源,允许我执行以下操作
chef_dk_gem“kitchen dokken”

这比我希望的要复杂得多,但由于存在问题,我在将gem导入目标用户时遇到了很多麻烦,并且使用chef dk正确设置了gem*的env变量

操作:安装do
包括食谱“厨师dk”
执行“setup chefdk gem#{gem_name}”do
命令“runuser{gem_user}-c'/opt/chefdk/embedded/bin/gem install{gem_name}”
如果“/opt/chefdk/embedded/bin/gem list#{gem_name}}| grep#{gem_name}”,则不可用:user=>gem_user
终止
终止

这段代码为我创建了一个资源,让我可以这样做
chef_dk_gem“kitchen dokken”

这比我希望的要复杂得多,但由于存在问题,我在将gem导入目标用户时遇到了很多麻烦,并且使用chef dk正确设置了gem*的env变量

操作:安装do
包括食谱“厨师dk”
执行“setup chefdk gem#{gem_name}”do
命令“runuser{gem_user}-c'/opt/chefdk/embedded/bin/gem install{gem_name}”
如果“/opt/chefdk/embedded/bin/gem list#{gem_name}}| grep#{gem_name}”,则不可用:user=>gem_user
终止
终止

我还尝试为
gem\u包
提供程序设置
gem\u二进制
,但我认为这只会将gem安装到
/root/.chefdk/gems
(至少当时的
jenkins
用户无法使用它。我还尝试为
gem\u包
提供程序设置
gem\u二进制
,但我认为这只会将gem安装到
/root/.chefdk/gems
(至少当时的
jenkins
用户无法使用它。谢谢你的回答。这是我的建议。但那不是幂等元,我问是否有更聪明的方法。谢谢你的回答。这是我的建议。但那不是幂等元,我问是否有更聪明的方法。这看起来很不错,但老实说,它对我不起作用。它没有失败,但经过测试后,将它放在根用户gems中。真的吗?我仍然在使用它,它对我的工作方式正是这样。gem然后安装在
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/kitchen-docker-2.3.0
中。我想这将取决于环境变量/gem\u HOME>的方式设置了GEM_系统。我想我正确地使用了eval$(chef shell init bash)对于所有的用户。我会仔细研究一下为什么我不能让你的工作,但你如何在chef运行中使用
chef shell init
?我的意思是……可能有办法,但感觉不太好。这看起来不错,但老实说对我来说不起作用。它没有失败,但经过测试后,将它放在根用户中。真的吗?我仍然在使用它g这对我来说正是这样。然后gem安装在
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/kitchen-docker-2.3.0
中。我想这将取决于环境变量/gem_HOME和gem_系统的设置。我认为我正确地使用了eval$(chef shell init bash)对于所有用户。我会再多翻一翻,看看为什么我不能让您的工作,但如何在chef运行中使用
chef shell init
?我的意思是..可能有办法,但感觉不太好。