Я управляю экземплярами своего приложения ec2 с помощью puppet, и это также включает управление пользователями. Но недавно я заметил ошибку, из-за которой я не могу войти ни с одним из имен пользователей, которые я добавил через puppet. После проверки одного из поврежденных экземпляров (в этом случае я использовал ключи) я обнаружил, что поле пароля /etc/shadow (2-й столбец) пустое, т. е. в нем нет хэшированного пароля. Я не смог выяснить причину, по которой хэшированные пароли не обновляются при создании пользователя... потому что у меня есть хэшированный пароль в модуле пользователя... поверьте мне, я использую очень простой модуль puppet 'user', но по какой-то причине он не обновляет пароли для пользователей.
Примечание: модуль отлично работает на моей локальной машине (Centos 6.3)
Вот мой модуль «user.pp» и логи:
1)Прикрепление user.pp.
2) Журналы запуска марионеток:
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) Версия и архитектура ОС:
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
А вот логи puppet, которые показывают, что пакет «ruby-shadow» установлен до модуля «user»:
[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-shadow, чтобы позволить Ruby изменять файл теневых паролей.
На RHEL/CentOS это rpm ruby-shadow. На других платформах он может называться ruby-shadowlib.
Документы по марионетке ссылаются на это втип пользователяв разделе provider->useradd.
Вы сможете убедиться, что загружаете нужный файл, выполнив следующие действия:
ruby -e "require 'puppet' ; puts PUppet.features.libshadow?"
Если загрузка проходит правильно, она должна вернуть значение true.