Chef 小ネタ その一
Chef Server の構築と運用についてブログを書こうと思っているものの、中々まとまって時間が取れないため、小ネタを 2 つほど紹介します。
knife-opc について
knife の設定を正しく終えている Chef Workstation 環境で knife opc コマンドが使えずに困っていた。 具体的には以下のとおり。
$ knife opc user list ERROR: You authenticated successfully to https://CHEF_SERVER_NAME/organizations/CHEF_ORG_NAME as CHEF_ADMIN_NAME but you are not authorized for this action Response: missing read permission
knife.rb に chef_server_url も chef_server_root も正しく指定しているのに、だ。
以下を読むと分かるのだが、
chef/knife-opc https://github.com/chef/knife-opc
knife opc コマンド実行時は、pivotal という Chef Client 名で認証するようだ。
よって sudo chef gem install knife-opc しておいて、以下のコマンドで目的を達成できた。
$ sudo knife opc user list --key /etc/opscode/pivotal.pem --user pivotal
だが、上記のドキュメントにも書いてあるのだが、chef-server-ctl コマンドが knife opc コマンドの管理者としてのアクションのラッパーになっており、こちらを使用するのが推奨されている。 上記コマンドと同じことをしたいなら、以下のようにする。
$ sudo chef-server-ctl user-list
レシピにおける not_if "grep ..." の書き方
シェルでは以下のように grep できるとする。
$ grep 'export PATH="/opt/chefdk/embedded/bin:$PATH"' ~/.bash_profile export PATH="/opt/chefdk/embedded/bin:$PATH"
ところがこれを bash resource のガード条件として以下のように not_if で書くと syntax error になる(syntax error, unexpected tLABEL)。
not_if "grep 'export PATH="/opt/chefdk/embedded/bin:$PATH"' ~/.bash_profile
解消法は、単純に、ダブルクォーテーションをエスケープするだけ。
not_if "grep 'export PATH=\"/opt/chefdk/embedded/bin:$PATH\"' ~/.bash_profile
- 作者: 澤登亨彦,樋口大輔,クリエーションライン株式会社
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2014/04/25
- メディア: 大型本
- この商品を含むブログ (1件) を見る
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)
- 作者: 吉羽龍太郎,安藤祐介,伊藤直也,菅井祐太朗,並河祐貴
- 出版社/メーカー: 技術評論社
- 発売日: 2014/05/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (16件) を見る
入門Chef Solo - Infrastructure as Code
- 作者: 伊藤直也
- 出版社/メーカー: 伊藤直也
- 発売日: 2013/03/11
- メディア: Kindle版
- 購入: 16人 クリック: 1,027回
- この商品を含むブログ (19件) を見る