※ 環境
MacOS 10.7.5
Chef 11.10.4

結論:-zオプションをつけてknife cookbook deleteを実行すれば削除できる

おもむろに$ knife cookbook create <cookbook-name>と打ってクックブックを作ったんだけど、cookbook-nameを間違えて作成してしまった。

削除したかったので、それらしきknife cookbook deleteコマンドを実行する。

$ knife cookbook delete <cookbook-name>
ERROR: Your private key could not be loaded from /etc/chef/client.pem
Check your configuration file and ensure that your private key is readable

するとなぜか失敗。 秘密鍵とか関係ないでしょうと思って色々調べてみたところ、上のコマンドだとリモートの操作をしようとしているらしきことがわかった。


$ knife -h
Usage: knife sub-command (options)
    -s, --server-url URL             Chef Server URL
        --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
    -c, --config CONFIG              The configuration file to use
        --defaults                   Accept default values for all questions
    -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 the Chef environment
    -F, --format FORMAT              Which format to use for output
    -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

すると最初の方に、ローカルの操作をするためと思われる-zオプションを発見。 knife cookbook deleteコマンドに-zオプションをつけて実行する。

$ knife cookbook delete <cookbook-name> -z
Do you really want to delete <cookbook-name> version 0.1.0? (Y/N) Y
Deleted cookbook[<cookbook-name> version 0.1.0]