我正在尝试修改并将菜谱上传到我的Chef服务器,但是当我尝试时,看起来在Chef菜单中的配方在Chef服务器中没有改变。
我正在使用Win2K8机器作为我的工作站,我编辑了learn_chef_iis-0.2.0 \ recipes \ default.rb。然后我做了:
刀菜谱删除learn_chef_iis
然后:
刀库菜单上传learn_chef_iis
当我查看操作码Web应用程序中的default.rb时,它仍显示相同的default.rb(即,我的更改不存在)。
我已经看到了一些改变菜谱版本的建议,我通过编辑metadata.rb“版本”尝试了这一点,但即使我这样做,当我做“刀菜谱上传”时,我仍然最终得到相同的版本(0.2.0)和未修改的default.rb。
HELP !!!我今天一直在研究这个问题并且陷入困境:( !!
谢谢,
PS C:\ Users \ Administrator \ chef-repo \ learn_chef_iis-0.2.0>刀菜谱上传learn_chef_iis
上传learn_chef_iis [0.2.0]
上传了1本食谱。
PS C:\ Users \ Administrator \ chef-repo \ learn_chef_iis-0.2.0>刀库菜单上传learn_chef_iis --force
上传learn_chef_iis [0.2.0]
上传了1本食谱。
PS C:\ Users \ Administrator \ chef-repo \ learn_chef_iis-0.2.0>
编辑:
这是修改后的default.rb。这个可以吗?也许这个default.rb很糟糕,所以导致“刀上传”失败了?
#
# Cookbook Name:: learn_chef_iis
# Recipe:: default
#
# Copyright (C) 2014
#
#
#
powershell_script 'Install IIS' do
code <<-EOH
Import-Module ServerManager
Add-WindowsFeature Web-Server
EOH
guard_interpreter :powershell_script
not_if "(Get-WindowsFeature -Name Web-Server).InstallState -eq 'Installed'"
end
service 'w3svc' do
action [:enable, :start]
end
template 'c:\inetpub\wwwroot\Default.htm' do
source 'index.html.erb'
end
并且,这是一个带有“详细”输出的运行:
PS C:\Users\Administrator\chef-repo> knife cookbook upload learn_chef_iis -V
INFO: Using configuration from C:/Users/Administrator/chef-repo/.chef/knife.rb
Uploading learn_chef_iis [0.2.0]
INFO: Validating ruby files
INFO: Validating templates
INFO: Syntax OK
INFO: Saving learn_chef_iis
INFO: Uploading files
INFO: Upload complete!
Uploaded 1 cookbook.
PS C:\Users\Administrator\chef-repo>
编辑3:
我没有解释,但我在下面创建了一本新的食谱:
http://learn.chef.io/learn-the-basics/windows/make-your-recipe-more-manageable/
这个被命名为“iis”。
然后我做了“刀烹饪书上传iis”,这很有效,我在节点上做了“chef-client -o”食谱[iis]“,并且有效。
然后我稍微修改了配方,再次上刀和厨师 - 客户端,看到了IIS上的更新信息。
所以,新的食谱似乎正在运作和更新。
奇怪:( ???
答案 0 :(得分:1)
我假设您的厨师回购基本上是这样的结构:
cookbooks/your_cookbook
含:
metadata.rb
recipes/default.rb
providers/
resources/
如果您在metadata.rb
中增加版本号并确定您正在运行
knife cookbook upload
在目录中,一切都应该有效。 At least that's what the docs say
或者您可以尝试退出该目录到您的厨师仓库的主目录中并运行:
knife upload cookbooks
或
knife upload /
Again, that's what the docs say.
但是我没有很多使用它的经验。 I use Berkshelf在我看来,这是一个必不可少的依赖管理工具,它比Librarian-Chef更无形。
只需导航到您的食谱,运行:
berks init
然后当您进行更改时:
berks install
berks upload
在更新metadata.rb
文件中的版本号后,将您的食谱推送到厨师仓库。
希望这能帮到你!
答案 1 :(得分:1)
根据您所描述的内容,knife.rb
设置cookbook_path
可能有2个条目(需要数组)See the doc。
我很确定原始食谱是在cookbook_path
中列出的最后一条路径上,所以刀上传不会失败,但会上传未经修改的版本。
如果您不确定自己的居住地或者您希望从cookbook_path
以外的路径上传食谱,则可以使用-o .
覆盖此设置食谱的父目录或-o /absolut/path/to/parent/dir/
。
当您不确定某个命令时,如果没有参数,则会显示帮助。
>knife cookbook upload
USAGE: knife cookbook upload [COOKBOOKS...] (options)
-a, --all Upload all cookbooks, rather than just a single cookbook
-s, --server-url URL Chef Server URL
--chef-zero-host HOST Host to start chef-zero on
--chef-zero-port PORT Port to start chef-zero on
-k, --key KEY API Client Key
--[no-]color Use colored output, defaults to false on Windows, true otherwise
--concurrency NUMBER_OF_THREADS
How many concurrent threads will be used
-c, --config CONFIG The configuration file to use
-o, --cookbook-path PATH:PATH A colon-separated path to look for cookbooks in
--defaults Accept default values for all questions
--include-dependencies Also upload cookbook dependencies
-d, --disable-editing Do not open EDITOR, just accept the data as is
-e, --editor EDITOR Set the editor to use for interactive commands
-E, --environment ENVIRONMENT Set ENVIRONMENT's version dependency match the version you're uploading.
--force Update cookbook versions even if they have been frozen
-F, --format FORMAT Which format to use for output
--freeze Freeze this version of the cookbook so that it cannot be overwritten
-z, --local-mode Point knife commands at local repository instead of server
-u, --user USER API Client Username
--print-after Show the data after a destructive operation
-V, --verbose More verbose output. Use twice for max verbosity
-v, --version Show chef version
-y, --yes Say yes to all prompts for confirmation
-h, --help Show this message
当你想知道它做了什么或者在哪里搜索某些内容时,请使用-VV
以详细模式运行刀具,这会为您提供大量信息:
使用-VV提取上传:
[...]
Uploading company-collectd [0.1.0]
DEBUG: Versions of cookbook 'collectd' returned by the server: 1.1.2
DEBUG: Matched cookbook 'collectd' with constraint '>= 0.0.0' to cookbook version '1.1.2' on the server
DEBUG: No chefignore file found at d:/chef/repo/cookbooks/chefignore no files will be ignored
INFO: Validating ruby files
DEBUG: Ruby file d:/chef/repo/cookbooks/company-collectd/attributes/default.rb is unchanged, skipping syntax check
DEBUG: Ruby file d:/chef/repo/cookbooks/company-collectd/metadata.rb is unchanged, skipping syntax check
DEBUG: Ruby file d:/chef/repo/cookbooks/company-collectd/recipes/default.rb is unchanged, skipping syntax check
INFO: Validating templates
INFO: Syntax OK
[...]