我试着用chef和Vagrant创建开发环境当我运行vagrant provision时,我一直在rbenv中安装rubies版本。我使用gem图书管理员下载烹饪书,这是我当前的文件:
这是我的repo,它存储Cheffile和vagrant文件:Createsite cookbook/rbenv/recipes/install.rb
include_recipe "rbenv::default"
include_recipe "rbenv::ruby_build"
rbenv_ruby "
我正在使用Vagrant(1.0.5)和chef solo(10.12.0)开发ssl提供商
我在一本名为gtm_cq的烹饪书中有一个名为ssl的提供者,我在烹饪书的默认配方中定义它:
gtm_cq_ssl "author" do
# attributes will come later
end
然后,我的cookbook_文件如下所示,当ssl提供商将证书推送到服务器时,该文件应通知其导入操作:
cookbook_file "#{node[:cq][:ssl][:author_c
在哪里可以找到已部署的cookbook版本?
自动属性似乎不侦听版本
有没有办法访问食谱或模板中某个地方的烹饪书版本?您必须访问厨师长知道的烹饪书集合
run_context.cookbook_collection[cookbook_name].metadata.version
跟踪厨师跑步的上下文的
cookbook_collection方法返回Chef在本地缓存中拥有的所有cookbook的名称
cookbook_name方法返回“this”cookbook的名称,因此它在集合中查找coo
我有一个配方,需要很长时间才能执行(2小时),我得到了这个错误
错误:Mixlib::ShellOut::ShellCommandFailed:windows\u批处理
如您所见,它位于windows计算机上
是否需要在某个地方增加超时计时器?如果您签出,您可以看到(查找“WAIT\u TIMEOUT”),当shell命令接收超时时,chef抛出显式CommandTimeout异常。因此,您肯定收到了其他一些错误
有没有一种简单的方法可以像引导节点一样引导Chef工作站
比使用正确的名称和权限将ssh密钥复制到正确的目录、运行刀子配置等要方便得多。chef工作站也是chef节点,在引导上没有区别
唯一的区别是:
chef workstation客户端具有管理员权限,您可以通过刀子或chef服务器UI授予它
~/.chef/knife.rb你可以写一份食谱来做这件事
仅在理论上。Chef normal bootstrap没有复制webui.pem,没有将Chef节点正确配置为工作站,至少在上次我修补它时,
是否有一个工具可用于打包来自完整chef repo的已解析资源集?类似于Berkshellf的包命令,但可以确定依赖项(例如数据包、环境、角色)并包含它们
背景
我有一个厨师回购,其中包括数据包、环境和角色。repo被上传到chef服务器,然后由chef客户端在不同的环境中使用。然而,在某些情况下,主厨索洛更适合做主人。在本例中,我想将repo的组件组织成可分发的功能包,这些功能包可以交付给主机并用于本地chef solo运行。当使用运行列表中的角色运行chef客户端时,cookbooks会在本
我正在尝试复制一个zip文件,我想在remote_file或cookbook_file资源的source属性中给出它的路径。但当我给出路径时,它给出了一个错误
IPADDR:PORT/xyz/abc/a.txt不是远程_文件的有效源参数。源必须是绝对URI或URI数组。
我想知道有没有一种方法可以提供用户名和密码以及源代码???
我通过将文件保存在apache的根文件夹/var/www/中,然后使用https协议实现了这一点
但我希望在任何位置都有文件时实现这一点。要使用chef resourc
我有现有的服务器(不是由chef引导的),我想删除所有这些服务器上的一些文件。我不想使用shell脚本,而是使用chef。我应该在每台服务器上安装chef客户端吗
这与资源调配无关。更像是您加入一家公司,查看现有服务器,并希望在chef中注册这些服务器,以便您可以执行日常维护,如启动和停止服务、清理空间。是的,您可以使用刀引导安装chef客户端,并将其连接到chef服务器(如果您已经有一台),如果您不想使用厨师服务,也可以使用knife solo。Chef只做它的食谱告诉它的事,你能用多少就用多
我在OpsWorks上有一个简单的静态站点层,它的依赖项列在bower.json文件中。然而,当我在部署配方中运行bower安装--allow root时,我得到了enoint No bower.json present。如何在chef脚本中找到项目的正确路径,以便安装bower模块?OpsWorks为您提供了包含应用程序目录的部署JSON。有关此有效负载的更多信息,请查看
假设您的bower.json位于项目的根目录中,您可以在Chef recipe中添加以下命令:
node[:deploy]
我想在我的linux机器上以测试用户的身份运行chef客户端。为此,我在client.rb文件中添加了缓存路径,该文件来自/etc/chef/client.rb
cache_path "~/.chef/cache"
然后我从测试用户(非root用户)运行chef-client命令
Chef encountered an error attempting to create the client
如何设置缓存路径?是否需要在测试用户下移动client.rb、chef-validator.pe
我想知道chef工作站的日志确切位置。我试图引导一个节点,它只给出以下消息
/usr/bin/knife bootstrap y.y.y.y-x root-p*****-N i-77378d_79-c/opt/cloudone/1/CHEF/1/knife.rb
y.y.y.y上的自助厨师
没有提到或指出任何错误和堆栈跟踪
请帮忙
谢谢,刀不会写入日志文件。为详细输出添加-l debug。此外,“bootstrap”命令通过ssh在远程计算机上执行。
我是一名开发运营工程师,有厨师工作经验。
我的工作环境是Ubuntu,我知道在Ubuntu中设置Chef服务器、工作站和客户端的步骤。
我还为ubuntu和centos服务器开发了很多食谱
现在我想移动Mac环境,我知道这个Mac操作系统可以使用这些命令。
但我得到了一些建议Ubuntu在最好的环境下和Chef一起玩,而不是在Mac上
是这样吗?有没有人能给我们建议一下,对于像Ubuntu或Mac这样的厨师流程,哪一个是最好的
提前感谢
Ganesan.AMacOS作为工作站完全没有问题。Che
我是码头工人和厨师的新手。我在docker容器中有一个chef服务器,并设法从那里引导AWS机器。当我在AWS节点上调用chef client时,它尝试连接到容器ID(3442f619df6f),而不是承载docker映像的AWS计算机,但失败:
Error Syncing Cookbooks:
================================================================================
Networking Error:
-
在中,有一个supports键,可以让您告诉chef cookbook与哪些操作系统/版本兼容
操作系统/平台的有效值是什么?我倾向于把我在网上找到的各种例子中的信息拼凑在一起。例如,我发现了一个非常详尽的列表,但我想知道这些值是如何推导出来的:
supports 'amazon'
supports 'centos'
supports 'debian'
supports 'fedora'
supports 'freebsd'
supports 'mac_os_x'
supports 'oracl
是否可以从chef模板中调用库函数?
我知道我们可以将其作为变量传递,但我的要求是迭代模板文件中的列表,以便为每个列表元素调用函数
/库/default.rb
module Common
module Helper
def test_fun(receiver)
if receiver['bla_bla']
return <something meaningful>
end
<% Chef::Resou
这两者有什么区别
it { should be_owned_by 'cool_user' }
vs
its('owner') { should eq 'cool_user' }
it { should be_grouped_into 'cool_group' }
vs
its('group') { should eq 'cool_group' }
没有区别,只有两种书写方式。另一个也一样。没有区别,只有两种书写方法。另一个类似。Inspec同时支持这两种功能
尽管这种风格看起来更像是一种写作
我有一个chef客户端(在windows中),它已经指向一个chef服务器。现在我们有了一个新的chef服务器。在不干扰当前设置的情况下,如何使chef客户端同时指向两个chef服务器
让一个chef客户端监听多个服务器是否是一种好的做法 你不能简单地这么做。如果你在厨师服务台之间切换,你很可能会陷入一片混乱
要迁移到新的Chef服务器,只需在Chef客户端配置中包含一些更改URL的cookbook。确保导入所有客户端,以便它们能够进行身份验证。您不能简单地执行此操作。如果你在厨师服务台之间切换
我甚至找不到提供商的任何官方文档。
chef如何决定将哪个提供者用于特定操作(例如,启用服务的操作)?
默认值是多少?
如何检查或更改它?该提供程序不是为特定操作选择的,而是为整个资源选择的
当您编写自己的定制资源时,有一些特定的规则,我认为它也适用于chef提供的资源,而不仅仅是定制资源。此外,如果需要,还可以覆盖提供程序
此外,在大多数情况下,您可以调用特定的提供者而不是通用提供者,例如,apt_-package而不是package。同样的事情也适用于服务或任何其他资源。尽管如此,Chef非
在我的属性文件中
default['appid']['user'] = 'sysUserA'
现在,我还想为包装烹饪书设置另一个相同的属性。
所以我添加了另一行,以参考第一行
default['appid']['user'] = 'sysUserA'
default['service']['user'] = node['appid']['user']
其思想是不在多个位置更新同一属性。考虑到肯定需要定义default['appid']['user']和default['service']['
因此,我们首次在Opscode平台上设置Chef,以管理重要的集群部署。我们已经设置了客户端,开发环境中有一个完整的chef repo,并将其签入Git,等等。刀子非常适合将东西从repo上传到服务器
厨师管理控制台有点不错。它可以让你在线编辑几乎任何东西。但问题就出在这里:我们已经在网上做了更改,却不知道如何将它们下载回本地存储库,以便将它们签入源代码管理
我们少了一把刀吗?或者,除了编写脚本列出每个角色和环境并将它们导入文件之外,还有其他可重复执行的方法吗 不确定您是否仍在寻找此文件,但此r
如果用户在服务器上没有密钥,我想运行ssh copy id,因此在execute块中有一个not_if指令。我已经验证了not_if命令返回0,但执行块仍然运行
execute "add ssh key to #{shortname}" do
not_if cmd # proceed only if server doesn't have this key
command "echo 'If prompted for password it is already in your clip
是否有方法通知包含LWRP定义的服务重新启动
我写了一个名为“sidekiq”的LWRP,它建立了一个类似这样的服务,并且看起来自己工作得很好
service "#{new_resource.name}_sidekiq" do
provider Chef::Provider::Service::Upstart
action [ :enable ]
subscribes :restart, "template[/etc/init/#{new_resource.name}_sidekiq
Chef服务器管理控制台以UTC时区显示节点签入时间或正常运行时间信息。有没有办法根据用户偏好将时区修改为其他时区?没有,据我所知,时区选择目前不是一项功能。ManageWeb界面是一个封闭源代码项目,因此我不能完全肯定地说,但是如果您在Chef邮件列表中询问,我知道其开发团队的一些成员会看到您的问题/建议。最后一次签入时间在内部存储为一个历元时间戳(自1970年1月1日起的秒数),因此您可以根据需要在自己的代码中将其转换为任何其他时区。UTC是ops工具的一个相当常见的标准,因此我认为即使添加
我已将chef文件从我的chef服务器复制到本地客户端节点~/.chef下,我的所有环境都在~/.chef/environments下,例如development.rb、production.rb等
当我从~/.chef/下运行chef client-z-E development-r'recipe[cookbook\u foo::recipe\u bar]'时,我得到以下错误:
==========================================================
我肯定安装了刀窗。厨师宝石列表显示刀窗口,但当我运行引导时,我被告知它没有安装
sudo -u user -H sh -c "cd /home/user/chef-repo/; chef gem list"
sudo -u user -H sh -c "cd /home/user/chef-repo/; knife bootstrap windows winrm $VMIP -r 'role[build_server]' -x 'domain\user' -V -P 'password'"
我正在构建一个cookbook,它安装我的节点js文件,然后为它们设置initd脚本。不幸的是,我不能调用烹饪书中的非默认LWRP
blah@blah:~/chef-repo/cookbooks/blah-deploy$ ls resources/
default.rb blahNodeAsService.rb
blah@blah:~/chef-repo/cookbooks/blah-deploy$ cat resources/blahNodeAsService.rb
actions :i
谁能告诉我如何为下面的配方代码编写chefspec测试
{'tomcat_exec_t' => '/apps/.*/bin(/.*)?',
'tomcat_unit_file_t' => '/usr/lib/systemd/system/tomcat@.*.service',
'tomcat_cache_t' => '/apps/.*/temp(/.*)?',
'tomcat_cache_t' => '/apps/.*/work(/.*)?',
'et
我正在尝试使用chef,我按照他们提供的所有步骤“使用您的硬件安装和配置chef服务器”
我已经从工作站运行了以下命令
knife SSL check
输出
连接到主机my_服务器:443
已成功验证来自“my_服务器”的证书
但是,当我使用以下命令时
knife client list
输出:
错误:找不到您正在查找的对象
发生了什么事?为了更具体,你没有共享你的knife.rb文件(在knife.rb中,你必须指明你的客户密钥,验证客户名称,验证密钥等),一般来说,你没有任何注册的厨师
我有一个厨师食谱来创建部署用户。运行时正在创建用户。尝试为用户创建.ssh文件夹时失败,因为用户的主目录不存在父目录/home/deploy不存在,无法创建/home/deploy/.ssh
食谱/main/recipes/user.rb
.厨房
您将deploy传递给用户资源名称,而不是节点['deploy\u user']:
user节点['deploy\u user']do
行动:创建
注释“应用程序部署用户”
home“/home/#{node['deploy_user']}”
shel
我正在尝试编写serverspec测试,通过使用chef、kitchen和vagrant以及debian jessie box来检查食谱是否正在设置mariadb服务器
配方很简单:
# cookbooks/mariadb/recipes/server.rb
package 'mariadb-server' do
action :install
end
我为它编写的规范是:
# cookbooks/mariadb/test/integration/default/serverspec/se
我想使用chef自动化服务器管理
在小刀的帮助下,我能够
从厨师超市下载食谱
将cookbook上载到chef服务器
引导节点
有没有可能不用刀子来做这些事情。我们可以使用chef server api来做所有这些事情。技术上是的,而且现在很少使用刀子来做#1和#2。Berkshell和PolicyFile已经完成了这些任务,但它们都是命令行工具,而不是API。不过,它们通常适合在脚本中使用。至于#3,没有任何具体的内容。Fog gem有一些通用的基于SSH的引导API,除此之外,您还需要自己编
我的食谱里有:
log mylog1 do
级别:信息
“为什么我看不到这个?”
终止
日志mylog2 do
级别:信息
“为什么我看不到这个?”
终止
这就是我在执行kitchen converge-l debug时看到的:
...
Converging 3 resources
Recipe: mybook::myrecipe
* log[mylog1] action write
* log[mylog1] action write
...
这个问题分为两个部分:
首先,通过“-
标签: Chef Infra
sudochef-recipecookbooktest-kitchen
这是我的食谱的default.rb菜谱的内容
include_recipe 'sudo'
include_recipe 'chef-vault'
group "#{node['cookbook']['group']}" do
action :create
append true
system false
end
user 'user' do
supports :manage_home => false
home ni
测试厨房中的搜索没有输出
请检查食谱并向我建议一些细节
节点JSON文件
{
"id": "cldb",
"chef_type": "node",
"json_class": "Chef::Node",
"run_list": [],
"automatic": {
"hostname": "cldb.net",
"fqdn":"127.0.0.1",
"name": "cldb.net",
"
我曾尝试使用Chef::Config['solo']仅在本地运行时执行操作,例如运行厨房测试。但是,在另一台主机上运行时,它仍然会安装epel发布包,我不想这样做。这是一只虫子,还是我遗漏了什么
# added to pass kitchen test
package 'epel-release' do
action :upgrade
only_if Chef::Config['solo']
end
因为你的意思是只有当{Chef::Config['solo']}时才是。如果没有{},
如何下载文件并使用CHEF指定路径?
我查阅了文档,找到了远程文件资源,但无法将文件下载到特定路径
我的尝试是这样的,但不知怎的,我弄不清确切的语法
remote_file 'E:\\' do
source 'https://bintray.com/jfrog/jfrog-cli-go/jfrog-cli-windows-amd64/1.19.0'
show_progress true
action :create_if_missing
end
您需要文件的直接URL,并且应
我正在使用yum_repository在Centos中创建.repo文件
我的一些存储库是如此巨大,以至于缓存repo会持续很长时间
我发现Chef中的资源yum_repository正在运行“yum-q-y makecache”,而且我还发现在我的例子中运行“makecache fast”非常快而且足够了
如何使用edit_资源覆盖已执行的命令,或者如何以其他方式执行“makecache fast”
我不会编写自己的资源来交换yum_存储库,因为将所有现有的烹饪书调整为新的资源可能太难、太贵
我正在尝试使用TestKitchen记录厨师角色的属性
下面是我的配置:
roles/myrole.json
{
"name": "myrole",
"json_class": "Chef::Role",
"description": "Example",
"chef_type": "role",
"defa
之前,我们在一些服务器上使用了RHEL7.2。我们正在切换到CentOS 8。以下资源在RHEL上工作,但在CentOS上失败
%w[ed rsync nmap telnet vim bash-completion].each do |package|
yum_package package do
action :install
end
end
错误是:
======================================================
使用chef,是否可以向正在安装软件包的配方中添加一些内容,以使软件包命令作为超级用户运行,而不是作为超级用户运行chef命令,例如:
package "mysql" do
user: sudo
action :install
end
因此,这将执行sudo apt get install mysql,而不是apt get install mysql。在文档中找不到任何内容。通常,如果需要root访问权限来配置系统,您可以在sudo下运行整个chef客户端进程,而不是作为普通用户
然而
我正在尝试创建一个chef菜谱,它将根据使用我的应用程序源代码从git存储库下载的yaml文件的内容动态创建资源。到目前为止,我有:
git "/home/a_user/#{ node[:my_node][:application] }" do
repository node[:my_node][:git_repository]
revision node[:my_node][:git_branch]
action :sync
user "a_user"
group "a_u
我想使用TestKitchen将ubuntu与java和hadoop cookbook一起部署。我已经安装了一套测试厨房
我在厨房配置文件中放入了另一个套件,现在厨房坏了
我把更改放在我的厨房配置文件中,但厨房还是坏了
当我做一个
kitchen list
我得到以下错误
/home/anupam/.rvm/gems/ruby-2.0.0-p451@chef/gems/test-kitchen-1.2.1/lib/kitchen/instance.rb:209:in `last_actio
我在其他地方没有看到一个很好的解决方案,我认为集成测试是必要的,因为:
Chef solo不支持像加密数据包这样的所有功能,这是Chef相对于其他配置管理的一个关键优势
ChefSpec适用于单元测试,但不适用于集成测试
使用production Chef服务器进行测试可能会导致生产机器运行Chef client并获得错误配置
在opscode.com上设置一个免费的chef测试服务器(下载初学者工具包)
根据一个简单的环境变量,即CHEF\u TEST=true,更改knife.rb连接到不同
厨师长报告医生说这是给企业厨师的。
对于OpenSourceChef,我能够获得JSON报告,该报告存储在所有节点的同一目录中。有没有更好的方法来报告fof opensource chef?在chef客户端运行结束时,我们将使用a将统计数据报告到我们的Zabbix监控中:。您可以根据自己的需要采用此示例。如果您有不同的想法,请详细说明。你的问题相当广泛。表示它将报告存储在chef服务器中。我在报告处理程序中添加了它,版本检查使它转到else块。我正在寻找一种将报告存储在chef server中的
工作流自动化工具源于结构化文本文件,以创建其节点清单。但是,如果您使用chef作为服务器/节点清单的真实来源,那么创建这些平面文件只是供rundeck参考是不可取的。rundeck如何从chef服务器动态获取此信息 chef rundeck是一个sinatra应用程序(ruby),它与chef服务器交互,并通过XML格式的REST API公开节点资源清册数据
我在下运行它,以便轻松管理流程、管理日志文件等。您还可以尝试通过ohai更新chef中节点的属性
然后,从rundeck,您可以简单地使
是否可以从配方中轻松访问有关节点的信息(类似于刀节点显示),而无需通过“执行”资源运行刀?为了方便起见,我想这样做是为了添加有关当前运行列表的信息,也许还有一些关于节点的详细信息。特别是对于运行列表,如果您不关心顺序,最直接的方法可能是从Ohai属性中获取
node['recipes']
node['roles']
见:
如果您确实关心顺序,那么您可能必须在node对象之外进行操作
runlist = node.run_list
这在文档中可能并不明显
您可以以类似的方式访问其余的节点信息。
我有下一个部署方案:
应一起部署在同一台计算机上的两台服务器
它们的公共属性-主机名、端口、默认用户名和密码
特定属性-例如上下文路径
因此,我创建了base cookbook,并在其中指定了所有常用选项。之后,我创建了两个具有特定食谱的相关食谱,以运行这两个服务器并设置特定属性值。在我决定再买一本包装食谱之前,这件事一直在起作用
其目的是启动两台服务器并做一些额外的事情
我用下一种方式配置了最顶级的食谱:
metadata.rb:
depends "app1"
depend
我在chef服务器上有两本烹饪书,名为mycookbook,版本分别为0.1.0和0.1.1。现在我只想使用chef客户端运行cookbook mycookbook版本0.1.1。如何做到这一点?通过一些尝试找到了答案
执行以下命令
chef-client -o "recipe[mycookbook@0.1.1]"
这将调用MyOkBook版本0.1.1
注意:使用-o参数运行chef client将永久覆盖该节点的运行列表。该命令将用新的运行列表替换您的运行列表,并仅使用
我想知道是否有类似的厨师。
我遇到的最接近的是,这是我所知道的最多的。我们有CIS基准和类似标准的InSpec合规性概要。有几本CIS烹饪书,但没有我见过的非常积极的维护
我有一个规范配方,其中包括测试两个命令中的一个是否运行。如果安装了第一个命令,将运行该命令。如果没有,则应运行第二个
然而,由于某种原因,该规范配方没有看到第一个执行资源,尽管它将确切命名的资源列为其他执行资源。但它确实看到并传递了第二个命令
RSpec输出如下所示:
gets admin key using getkey (FAILED - 1)
gets admin key using keyremoteclient [passed]
it 'gets admin key using yk
上一页 1 2 3 4 5 6 7 8 9 ...
下一页 最后一页 共 54 页