如何解冻食谱
How to unfreeze cookbook
我发现通过 berks 上传不小心可以冻结 chef 中的食谱。能够防止更改和上传到食谱听起来确实很棒。但是...
如何解冻食谱?我找不到任何文档或任何帖子询问这个。为什么,为什么要那样做……听起来可能有悖常理?你发布了你的食谱,你不应该改变历史。
但是,如果您遇到生产紧急情况并且该版本的食谱破坏了一切怎么办。第一个答案可能是,继续前进并解决问题 --- 但这可能需要一段时间。第二个答案可能是,将固定的版本更改为以前的版本 --- 但是如果您有 50 本食谱固定到该版本怎么办?也不实用。
解冻某些东西似乎很有用。是的,您可以使用 -f 选项强制更新。但是必须强制更新未来无限的每一个变化听起来很笨拙而且不合适。尤其是当有人不小心冷冻了一本食谱时(比如我的情况)。
您可以强制上传冻结标志设置为 false 的新版本。我们没有特别公开这一点或让它变得容易,因为它有点违背了这一点。更好的解决方案是要么使用 SemVer pinning 而不是单一版本,要么使用更新的 Policyfile 系统。
当您不小心冻结了食谱版本时,可以专门使用 berks upload --force
。我不明白你不使用强制选项的意思。
$ berks help upload
Usage:
berks upload [COOKBOOKS]
Options:
-b, [--berksfile=PATH] # Path to a Berksfile to operate off of.
-e, [--except=one two three] # Exclude cookbooks that are in these groups.
-o, [--only=one two three] # Only cookbooks that are in these groups.
[--no-freeze], [--no-no-freeze] # Do not freeze uploaded cookbook(s).
[--force] # Upload all cookbooks even if a frozen one exists on the Chef Server.
[--ssl-verify], [--no-ssl-verify] # Disable/Enable SSL verification when uploading cookbooks.
-s, [--skip-syntax-check], [--no-skip-syntax-check] # Skip Ruby syntax check when uploading cookbooks.
[--halt-on-frozen], [--no-halt-on-frozen] # Exit with a non zero exit code if the Chef Server already has the version of the cookbook(s).
-c, [--config=PATH] # Path to Berkshelf configuration to use.
-F, [--format=FORMAT] # Output format to use.
# Default: human
-q, [--quiet], [--no-quiet] # Silence all informational output.
-d, [--debug], [--no-debug] # Output debug information
只需删除该食谱的版本并重新加载即可。尝试以下:
knife cookbook delete <cookbook name>
knife cookbook upload <cookbook name>
我发现通过 berks 上传不小心可以冻结 chef 中的食谱。能够防止更改和上传到食谱听起来确实很棒。但是...
如何解冻食谱?我找不到任何文档或任何帖子询问这个。为什么,为什么要那样做……听起来可能有悖常理?你发布了你的食谱,你不应该改变历史。
但是,如果您遇到生产紧急情况并且该版本的食谱破坏了一切怎么办。第一个答案可能是,继续前进并解决问题 --- 但这可能需要一段时间。第二个答案可能是,将固定的版本更改为以前的版本 --- 但是如果您有 50 本食谱固定到该版本怎么办?也不实用。
解冻某些东西似乎很有用。是的,您可以使用 -f 选项强制更新。但是必须强制更新未来无限的每一个变化听起来很笨拙而且不合适。尤其是当有人不小心冷冻了一本食谱时(比如我的情况)。
您可以强制上传冻结标志设置为 false 的新版本。我们没有特别公开这一点或让它变得容易,因为它有点违背了这一点。更好的解决方案是要么使用 SemVer pinning 而不是单一版本,要么使用更新的 Policyfile 系统。
当您不小心冻结了食谱版本时,可以专门使用 berks upload --force
。我不明白你不使用强制选项的意思。
$ berks help upload
Usage:
berks upload [COOKBOOKS]
Options:
-b, [--berksfile=PATH] # Path to a Berksfile to operate off of.
-e, [--except=one two three] # Exclude cookbooks that are in these groups.
-o, [--only=one two three] # Only cookbooks that are in these groups.
[--no-freeze], [--no-no-freeze] # Do not freeze uploaded cookbook(s).
[--force] # Upload all cookbooks even if a frozen one exists on the Chef Server.
[--ssl-verify], [--no-ssl-verify] # Disable/Enable SSL verification when uploading cookbooks.
-s, [--skip-syntax-check], [--no-skip-syntax-check] # Skip Ruby syntax check when uploading cookbooks.
[--halt-on-frozen], [--no-halt-on-frozen] # Exit with a non zero exit code if the Chef Server already has the version of the cookbook(s).
-c, [--config=PATH] # Path to Berkshelf configuration to use.
-F, [--format=FORMAT] # Output format to use.
# Default: human
-q, [--quiet], [--no-quiet] # Silence all informational output.
-d, [--debug], [--no-debug] # Output debug information
只需删除该食谱的版本并重新加载即可。尝试以下:
knife cookbook delete <cookbook name>
knife cookbook upload <cookbook name>