Puppet

將 exec 與 puppet 設備管理一起使用?

  • January 4, 2016

我正在嘗試使用 puppet 的網路設備管理功能來配置 Cisco 路由器。

我知道它只是在執行 ios 命令,那麼如何通過讓它執行我自己的 ios 命令來擴展它?我想用它來創建我自己的事實並做其他事情。

在 Windows 端點上,我可以使用 exec 執行 shell 命令:

exec { 'test':
     command => 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy remotesigned -file C:\test.ps1',
   }

我怎樣才能用 puppet 設備做這樣的事情?

當我嘗試執行 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

設備資源類型的內部工作在清單級別是不可訪問的。interfaceand類型將vlan其全部抽象掉。

要添加功能,您實際上需要添加自己的類型和提供程序。這需要大量的 Ruby 黑客攻擊。如果你覺得可以,你會想看看

  1. 現有類型程式碼(interfacevlan
  2. 現有提供程序(介面vlan
  3. 他們的基礎提供者只是一個薄層
  4. Puppet的cisco支持程式碼

可能很難將對此的任何擴展塞進一個模組中,因此實際維護您自己的 Puppet 分支然後嘗試將其合併到上游可能更直接。

引用自:https://serverfault.com/questions/744102