Назад | Перейти на главную страницу

Как сделать так, чтобы марионетка использовала локальный (на главном) хэш пароля для пользователей?

Мы определяем пользователей как таковых:

user { 'belmin':
    ensure          => present,
    uid             => 308,
    comment         => 'Belmin Fernandez',
    managehome      => true,
    password        => '$6$NrtZpXEauUqjdRh0$vE9oJwbNTSWVCGrlDe4KHXFB0KXY7hszSas3v0DZvhUej4SIb/WLfaCy.lmSU7Hh8AAvAbPuDRai2p1X9mDcM0',
}

Я хочу определить тип, который будет выглядеть в /etc/shadow local для мастера марионетки и, если пользователь присутствует, используйте вместо этого хэш пароля. Что-то вроде:

define our_user ($user = $title, $uid, $fullname, $default_hash) {

    $shadow_hash = get_hash_from_local_shadown_somehow

    if $shadow_hash == '' {
        $shadow_hash = $default_hash
    }

    user { $user:
        ensure          => present,
        uid             => $uid,
        comment         => $fullname,
        managehome      => true,
        password        => $shadow_hash,
    }
}

Что бы get_hash_from_local_shadown_somehow быть в этом случае? Я вижу файловая функция в puppet но не знаю, как использовать это для решения этой проблемы, так как мне понадобится дополнительная обработка текста.

Примечание: я знаю, что централизованная проверка подлинности была бы самым разумным способом, но на данный момент это не прямой вариант.

Нашел способ сделать это через Форум кукол используя генерировать функция:

Для этого вы можете использовать функцию generate ().

По сути, вы должны создать сценарий, который выполняет любую необходимую вам обработку, а затем $ shadow_hash = generate ('/ path / to / script').

Я написал простой сценарий bash для получения хеша:

#!/bin/bash

SHADOW_FILE='/etc/shadow'

awk -F: "\$1 == \"$@\"" ${SHADOW_FILE} | awk -F: '{print $2}' || echo ''

И generate функция выглядит так:

$shadow_hash = generate('/bin/bash','/usr/local/sbin/extract_shadow_hash', $user)

Надеюсь, это поможет кому-то другому. Похоже на функцию, которая может быть полезна в ряде случаев использования.