jjzjj

linux - 在 chef-solo 部署 bash 脚本中检测主机操作系统发行版

部署chef-solo设置时,您需要在使用sudo或不使用sudo之间切换,例如:bashinstall.sh和sudobashinstall.sh取决于主机服务器上的发行版。如何实现自动化? 最佳答案 ohai已经填充了这些属性并且在您的Recipe中很容易获得例如,"platform":"centos","platform_version":"6.4","platform_family":"rhel",你可以引用这些作为ifnode[:platform_family].include?("rhel")...end要查看ohai设

docker - Docker 和 Chef 的新 Habitat 工具有什么区别?

Chef的新Habitat工具是否可以与Docker一起使用?如果是这样,Habitat试图解决什么问题,或者它只是试图替换Docker工具集中的工具(例如,DockerSwarm、DockerMachine、DockerCompose等)? 最佳答案 这绕过了StackOverflow对开放式问题的政策限制,但我还是会回答:Docker和Habitat并没有真正重叠。竞争的重点是构建发布工件。Docker有Dockerfiles和dockerbuild,Habitat有计划和Studio。两者的输出都可以是Docker镜像,它基本

mongodb - Chef solo 错误: Cookbook apt not found

Hy我正在尝试在AmazonEC2LinuxAMI上使用ChefSolo运行MongoDB配方。我已经安装了Omnibus,在.rb文件中设置了说明书路径,在.json文件中设置了运行列表。我已经将mongodbrecipezip的内容从github复制到了cookbook文件夹,然后运行了chef-solo命令。结果如下:致命:Chef::Exceptions::CookbookNotFound:找不到Recipe。如果您从另一本Recipe加载apt,请确保在元数据中配置依赖项我对Linux也很陌生,我在这里做错了什么? 最佳答案

ruby - 如何按角色查找 Chef 节点ip

我有一个问题。我正在尝试获取一个运行postgresql并且是复制主机的节点IP。所以我可以将IP植入repmgrcookbook,这样它就会自动将其设置到SSH配置文件中。我需要它,因为我没有在端口22上运行SSH,所以我需要使该过程自动化。这是configure.rb文件:templateFile.join(node[:repmgr][:pg_home],'.ssh/config')dosource'ssh_config.erb'mode0644ownernode[:repmgr][:system_user]groupnode[:repmgr][:system_user]varia

ruby - Chef 在错误的文件夹中寻找模板

这是我的设置cookbooks/supervisord/definitions/supervisord_group.erbtemplates/process_group.conf.erbmy_app/recipes/default.rb在cookbooks/supervisord/definitions/supervisord_group.erb我有这个:define:supervisord_group,:programs=>[],:enable=>truedoinclude_recipe"supervisord::install"ifparams[:enable]template"#

ruby - Chef 只运行一次命令

在制作一份ChefRecipe时,我需要在安装驱动器之前对其进行格式化,我是这样做的:execute"Formatdrive"docommand"mkfs.ext4/dev/xvde1"end然后我使用另一个命令将它挂载到/var/log/一切正常,但现在的问题是,当我第二次运行该配方时,mkfs.ext4失败,因为驱动器已安装。它应该会失败:)我的问题是,如何才能仅在第一次而不是之后每次都在节点上运行此mkfs.ext4命令?或者当这个特定命令失败时我如何强制Chef不停止(虽然不是优雅的解决方案)或者是否有另一个用于专门格式化驱动器的ruby​​命令?(远景)我找到的一个解决方法是

ruby - Chef Recipe 的 Linux 服务状态

如何从ChefRecipe中检查Linux服务的状态?这是我的场景:我只想在服务未运行时执行一系列步骤。我想将服务的状态存储在一个变量中(如果可能的话),这样我就可以检查变量的值并相应地进行。编辑:详细说明我要完成的任务。我必须将我的应用程序安装为来自Chef的Linux服务。但是,在我安装该服务之前,我想检查该服务是否已经在机器上运行。在Linux终端中,我会使用命令servicemyservicestatus.如果服务没有安装,命令会返回myservice:unrecognizedservice如果安装并运行,会返回run.sh(pid10777)isrunning...我想在继续

ruby - chef 10.28.0和ohai 8.0.1不同ruby版本要求如何处理

我正在尝试使用Chef10.28.0在rackspace上构建服务器,构建的配置与我之前构建的3次完全相同,没有任何更改。唯一不同的是上次运行时chef安装的是ohai7.4.0,这次安装的是ohai8.0.1。问题是chef10.28.0安装了ruby​​1.9.3,而ohai8.0.1需要ruby​​2.0.0或更高版本。通过谷歌搜索,我发现chef10支持ruby​​2.0,但默认安装ruby​​1.9。有没有办法让Chef10安装ruby​​2.0?除此之外,是否有任何方法可以让Chef10安装ohai7.4而不是8.0?提前致谢。 最佳答案

ruby /Chef : is there a way to refer to the resource 'name' and pass to a function?

请查看以下代码,使用Chef中的log资源。log'Hellothere'dolevel:infonotifies:run,"log_to_chat('Hellothere')"end当我将它传递给函数log_to_chat时,有没有办法引用资源name(在本例中:'Hellothere')。我想是这样的:log'Hellothere'dolevel:infonotifies:run,"log_to_chat(#{name})"end添加我对log_to_chat的尝试。尝试1:resource_name:log_to_chatproperty:message,kind_of:Stri

ruby - 从 Chef Recipe 中引用属性

我有一个名为default.rb的属性文件,其中有一个键default['current']以字符串格式存储目录。我想在更改目录时将其用于以下命令:#Rundatabasemigrationsexecute'databasemigrations'douser'ubuntu'cwd"#{default['current']}"command'sudophpartisandown&&sudophpartisanmigrate--force&&sudophpartisanup'end相反,当我运行Recipe时,出现了以下错误。NameError---------Noresource,met