Usando exec com gerenciamento de dispositivos fantoche?

1

Estou tentando usar o recurso de gerenciamento de dispositivos de rede dos fantoches para configurar os roteadores Cisco.

Eu sei que apenas está executando comandos ios, então como posso estendê-lo fazendo com que ele execute meus próprios comandos ios? Eu quero usar isso para criar meus próprios fatos e fazer outras coisas.

Em um endpoint do Windows, posso usar exec para executar comandos do shell:

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

Como posso fazer algo assim com o fantoche?

Quando tentei executar um comando ios, ocorreu um erro:

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
    
por red888 18.12.2015 / 23:15

2 respostas

1

O funcionamento interno dos tipos de recursos do dispositivo está inacessível no nível do manifesto. Os tipos interface e vlan abstraem tudo isso.

Para adicionar funcionalidade, você precisará adicionar seus próprios tipos e provedores. Isso requer alguns hacks Ruby substanciais. Se você se sentir bem, você vai querer olhar para

  1. o código de tipo existente ( interface e vlan )
  2. os provedores existentes ( interface e vlan )
  3. o provedor de base , que é apenas uma camada fina em torno de
  4. suporte do cisco do Puppet

Provavelmente será difícil empilhar quaisquer extensões para isso em um módulo, então pode ser mais simples manter a própria ramificação do próprio Puppet e então tentar combiná-lo com o upstream.

    
por 04.01.2016 / 15:36
0

Você pode tentar executar o comando sem encurtar como: show ip interface ... , e se você ainda obtiver o mesmo erro, então, eu suspeito que, ele não é impelido por puppet-device . Embora seja uma implementação semelhante, como para uma caixa Linux ou Windows, mas tem uma capacidade muito limitada.

O erro que você está recebendo também parece que o comando não está disponível.

Se você ler a página de manual , ela diz claramente:

Retrieves all configurations from the puppet master and apply them to the remote devices configured in /etc/puppetlabs/puppet/device.conf.

Em OPÇÕES, você pode ler:

Note that any setting that's valid in the configuration file is also a valid long argument. For example, 'server' is a valid configuration parameter, so you can specify '--server servername' as an argument.

sh ip ... não é um comando de configuração ou opção que você pode aplicar e eu acho que você não poderá executá-lo assim.

    
por 19.12.2015 / 01:14