Chef Advent Calendar 2014 - Qiitaの(名目上の)5日目です。
Chef 11.6からremote_file
にheaders
属性が付与できるようになりました。
Release Notes: chef-client 11.6 — chef-client 11.6 Documentation
例えば、認証付きのJenkinsからファイルを取得する必要がある場合などに使えます、というか、その用途で使いました。
11.6以前って、みんなどうしてたんだろう……。
例えば、JenkinsサーバーにChefアクセス用のユーザー、foo(パスワードはbar)がいるとして、こんな感じでbase64デコードしてやって、
$ echo -n 'foo:bar' | base64
Zm9vOmJhcg==
それをこんな感じでAuthentication
ヘッダに載せてやればオッケーです。
remote_file local_file do
source remote_file
headers 'Authorization' => 'Basic Zm9vOmJhcg=='
end
参考
- remote_file — Chef Docs
- recipe - Opscode Chef: provider remote_file with headers attribute - Stack Overflow
個人の感想です
Chefって覚えること多くてしんどくて、ドキュメントが多い割にはアンドキュメントなところも多くて、開発がアクティブだから1年前の情報と違うこと(最近はencrpyted data bagよりchef-vaultのほうがいいの?)が割とあるとかで、なんだか人気に翳りがでてきてるような気がする。
仕事でRails触ってないから想像なんだけど、Railsのバージョンアップについていくのがしんどいんだけどバージョンアップを頑張りたくてRails使ってるわけじゃない的な。インフラ寄りのひとだったら余計にそうだろうなあ。
まだ、Ansibleのほうが覚えること少なくて芽があるんじゃないか、と思ってて(個人の感想です)、わりとみんなもそうだったりするのかな。
そんなChefとAnsibleの対比を考えていて、なぜかWatson (Jenkinsの旧称)がでてくるまえのCIツール群(Cruise control, Damage controlなど)を思い出した。まーでも、Cruise controlとかはキャズムを超えらんなかったけどChefはそうじゃないから、そういう類型化は違うか。
Ansibleですべて解決!とかはまったく思ってないし同じ問題をはらんでいる可能性もあるんだけど、あくまで個人的にはAnsibleのほうが肌に合うな、と思っています。
以上、個人の感想でした。