не могу получить требуемую работу с файлом в модуле puppet - PullRequest
0 голосов
/ 23 мая 2011

я пытаюсь запустить следующий код:

class common 
{
    ...
    # common packages
    package 
    { 
        ["lsb-release", "figlet"]: ensure => installed,
    }
    # Print some information if someone logs in:
    file { "/etc/motd":
        #require => [ Package["figlet"], File["/usr/bin/figlet"] ],
        require => Package["figlet"],
        content => generate('/usr/bin/env', '/usr/bin/figlet','-w', '186', '-p', '-f', 'banner', "$hostname"),
    }

    ....
}

не должно ли это работать?

я получаю следующую ошибку:

err: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to execute generator /usr/bin/env: Execution of '/usr/bin/env /usr/bin/figlet -w 186 -p -f banner hostname' returned 127: /usr/bin/env: /usr/bin/figlet: No such file or directory
 at /etc/puppet/modules/common/manifests/init.pp:37 on node puppetmaster.local
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

сначала у меня не было необходимости (строка 12) и пакета (строка 5-8) в коде, чтобы исправить ошибки, о которых я думал, я могу просто добавить строку 12 (требуется пакетный пример), но это не работает. поэтому я добавил пакетный пример, но ошибка не исчезла.

как добавить эту зависимость? Разве марионетка не должна бегать по коду и не пропускать прогон полностью?

1 Ответ

1 голос
/ 23 мая 2011

generate () запускается на сервере, а не на клиенте.(Это функция синтаксического анализа, поэтому имеет для запуска на сервере)

Класс, как вы написали, будет гарантировать, что клиенты установят на них figlet, но затем попытается запустить figletна марионетку.Просто установите figlet на ваших puppetmasters, и вам не понадобятся ресурсы пакета.

Также используйте шрифт smslant, а не banner:)

...