Chef をキッチン (1.5.0) と vagrant (1.8.1) で使用して、新しいサーバーでユーザーを一貫して管理しています。私のユーザーレシピは次のようになります。
include_recipe "users"
group 'sudo'
password_secret = Chef::EncryptedDataBagItem.load_secret(node['enterprise_sp']['secret_file'])
jays_password = Chef::EncryptedDataBagItem.load('user_secrets','jgodse', password_secret)['password']
shadow_password = `openssl passwd -1 -salt xyz #{jays_password}`.strip
user 'jgodse' do
action :create
group 'sudo'
system true
shell '/bin/bash'
home '/home/jgodse'
manage_home true
password shadow_password #added to /etc/shadow when chef runs
end
暗号化されていないデータ バッグは、パスワードを平文で構成した場所でした。次に、 knifeコマンド を使用してデータ バッグを暗号化しました。
これは機能しますが、パスワードの設定の問題を回避するための非常に汚い方法のようです。ユーザーブロックのパスワードディレクティブはシャドウパスワードのみを取得し、opensslコマンドにシェルを実行することによってのみ生成できるため、これを行う必要がありました。
パスワードを生成するopensslコマンドを実行せずに、シャドウ パスワードを取得するよりクリーンな方法はありますか?