Марионеточная конфигурация для создания файла

Я пытаюсь создать бродячее поле для использования для разработки с Марионеткой как поставщик. Я хочу установить определенный .bashrc для бродячего пользователя.

Вот мои соответствующие файлы.

dev.pp:

class dev {

    $target = "dev"
    $root_dir = "/home/vagrant/demo"
    $user = "demo"
    $group = "demo"

    class { "demo":
        target => $target,
        root_dir => $root_dir,
        user => $user,
        group => $group;
    }

    class { "demo::app::site": }

}

class { "dev": }

modules/demo/manifests/init.pp:

class demo ($target, $root_dir, $user, $group) {

    group { $group:
        ensure => present;
    }

    user { $user:
        ensure     => present,
        managehome => true,
        shell      => '/bin/bash',
        gid        => $user,
        require    => Group[$group];
    }

    file {
        $root_dir:
            owner   => $user,
            group   => $group,
            ensure  => directory,
            require => User[$user];        
    }

    file { "/home/${user}/.bashrc":
        ensure => present,
        owner   => $user,
        group   => $group,
        mode    => '755',
        content => template("${module_name}/bashrc.erb"),
        require => User[$user];
    }

    if $target == 'dev' {
        file { $source_dir:
            owner   => $user,
            group   => $group,
            ensure  => directory,
            require => [File[$root_dir], User[$user]];
        }
    }
}

modules/demo/manifests/user.pp:

define demo::user ($ensure=present, $groups=[]) {

  $user = $name

  user { $user:
    ensure     => $ensure,
    groups     => $groups,
    home       => "/home/$user",
    managehome => true,
    shell      => '/bin/bash';
  }

}

Все, кажется, хорошо работает. Я могу выполнить "бродячий ssh", и я получаю приглашение командной строки VM. Но .bashrc файл не является тем, определенным здесь:

content => template("${module_name}/bashrc.erb"),

И если я удаляю его вручную, это никогда не создается снова из "бродячего условия". Кажется, что определение ресурса файла никогда не выполняется. Я плохо знаком с Марионеткой, но я думал, что все, что объявляется в классе, должно быть выполнено. И класс правильно требуется, потому что все остальное хорошо работает. Есть ли любые способы для меня отладить, использование 'уведомляют', не полезно здесь.

3
задан 15 February 2015 в 22:17
1 ответ

Вы хотели управлять /home/vagrant/.bashrc , но вы установили:

$user = "demo"

, который будет использоваться позже:

file { "/home/${user}/.bashrc":
    ensure => present,
    owner   => $user,

, поэтому вам просто нужно изменить пользовательская переменная - vagrant.

1
ответ дан 3 December 2019 в 07:27

Теги

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