itamae でローカルサーバにユーザを作成してみる
構成管理ツールである「itamae」を使ってユーザを作成してみます。itamae は Ruby で実装されている為、Ruby がインストールされている必要があります。今回は CentOS7 / Ruby 2.3.1 環境でテストしました。
itamae のインストール
gem でインストールします。
パスワードを生成する
後で作成するレシピ中でパスワードを指定する際、(平文では無く)パスワードを暗号化した文字列を指定する必要があります。これには gem でインストール出来る unix-crypt に付随する mkunixcrypt というツールを使うと簡単に実行出来ます。
「-p」オプションでパスワード文字列を渡せます。但し、-p オプションを使うと insecure だよ、と警告が表示されます。
| $ 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 してみます。
| $ 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 でエラーが検知されなかったので、本番実行してみます。
| # itamae local CREATE-USER.rb
INFO : Starting Itamae...
INFO : Recipe: /root/CREATE-USER.rb
INFO : user[USER1] exist will change from 'false' to 'true'
|
ユーザが作成されたことを確認します。
| # 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]
|