Skip to content

itamae でローカルサーバにユーザを作成してみる

構成管理ツールである「itamae」を使ってユーザを作成してみます。itamae は Ruby で実装されている為、Ruby がインストールされている必要があります。今回は CentOS7 / Ruby 2.3.1 環境でテストしました。

itamae のインストール

gem でインストールします。

1
gem install itamae

パスワードを生成する

後で作成するレシピ中でパスワードを指定する際、(平文では無く)パスワードを暗号化した文字列を指定する必要があります。これには gem でインストール出来る unix-crypt に付随する mkunixcrypt というツールを使うと簡単に実行出来ます。

1
gem install unix-crypt

「-p」オプションでパスワード文字列を渡せます。但し、-p オプションを使うと insecure だよ、と警告が表示されます。

1
2
3
$ mkunixcrypt -p PASSWORD
warning: providing a password on the command line is insecure
$6$vrjEadB/KhsxiTct$sJ4UKmSTOHGxocAdpQUN9ccZfzDUlnAIbU/YGYhkdK7BoFoqVLm/ZDV0xr9KRBaeTGypcTHF2TzsnE.Yu9UFH0

レシピを用意する

ユーザを作成するレシピを用意しておきます。今回は「CREATE-USER.rb」というファイルを以下の内容で新規作成しました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$ cat CREATE-USER.rb
USER="USER1"
GROUP="GROUP1"
PASSWORD="$6$vrjEadB/KhsxiTct$sJ4UKmSTOHGxocAdpQUN9ccZfzDUlnAIbU/YGYhkdK7BoFoqVLm/ZDV0xr9KRBaeTGypcTHF2TzsnE.Yu9UFH0"

group GROUP do
  action:create
end

user USER do
  action :create
  gid GROUP
  password
end

テスト実行してみる(dry-run)

itamae は設定変更はせずに、テストだけを実行させることが出来ます。このテスト実行のことを「dry-run」と呼びます。今回はローカルサーバに対して itamae を dry-run してみます。

1
2
3
4
$ itamae local CREATE-USER.rb --dry-run
 INFO : Starting Itamae...
 INFO : Recipe: /home/user/CREATE-USER.rb
 INFO :   user[USER1] exist will change from 'false' to 'true'

実行してみる

dry-run でエラーが検知されなかったので、本番実行してみます。

1
2
3
4
# itamae local CREATE-USER.rb
 INFO : Starting Itamae...
 INFO : Recipe: /root/CREATE-USER.rb
 INFO :   user[USER1] exist will change from 'false' to 'true'

ユーザが作成されたことを確認します。

1
2
# id USER1
uid=1001(USER1) gid=1001(GROUP1) groups=1001(GROUP1)

ヘルプ

参考に itamae のヘルプを引用しておきます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
$ itamae
Commands:
  itamae destroy [cookbook|role] [NAME]   # Undo role or cookbook (short-cut alias: "d")
  itamae docker RECIPE [RECIPE...]        # Create Docker image
  itamae generate [cookbook|role] [NAME]  # Initialize role or cookbook (short-cut alias: "g")
  itamae help [COMMAND]                   # Describe available commands or one specific command
  itamae init NAME                        # Create a new project
  itamae local RECIPE [RECIPE...]         # Run Itamae locally
  itamae ssh RECIPE [RECIPE...]           # Run Itamae via ssh
  itamae version                          # Print version

Options:
  -l, [--log-level=LOG_LEVEL]
                               # Default: info
      [--color], [--no-color]
                               # Default: true
  -c, [--config=CONFIG]