使用 exec 和 puppet 设备管理吗?

使用 exec 和 puppet 设备管理吗?

我正在尝试使用木偶网络设备管理配置思科路由器的功能。

我知道它只是运行 ios 命令,那么如何通过让它运行我自己的 ios 命令来扩展它?我想用它来创建我自己的事实并做其他事情。

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

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

设备资源类型的内部工作原理在清单级别无法访问。interfacevlan类型将其全部抽象化。

要添加功能,您实际上需要添加自己的类型和提供程序。这需要一些大量的 Ruby 黑客攻击。如果您愿意,您可以查看

  1. 现有类型代码(界面虚拟局域网
  2. 现有的供应商(界面虚拟局域网
  3. 他们的基础提供商这只是一层薄薄的
  4. 木偶的思科支持代码

将任何扩展塞进模块可能会很困难,因此实际上维护自己的 Puppet 分支然后尝试将其合并到上游可能会更直接。

答案2

您可以尝试运行不缩写的命令,例如:show ip interface ...,如果仍然出现相同的错误,那么我怀疑它不是由实现的puppet-device。虽然它与 Linux 或 Windows 框的实现类似,但功能非常有限。

您收到的错误听起来也像是命令不可用。

如果你读过手册页它明确指出:

从 Puppet Master 检索所有配置并将其应用到 /etc/puppetlabs/puppet/device.conf 中配置的远程设备。

在 OPTIONS 下你可以看到:

请注意,配置文件中有效的任何设置也是有效的长参数。例如,“server”是有效的配置参数,因此您可以指定“--server servername”作为参数。

sh ip ...不是您可以应用的配置命令或选项,我猜您将无法像这样执行它。

相关内容