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

Используете exec с управлением марионеточными устройствами?

Я пытаюсь использовать кукольный управление сетевым устройством возможность настройки маршрутизаторов 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. Если вы готовы к этому, вам захочется посмотреть на

  1. существующий код типа (интерфейс и влан)
  2. существующие провайдеры (интерфейс и влан)
  3. их базовый провайдер это просто тонкий слой вокруг
  4. Куклы поддержка cisco код

Скорее всего, будет сложно втиснуть какие-либо расширения для этого в модуль, поэтому может быть проще фактически поддерживать свою собственную ветку самого Puppet, а затем попытаться объединить ее в восходящем направлении.

Вы можете попробовать запустить команду без сокращения, например: show ip interface ..., и если вы по-прежнему получаете ту же ошибку, я подозреваю, что это не вызвано puppet-device. Хотя это такая же реализация, как для Linux или Windows, но у нее очень ограниченные возможности.

Ошибка, которую вы получаете, также звучит так, будто команда недоступна.

Если вы прочитаете страница руководства там ясно сказано:

Получает все конфигурации от мастера марионеток и применяет их к удаленным устройствам, настроенным в /etc/puppetlabs/puppet/device.conf.

В разделе ОПЦИИ вы можете прочитать:

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

sh ip ... не является командой или параметром конфигурации, которую вы можете применить, и я думаю, вы не сможете выполнить ее таким образом.