各サブコマンドで指定できるオプションはknife zero SUBCOMMAND --help
で確認できます。
knife zero bootstrap [SSH_USER@]FQDN (options)
リモートNodeの初期化を行います、次の機能をもちます。
オプションから指定したAttributesはNormal属性として永続扱いになります。
Chef本体のknife bootstrap
からオプションを引き継いでいます。本体のバージョンにより、使えるオプションは変動します。
Knife-Zeroで追加したオプションと、よく聞かれるオプションは次の通りです。
--converge/--no-converge
client.rb
のみ書き換えることができます。-N, --node-name NAME
(ChefCore)
-j JSON_ATTRIBS, --json-attributes
(ChefCore)
--json-attribute-file FILE
--json-attributes
とすることは一緒ですが、こちらはJSONファイルを指定します。--remote-chef-zero-port
-r, --run-list RUN_LIST
(ChefCore)
--sudo
(ChefCore)
-W, --why-run
--appendix-config PATH
client.rb
の最後に指定したファイルの内容を追加します。--[no-]overwrite
--alter-project PROJECT
chef
, cinc
の2つから選択。その他についてはknife zero bootstrap --help
を参照してください。
到達性と名前のパターン。
# ノードが解決可能なホスト名を持つ
$ knife zero bootstrap zero.example.com
# 任意の名前を付与
$ knife zero bootstrap zero.example.com --name zero.example.com
# ノードが解決可能なホスト名を持たない
$ knife zero bootstrap 210.152.xxx.xxx --name zero01
# SSHに使用するログイン名がubuntuで、sudoが必要
$ knife zero bootstrap 210.152.xxx.xxx --name zero01 -x ubuntu --sudo
または
$ knife zero bootstrap ubuntu@210.152.xxx.xxx --name zero01 --sudo
初回のChef-Client実行時にNormal Attributeを付与する。
# 文字列として渡す
$ knife zero bootstrap zero.example.com --json-attributes '{"mykey":"myval"}'
# ファイルから読み込む
$ knife zero bootstrap zero.example.com --json-attribute-file tmp/node.json
初回のChef-Client実行時に任意のレシピを実行する。
# 複数要素を持つランリストを指定する
$ knife zero bootstrap zero.example.com --run-list "role[base],recipe[iptables::www]"
# JSONファイルを同時に指定する
$ knife zero bootstrap zero.example.com --run-list "role[base],recipe[iptables::www]" --json-attribute-file tmp/node.json
Bootstrap済みNodeの、client.rb
だけを更新。
$ knife zero bootstrap zero.example.com -N zero.example.com --no-converge
複数のNodeをGNU Parallelで同時にBootstrap。
$ parallel -j 5 knife zero bootstrap ::: nodeA nodeB nodeC...
knife zero converge QUERY (options)
BootstrapおよびChef-Client実行済み(Node情報収集ずみ)のNodeに対して、Chef-Clientを再度実行します。
対象Nodeはクエリ結果で絞込みます。クエリの書式はknife searchのSEARCH_QUERY
と同一です。
Chef本体のknife ssh
のほぼすべてと、chef-client
から一部のオプションを引き継いでいます。本体のバージョンにより、使えるオプションは変動します。
Knife-Zeroで追加したオプションと、よく聞かれるオプションは次の通りです。
-a, --attribute ATTR
(ChefCore)
knife_zero.host
として再利用できます。-C, --concurrency NUM
(ChefCore)
--remote-chef-zero-port
-W, --why-run
-o, --override-runlist RunlistItem,RunlistItem
--sudo/--no-sudo
--splay SECONDS
(Chef-Client)
--skip-cookbook-sync
--client-version [latest|VERSION]
-j, --json-attributes JSON_ATTRIBS
--override-runlist
との併用を必須にしてあります。--chef-license ACCEPTANCE
--client-version
オプションと併用します。--alter-project PROJECT
chef
, cinc
の2つから選択。# すべてのNodeをConverge
$ knife zero converge "name:*" --attribute knife_zero.host
# すべてのNodeをConverge、5Nodeずつ並行。
$ knife zero converge "name:*" --attribute knife_zero.host --concurrency 5
# Environment == "production" のNodeをConverge
$ knife zero converge "chef_environment:production" --attribute knife_zero.host
# 任意のランリストを使用する
$ knife zero converge "name:*" --attribute knife_zero.host --override-runlist "role[patch]"
--client-version
の使い方。
# chef-clientを実行する前に、最新バージョンに更新。
$ knife zero converge "name:*" --attribute knife_zero.host --client-version latest
# chef-clientを実行する前に、12.4.3をインストール。
$ knife zero converge "name:*" --attribute knife_zero.host --client-version 12.4.3
# chef-clientはwhy-runで実行し、変更はしない。
$ knife zero converge "name:*" --attribute knife_zero.host --client-version 12.4.3 --why-run
--json-attributes
の使い方。
# JSONからAttributesをロードして、一回だけのタスクを実行する。
$ knife zero converge "name:*" --attribute knife_zero.host --json-attributes ./attrs/onetime.json --override-runlist 'role[onetime_task]'
Note:
Chefのオムニバスインストーラを使いたくない場合は--client-version
は役に立ちません。
自前でやるならknife ssh
で好きなコマンドを流してくればよいです。
knife zero apply QUERY (options)
(※1.12.0で追加)
BootstrapおよびChef-Client実行済み(Node情報収集ずみ)のNodeに対して、スポットで任意のレシピをChef-Applyで実行します。
対象Nodeはクエリ結果で絞込みます。クエリの書式はknife searchのSEARCH_QUERY
と同一です。
レシピはChef-Applyに標準入力から渡されます。
Chef本体のknife ssh
、およびzero converge
からオプションを引き継いでいます。本体のバージョンにより、使えるオプションは変動します。
zero apply
で使用する主なオプションは次の通りです。
-a, --attribute ATTR
(ChefCore)
knife_zero.host
として再利用できます。-r, --recipe Recipe String or @filename
-j, --json-attributes JSON_ATTRIBS
-C, --concurrency NUM
(ChefCore)
-W, --why-run
--sudo/--no-sudo
--client-version [latest|VERSION]
zero apply
コマンド作成時のChef(12.6.0)では、chef-applyはChef-ServerからNodeオブジェクトをロードする手段がありません。
あくまで限定的な利用に留め、ChefRepoの情報が必要ならばconverge
の--override-runlist
を利用しましょう。
# すべてのNodeにtmuxパッケージをインストール、文字列から
$ knife zero apply "name:*" -r "package 'tmux'"
# すべてのNodeのtmuxパッケージを更新、5Nodeずつ並行。
$ knife zero apply "name:*" --attribute knife_zero.host --concurrency 5 -r "package 'tmux' do action :upgrade end"
# すべてのNodeにファイルからレシピを実行
$ knife zero apply "name:*" -r @apply/maintenance.rb
knife.rbから生成される設定を大まかに出力します。特にオプションはありません。 設定内容の確認やバグ報告に使います。
$ knife zero diagnose
Chef::Config
====================
---
:local_mode: true
:knife_zero: {}
:verbosity:
:log_location: !ruby/object:IO {}
:config_file: "/Users/sawanoboriyu/github/higanworks/knife-zero_playground/knife.rb"
:color: true
:log_level: :warn
:chef_repo_path: "/Users/sawanoboriyu/github/higanworks/knife-zero_playground"
:chef_server_url: chefzero://localhost:8889
:repo_mode: everything
Knife::Config
====================
---
:verbosity: 0
:color: true
:editor: vim
:disable_editing: false
:format: summary
:remote_chef_zero_port:
:config_file: "/Users/sawanoboriyu/github/higanworks/knife-zero_playground/knife.rb"
Zero Bootstrap Config
====================
---
:encrypt: false
:ssh_user: root
:run_list: []
:first_boot_attributes: {}
:host_key_verify: true
:remote_chef_zero_port:
:bootstrap_converge: true
Zero Converge Config
====================
---
:concurrency:
:manual: false
:ssh_password_ng: false
:host_key_verify: true
:remote_chef_zero_port:
:use_sudo: true
:override_runlist:
:config_file: "/Users/sawanoboriyu/github/higanworks/knife-zero_playground/knife.rb"