Я пытаюсь использовать кукольный управление сетевым устройством возможность настройки маршрутизаторов Cisco.
Я знаю, что он просто выполняет команды ios, так как я могу расширить его, запустив мои собственные команды ios? Я хочу использовать это, чтобы создавать свои собственные факты и делать другие вещи.
В конечной точке Windows я могу использовать exec для запуска команд оболочки:
exec { 'test':
command => 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy remotesigned -file C:\test.ps1',
}
Как я могу сделать что-то подобное с марионеточным устройством?
Когда я попытался запустить команду ios, она выдала ошибку:
exec { 'test':
command => 'show ip int bri'
}
Info: Caching catalog for 123.123.123.123
Error: Failed to apply catalog: Validation of Exec[test] failed: 'show ip int bri' is not qualified and no path was specified. Please qualify the command or specify a path. at /etc/puppet/environments/production/modules/ciscorouterconfig/manifests/init.pp:82
shell returned 1
Внутренняя работа типов ресурсов устройства недоступна на уровне манифеста. В interface
и vlan
типы абстрагируют все это.
Чтобы добавить функциональность, вам действительно нужно будет добавить свои собственные типы и провайдеры. Это требует серьезного взлома Ruby. Если вы готовы к этому, вам захочется посмотреть на
Скорее всего, будет сложно втиснуть какие-либо расширения для этого в модуль, поэтому может быть проще фактически поддерживать свою собственную ветку самого Puppet, а затем попытаться объединить ее в восходящем направлении.
Вы можете попробовать запустить команду без сокращения, например: show ip interface ...
, и если вы по-прежнему получаете ту же ошибку, я подозреваю, что это не вызвано puppet-device
. Хотя это такая же реализация, как для Linux или Windows, но у нее очень ограниченные возможности.
Ошибка, которую вы получаете, также звучит так, будто команда недоступна.
Если вы прочитаете страница руководства там ясно сказано:
Получает все конфигурации от мастера марионеток и применяет их к удаленным устройствам, настроенным в /etc/puppetlabs/puppet/device.conf.
В разделе ОПЦИИ вы можете прочитать:
Обратите внимание, что любой параметр, допустимый в файле конфигурации, также является допустимым длинным аргументом. Например, "server" - допустимый параметр конфигурации, поэтому вы можете указать "--server servername" в качестве аргумента.
sh ip ...
не является командой или параметром конфигурации, которую вы можете применить, и я думаю, вы не сможете выполнить ее таким образом.