Используйте шеф-повара, чтобы запустить bash passwd - PullRequest
0 голосов
/ 23 мая 2018

Мне трудно понять, как использовать chef для запуска команды bash (passwd)

Я знаю, как настроить блок ресурсов bash, но как мне его настроить, чтобы это быловозьмите переменную password = 'abc123'.Пользователь, для которого я хочу сделать это, для этого примера adminblah.

bash 'analytics_password' do
  code <<-EOH
    sudo passwd adminblah
  EOH
end

Я не уверен, как получить переменную пароля в этом.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Каким-то образом я нашел это раздражающе громоздким ...

Два варианта, которые пришли мне в голову:

1.Передайте pwd в chpasswd, который работает как:

CHPASSWD (8)

NAME chpasswd - обновить пароли в пакетном режиме

Синтез chpasswd [опции]

ОПИСАНИЕ Команда chpasswd считывает список пар имени пользователя и пароля из стандартного ввода и использует эту информацию для обновления группы существующих пользователей.Каждая строка имеет формат:

   user_name:password

Итак, ваш рецепт шеф-повара может выглядеть так:

password = 'my-secret-password'

bash 'analytics_password' do
  code <<-EOH
    sudo sh -c 'echo "adminblah:#{password}" | chpasswd'
  EOH
end

2.Используйте user resource

hash = `openssl passwd -1 -salt NCC #{password}`
hash = hash.gsub(/\n/, '')

user 'a user' do
  username 'adminblah'
  password hash.to_s
end

Я надеюсь, что хотя бы один из этих методов будет работать:)

С уважением, Jarek

0 голосов
/ 23 мая 2018

Существует несколько способов установить пароль пользователя.Если вы хотите использовать ресурс bash, вы можете сделать это:

# Backslashes are escaped because of ruby
bash 'analytics_password' do
  code <<-EOH
    echo -e "#{password}\\n#{password}\\n" | passwd adminblah
  EOH
  sensitive true
end

Приведенный выше эхо-сигнал повторяет ввод и подтверждение пароля, если вы запустили его в командной строке.

Вы можететакже обратите внимание на использование chpasswd вместо этого (если доступно):

bash 'analytics_password' do
  code <<-EOH
    echo "adminblah:#{password}" | chpasswd
  EOH
  sensitive true
end

В обоих вышеупомянутых случаях свойство sensitive скрывает любой потенциальный вывод пароля в журналах Chef.

Наилучшим вариантом, вероятно, будет поиск ресурса user.Это немного сложнее, так как вам нужно создать Password Shadow Hash (примеры приведены в ссылке), но это следует учитывать.

...