Puppet ユーザー モジュールがハッシュ パスワードで /etc/shadow を更新しない

Puppet ユーザー モジュールがハッシュ パスワードで /etc/shadow を更新しない

私は、puppet を使用して ec2 アプリケーション インスタンスを管理しており、これにはユーザー管理も含まれます。しかし、最近、puppet で追加したユーザー名のいずれでもログインできないというバグに気付きました。破損したインスタンスの 1 つ (この場合はキーを使用) を確認したところ、/etc/shadow パスワード フィールド (2 番目の列) が空白であることがわかりました。つまり、ハッシュされたパスワードがそこにありません。ハッシュされたパスワードがユーザー作成時に更新されない理由がわかりません。ユーザー モジュールでハッシュされたパスワードが提供されているためです。非常に単純な puppet の「ユーザー」モジュールを使用しているのですが、何らかの理由でユーザーのパスワードが更新されません。

注: このモジュールは私のローカルマシン (Centos 6.3) では正常に動作しています。

ここに私の 'user.pp' モジュールとログがあります:

1)user.ppを添付します。

2)Puppet 実行ログ:

mnotice: /Usertgrochowicz/ensure: created
mnotice: /Userjpollard/ensure: created
mnotice: /Userbottle/ensure: created
mnotice: /Userjburgar/ensure: created
mnotice: /Userrahul/ensure: created
mnotice: /Userjfenocchi/ensure: created
mnotice: /Userdwhite/ensure: created
mnotice: /Userbporter/ensure: created
mnotice: /Userasavarin/ensure: created
mnotice: /Userehalfin/ensure: created
mnotice: Finished catalog run in 1.69 seconds
mnotice: Finished catalog run in 0.21 seconds

3) ファイル /etc/shadow エントリが作成されます。

tgrochowicz:!!:15956:0:99999:7:::
jpollard:!!:15956:0:99999:7:::
bottle:!!:15956:0:99999:7:::
jburgar:!!:15956:0:99999:7:::
rahul:!!:15956:0:99999:7:::
jfenocchi:!!:15956:0:99999:7:::
dwhite:!!:15956:0:99999:7:::
bporter:!!:15956:0:99999:7:::
asavarin:!!:15956:0:99999:7:::
ehalfin:!!:15956:0:99999:7:::

4) OSバージョンとアーキテクチャ:

ec2-user@ip-10-100-38-78 ~$ uname -r
3.4.43-43.43.amzn1.x86_64
ec2-user@ip-10-100-38-78 ~$ uname -a
Linux ip-10-100-38-78 3.4.43-43.43.amzn1.x86_64 #1 SMP Mon May 6 18:04:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

このモジュールが ec2 インスタンス上のモジュールからパスワードを更新できない理由をご存知ですか?


申し訳ありませんが、ここがフォーラムではないことに気付いていませんでした。私の質問の最新情報は次のとおりです。

同感です。また、ruby-shadow が 'user' モジュールの前提条件としてすでにインストールされていることをお伝えするのを忘れていました。/etc/shadow のパスワード フィールドはまだ空白です。何が puppet をブロックしているのか全くわかりません。何かアイデアはありますか?

以下は、ruby-shadow がインストールされ、初期化されたことを示すコマンド ログです。

[root@ip-10-100-39-44 ~]# ruby -e "require 'puppet' ; puts Puppet.features.libshadow?"
true
[root@ip-10-100-39-44 ~]# rpm -qa | grep ruby-shadow
ruby-shadow-1.4.1-15.2.amzn1.x86_64

以下は、「user」モジュールの前に「ruby-shadow」パッケージがインストールされたことを示す Puppet ログです。

[root@ip-10-100-39-44 ~]# less /var/log/messages 
*(/Stage[main]/Packages/Yumrepo[epel]/enabled) enabled changed '0' to '1'
Sep 20 03:08:50 ip-10-100-39-44 yum[2631]: Installed: ruby-shadow-1.4.1-15.2.amzn1.x86_64
Sep 20 03:08:51 ip-10-100-39-44 puppet-apply[2471]: (/Stage[main]/Packages/Package[ruby-shadow]/ensure) created*

*(/Stage[main]/Env::Sshd/Augeas[PasswordAuthentication]/returns) executed successfully
Sep 20 03:10:32 ip-10-100-39-44 puppet-apply[2471]: (/Stage[main]/Env::Sshd/Service[sshd]) Triggered 'refresh' from 1 events
Sep 20 03:10:38 ip-10-100-39-44 puppet-apply[2471]: (/Stage[main]//Exec[wait_for_5_sec]/returns) executed successfully
Sep 20 03:10:38 ip-10-100-39-44 puppet-apply[2471]: (/User[bporter]/ensure) created
Sep 20 03:10:38 ip-10-100-39-44 puppet-apply[2471]: (/User[asavarin]/ensure) created
Sep 20 03:10:39 ip-10-100-39-44 puppet-apply[2471]: (/User[ehalfin]/ensure) created
Sep 20 03:10:39 ip-10-100-39-44 puppet-apply[2471]: (/User[jpollard]/ensure) created
Sep 20 03:10:39 ip-10-100-39-44 puppet-apply[2471]: (/User[bottle]/ensure) created
Sep 20 03:10:39 ip-10-100-39-44 puppet-apply[2471]: (/User[jburgar]/ensure) created
Sep 20 03:10:39 ip-10-100-39-44 puppet-apply[2471]: (/User[rahul]/ensure) created
Sep 20 03:10:39 ip-10-100-39-44 puppet-apply[2471]: (/User[tgrochowicz]/ensure) created
Sep 20 03:10:40 ip-10-100-39-44 puppet-apply[2471]: (/User[jfenocchi]/ensure) created
Sep 20 03:10:40 ip-10-100-39-44 puppet-apply[2471]: (/User[dwhite]/ensure) created*

ありがとう

答え1

Ruby (および Puppet) では、Ruby がシャドウ パスワード ファイルを変更できるようにするために、ruby-shadow というライブラリがインストールされている必要があります。

RHEL/CentOS では、これは ruby​​-shadow rpm です。他のプラットフォームでは、ruby-shadowlib と呼ばれる場合があります。

パペットのドキュメントでは、ユーザータイプprovider->useradd セクションの下にあります。

次のようにすることで、正しいものがロードされていることを確認できるはずです。

ruby -e "require 'puppet' ; puts PUppet.features.libshadow?"

正しく読み込まれている場合は true を返します。

関連情報