Осуществление хешированных полномочий корневого каталога с марионеткой

Перейдите к Меню "Пуск", установите время и дату в разделе Clock, Языке, и регионе, интернет-вкладке Time, измените настройки и поместите свой сервер ntp в поле Server.

3
задан 11 September 2011 в 03:48
3 ответа

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

Другим возможным решением могло бы быть написание плагина для марионетки, который позволил бы вам использовать новый тип данных (скажем, file_wildcard) или что-то в этом роде. Это должно быть возможно написать на Ruby, но я этого никогда не делал.

2
ответ дан 3 December 2019 в 07:12

Марионетка не распознает подстановочные знаки в типах файлов. Если вы используете что-то вроде этого:

file { "/home/*":
            ensure  => directory,
            owner   => $username,
            group   => $username,
            mode    => 700,
            require => [ User[$username], Group[$username] ]
    }

, будет создана папка / home / \ * .

Итак, вы должны создать структуру каталогов, которая вам нужна, как показано ниже:

define add_user ( $fullname, $uid ) {

    $username = $title
    $firstletter = regsubst($username, '(.).*', '\1')
    $secondletter = regsubst($username, '.(.).*', '\1')

    user { $username:
            comment => "$fullname",
            home    => "/home/$firstletter/$secondletter/$username",
            shell   => "/bin/bash",
            uid     => $uid,
            require => [ File["/home/$firstletter"], File["/home/$firstletter/$secondletter"] ]
    }

    group { $username:
            gid     => $uid,
            require => User[$username]
    }

    file { "/home/$firstletter":
            ensure  => directory,
            owner   => root,
            group   => root,
            mode    => 755
    }
    file { "/home/$firstletter/$secondletter":
            ensure  => directory,
            owner   => root,
            group   => root,
            mode    => 755,
            require => File["/home/$firstletter"]
    }
    file { "/home/$firstletter/$secondletter/$username":
            ensure  => directory,
            owner   => $username,
            group   => $username,
            mode    => 700,
            require => [ File["/home/$firstletter/$secondletter"], User[$username], Group[$username] ]
    }

    file { "/home/$firstletter/$secondletter/$username/.ssh":
            ensure  => directory,
            owner   => $username,
            group   => $username,
            mode    => 700,
            require => File["/home/$firstletter/$secondletter/$username"]
    }

    # now make sure that the ssh key authorized files is around
    file { "/home/$firstletter/$secondletter/$username/.ssh/authorized_keys":
            ensure  => present,
            owner   => $username,
            group   => $username,
            mode    => 600,
            require => File["/home/$firstletter/$secondletter/$username"]
    }
}

, и вызвать ее с помощью :

node 'test_node' {
    add_user { lars:
        fullname    => "Larry Page",
        uid         => 510
    }
}
0
ответ дан 3 December 2019 в 07:12

You need to either declare the File resource(s) you want Puppet to manage (Puppet is a declarative language...) to puppet or your looking at using the exec type to execute the chmod code snippet you gave.

0
ответ дан 3 December 2019 в 07:12

Теги

Похожие вопросы