tkm9

自分向け技術メモ(?)

Chef の リポジトリ/クックブック の generate 系コマンドについて

雛形をgenerateしてくれるコマンドがいくつかあるようだけど違いが不明だったので実行してみた。

リポジトリgenerate

以下3つやってみる。

  • chef generate app test_repo1
  • chef generate repo test_repo2
  • knife solo init test_repo3 ※要knife-soloインストール

実行結果

実行するとディレクトリができるので tree で見てみるよ。

chef generate app test_repo1
$ tree
.
├── README.md
├── cookbooks
│   └── test_repo1
│       ├── Berksfile
│       ├── chefignore
│       ├── metadata.rb
│       ├── recipes
│       │   └── default.rb
│       └── spec
│           ├── spec_helper.rb
│           └── unit
│               └── recipes
│                   └── default_spec.rb
└── test
    └── integration
        └── default
            └── serverspec
                ├── default_spec.rb
                └── spec_helper.rb

10 directories, 9 files
chef generate repo test_repo2
$ tree
.
├── LICENSE
├── README.md
├── Rakefile
├── certificates
│   └── README.md
├── chefignore
├── config
│   └── rake.rb
├── cookbooks
│   └── README.md
├── data_bags
│   └── README.md
├── environments
│   └── README.md
└── roles
    └── README.md

6 directories, 10 files
knife solo init test_repo3
$ tree
.
├── Berksfile
├── cookbooks
├── data_bags
├── environments
├── nodes
├── roles
└── site-cookbooks

6 directories, 1 file

感想

  • chef generate app test_repo1

レポジトリというかむしろレシピメインで申し訳程度にリポジトリな感じ

  • chef generate repo test_repo2

レポジトリといったらこれが普通なのかな?これはレシピの雛形は作られないから別途つくらないといけないね

  • knife solo init test_repo3

→ chef solo 用なのかな?でもこれくらいなら自分で mkdir してもあんま変わらなそう

クックブック

以下2つを実行。

  • chef generate cookbook test_cookbook1
  • knife cookbook create test_cookbook2 -o ./

実行結果

chef generate cookbook test_cookbook1
$ tree
.
├── Berksfile
├── README.md
├── chefignore
├── metadata.rb
├── recipes
│   └── default.rb
├── spec
│   ├── spec_helper.rb
│   └── unit
│       └── recipes
│           └── default_spec.rb
└── test
    └── integration
        └── default
            └── serverspec
                ├── default_spec.rb
                └── spec_helper.rb

8 directories, 9 files
knife cookbook create test_cookbook2 -o ./
$ tree
.
├── CHANGELOG.md
├── README.md
├── attributes
├── definitions
├── files
│   └── default
├── libraries
├── metadata.rb
├── providers
├── recipes
│   └── default.rb
├── resources
└── templates
    └── default

10 directories, 4 files

感想

  • chef generate cookbook test_cookbook1

→ミニマム構成にテストを追加しました的な

  • knife cookbook create test_cookbook2 -o ./

→ひととおりのディレクトリが用意されてそう。自作リソースを配置する用のディレクトリとか必須でないディレクトリも作られる。あとテスト系のは作られない

あと、ダウンロードしてきてクックブックを配置したり、berkshelf を使うパターンもあるね。

でもぶっちゃけ、どれも所詮 雛形で大したものが生成されるわけじゃないし自分で考えながら作ったほうがいいのかもしれない。