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

Я пытаюсь использовать функцию Puppet управление сетевым устройством для настройки маршрутизаторов 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
1
задан 19 December 2015 в 00:29
2 ответа

На манифестном уровне недоступны внутренние механизмы работы с типами ресурсов устройства. Интерфейс и типы vlan все это абстрагирует.

Для добавления функциональности необходимо добавить собственные типы и провайдеры. Это требует некоторого существенного взлома Ruby. Если вы чувствуете, что готовы к этому, вы захотите посмотреть на

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

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

1
ответ дан 3 December 2019 в 23:54

Можно попробовать запустить команду без сокращений, например: показать ip интерфейс ..., и если вы все равно получите ту же ошибку, я подозреваю, что она не подталкивается к марионеточному устройству. Хотя это похожая реализация, как для linux или windows box, но она имеет очень ограниченные возможности.

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

Если вы прочитаете man page, то увидите:

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

В разделе ВНИМАНИЕ вы можете прочитать:

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

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

.
0
ответ дан 3 December 2019 в 23:54

Теги

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