itamaeメモ

### itamaeをインストール

```
$ sudo gem install itamae
```

### レシピー作成

どこのディレクトリでもいいんで、`base.rb`ファイルを作成して、下のコードを入れます。

```
package "git" do
    action :install
end
```

###ローカル環境でItamaeを実行する

```
$ sudo itamae local git.rb
```

これでgitがインストールされます。

### リモートサーバーで実行
仮に公開鍵認証でリモートサーバーに入れるとします。リモートのサーバーでgit.rbレシピーを実行します。

```
$ itamae ssh -h <hostname> -u root -p 2222 git.rb
 INFO : Starting Itamae...
 INFO : Recipe: /Users/N1210A001/Playground/itamae/git.rb
 INFO :   package[git] installed will change from 'false' to 'true'
```

itamaeのhelp

```
$ itamae help ssh
Usage:
  itamae ssh RECIPE [RECIPE...]
  ...

$ itamae help local
Usage:
  itamae local RECIPE [RECIPE...]

Options:
      [--dot=PATH]                 # Only write dependency graph in DOT
  -j, [--node-json=NODE_JSON]
  -y, [--node-yaml=NODE_YAML]
  -n, [--dry-run], [--no-dry-run]
      [--ohai], [--no-ohai]        # This option is DEPRECATED and will be inavailable.
  -l, [--log-level=LOG_LEVEL]
                                   # Default: info
      [--color], [--no-color]
                                   # Default: true

Run Itamae locally
```

### ディレクトリ作成
リモートホストにディレクトリを作成、ユーザーを指定する際に実際に存在しているユーザーを指定する必要がある
`directory`はitamaeのリソースです。

```
directory "create itamae-test dir" do
  action :create
  path "/root/itamae-test"
  mode "755"
  owner "wang"
  group "root"
end
```

### ファイルを作成する

```
file "create file foo" do
  path "/root/foo"
  content "this is just a random file"
  mode "755"
  group "root"
end
```

### gitからelixirをcloneする

```
git "clone elixir" do
  destination "/root/elixir"
  repository "https://github.com/elixir-lang/elixir.git"
  revision "HEAD"
end
```
---

### リモートサーバーにフィアルを転送

リモートの`/etc/sudoers.d/`ディレクトリにローカルの現在のディレクトリ下の`remote_files/wzj`ファイルを送ります。リモートでも`wzj`という名前で保存します。

```
remote_file "/etc/sudoers.d/wzj" do
    source "remote_files/wzj"
end
```
---

### userリソースを利用して、ユーザーを作成する

```
user "create user" do
  username "wang"
  password "123456"
end
```


---

### Erlangをインストールレシピー

```
directory "create Download directory" do
  action :create
  path "/root/Download"
  mode "755"
  owner "root"
  group "root"
end

execute "get erlang repo" do
  cwd "/root/Download"
  command "wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm"
end
execute "install erlang repo" do
  cwd "/root/Download"
  command "rpm -Uvh erlang-solutions-1.0-1.noarch.rpm"
  not_if "rpm -q erlang-solutions-1.0-1.noarch" # 0であれば、上のコマンド実行しない
end

# 必須
package "epel-release" do
  action :install
end

package "erlang" do
  action :install
  not_if "hash erl"
end
```

---

### [dockerをインストール](http://qiita.com/ColdFreak/items/3394973d34ccf403ecb3)して、起動する


```
package "epel-release"

package "docker"

service "docker" do
  action :restart
  name "docker"
end
```
---

### jenkinsをインストール

```
include_recipe './apache.rb'
package "java-1.8.0-openjdk"

execute "download repo" do
  command "wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo"
  not_if "test -e /etc/yum.repos.d/jenkins.repo"
end

execute "import jenkins key" do
  command "rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key"
end

package "jenkins" do
  action :install
end
```

**`include_recipe`を使って同じディレクトリのしたのレシピー`apache.rb`をincludeして、apacheがなければ、インストールするようにしてくれます。**

---

### ベースとなるソフトを一度にインストール

```
%w(ctags tmux vim).each do |pkg|
  package pkg do
    action :install
  end
end
```