日々精進

新しく学んだことを書き留めていきます

chef

対話的に実行するコマンドへの応答を自動化する

expect, autoexpectパッケージを使えば自動化出来る。 インストーラ以外でも、何でも対話的な入力を記録して自動的に実行させられる。 # シェル変更を自動化 autoexpect sudo chsh zsh ec2-user参考:chef - 対話形式のスクリプトに自動応答する方法 - Qiita

packageをroot権限でインストールする

packageリソースでuser: "root"とか指定出来たらいいけど、できないっぽいのでscriptリソースで対応した。 execute "install packages by root user" do user "root" command "yum install expect autoexpect" end

vagrant provisionを実行すると、自分で書いたCookbookがCookbookNotFoundになる

原因はBerksfileの更新を忘れていたこと。 Berksfileに以下を追加すると直った。 cookbook "<cookbookname>", path: "site-cookbooks/<cookbookname>"Chef道の先はまだまだ長い。。 参考:今っぽい Vagrant + Chef Solo チュートリアル - Qiita</cookbookname></cookbookname>

opscode community以外からcookbookをインストールする方法

Berksfileに以下のように取得先リポジトリを指定すればよい。 意外とこれ書いてるところがなくて困った。 cookbooksフォルダの下にチェックアウトしたフォルダを置いたりしてもだめなので注意。 cookbook 'casperjs', git: 'git://github.com/jenkinslaw/cas…

chefをゲストOSで実行すると「Unable to retrieve a valid package!」エラー

色々原因はあり得ると思うが、自分の場合はプロキシが設定されていないことが原因だった。 .bashrcに以下を追加すると直った。 export http_proxy=http://USER:PASSWORD@HOST:PORT export https_proxy=$http_proxy参考:VagrantのかんたんProxy設定 - Qiita

proxy環境下でknife solo prepareを実行すると「Bootstrapping Chef...」で処理がとまる

chefのプロキシ設定をしてないことが原因。いくつかプロキシ設定しないといけないところがあってややこしい。 が、knife solo initした時にできるChefリポジトリの中の.chef/knife.rbに以下を追加すれば環境変数http_proxyにのみプロキシのアドレスを書けば…

入門Chef Solo - Infrastructure as CodeでChef勉強中です

遅ればせながらChef勉強してます。 ツールの進化が早いので既に本のコマンドが古い箇所がある。 本と違う点は以下。 ・vagrantはgemでなく、インストーラからインストールするようになった(1.3.5) ・saharaもpluginになった。インストールコマンドは以下。 v…