Como adicionar várias linhas para arquivar com o Puppet

3

Não encontrei nenhuma maneira elegante de adicionar várias linhas a um arquivo existente.

Eu notei a página wiki Padrões simples de texto , mas tenho que adicionar um bloco em /etc/network/interfaces .

Alguma pista?

    
por Mike Aski 17.01.2013 / 08:02

2 respostas

4

Concordo que o augeas é de longe a melhor resposta para o que você está tentando.

Eu também recomendaria o recurso file_line da biblioteca de fantoches stdlib . Ele tende a ser muito mais leve que o augeas.

Você teria que definir um recurso para cada linha, e se a ordem for importante, você pode adicionar dependências entre as invocações.

Uso da amostra:

        file_line { "no_ipv6_networking":
            path  => "/etc/sysconfig/network",
            line  => "NETWORKING_IPV6=no",
            match => "^NETWORKING_IPV6=",
        }
    
por 17.01.2013 / 11:12
3

Você pode usar o tipo augeas para isso, mas a solução ideal seria usar netcf desde que você deseja gerenciar interfaces de rede.

Há algum tempo, iniciei um provedor Netcf do Puppet . Ainda não está pronto para produção, mas se você tem algumas habilidades em Ruby, provavelmente é a melhor solução para sua necessidade (e os PRs também são bem-vindos).

O provedor Netcf usa uma definição de interface XML como entrada, por exemplo:

netcf_if {"eth1":
  ensure     => up,
  definition => '
<interface type="ethernet" name="eth1">
  <start mode="onboot"/>
  <protocol family="ipv4">
    <ip address="192.168.0.5" prefix="24"/>
    <route gateway="192.168.0.1"/>
  </protocol>
</interface>
';
}

Você pode encontrar mais exemplos de definições XML em o repositório Netcf .

    
por 17.01.2013 / 11:01

Tags