LoginSignup
112
109

More than 5 years have passed since last update.

DockerによるChefのCookbooks開発

Last updated at Posted at 2013-08-28

Chefのcookbookをちょっと実行したい時、みなさんどうしているのでしょうか。
Amazon S3上に、手元のMacbookのVirtualbox(Vagrant)で、さくらのVPSで、XenサーバのDomUで。。。などなど色々だと思います。
仮想環境だとまっさらなOSを立ち上げるのにいちいち時間がかかる。

みなさん

Docker使いませんか?

私はUbuntuサーバにDockerをインストールした環境を用意して
その上でCentOSでも, UbuntuでもDockerで文字通り ドカドカ 作って消してChefのレシピを開発しています。
Docker上のOSはLinux Containerなので仮想環境よりもCreate/Destroyが早くできます。

そして、そのDockerを使ってChefのCookbookを開発するのに便利なkitchen-dockerの使い方を紹介します。
※今回はDockerに関する記事は割愛します。

kitchen-dockerはdockerコンテナをkitchenでコントロールする便利なプラグインです。

【インストール】

※Dockerが起動する環境に入れましょう。test-kitchenも一緒にインストールされます。

gem install kitchen-docker

【Option】

  • kitchen init ... 設定ファイル等環境を構築します。(kitchen-vagrantの設定ファイルができますので書き換えます)
  • kitchen create ... .kitchen.yml(or kitchen.local.yml)で指定したdockerのOSコンテナを立ち上げます。その後、OSコンテナでsshdも立ち上げてくれます。
  • kitchen setup ... 立ち上げたdocker上のOSコンテナにChef-soloをインストールします。その後、手元にあるchefのcookbookをアップロードしてChef-soloで.kichen.yml(.kichen.local.yml)で指定したレシピ or Roleを実行してくれます。
  • kitchen converge ... cookbookを再度アップロードしてChef-soloを実行してくれます。
  • kitchen destroy ... 作ったDocker上のOSコンテナを消してくれます。 などなど他にもあります。

【使い方】

1. 環境設定

# cd /var/chef
# kitchen init

2. 設定ファイルの編集

YMLファイルなのでスペース(' ')に注意してください
* driver_plugin: docker ... dockerプラグインを利用します
* name: ... 何でもOK。
* image: "centos" ... コンテナを作成するときのdockerイメージ名を指定します。
* run_list: ... role, recipe等指定できます
* attributes: ... attributes等指定できます。

# .kitchen.yml
---
driver_plugin: docker
driver_config:
  require_chef_omnibus: true

platforms:
- name: centos-docker-test
  driver_config:
    image: "centos"
    platform: "rhel"
  run_list:
    recipe[httpd]

suites:
- name: default
  run_list: []
  attributes: {}

【demo】

あとはデモをどうぞ

112
109
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
112
109