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

Поиск параметров марионетки

Я хотел бы знать, можно ли найти значение другого ресурса Puppet, как в следующем примере:

define foo( $username ) {
    $home = User[$username].home
    ....
}

Приведенный выше синтаксис не работает, но, вероятно, потому, что я недостаточно хорошо знаю Ruby.

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

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

В любом случае, мне кажется, вам просто нужно структурировать свой код совсем не так, как вы хотите. Потратьте некоторое время на изучение сложных модулей марионеток и поймите, как они делают то, что делают.

У Puppet есть свой язык, он не использует Ruby. Вы можете определить ресурс, как показано ниже:

define add_user ( $uid ) {
    $username = $title
    user { $username:
        home    => "/home/$username",
        shell   => "/bin/bash",
        uid     => $uid
    }
}

и назовите его:

add_user { tom:
    uid      => 501
}

Читать далее...