É assim que eu gerencio arquivos ifcfg com fantoches. Eu crio um diretório em files/
para cada host, por exemplo:
modules/network/files/foohostname/
modules/network/files/someotherhostname/
Em seguida, em modules/network/manifests/init.pp
, faço o seguinte:
- Copie todos os arquivos em
modules/network/files/hostname/
para o diretório de scripts de rede no host.
- Execute
service network start
ou /etc/init.d/network start
quando qualquer arquivo for adicionado / alterado. Descobri que service network start
exibirá todas as interfaces que ainda não estão ativadas, mas não eliminará minhas conexões de rede existentes.
class network {
# copy all ifcfg files from files/hostname/ directory to network-scripts/
# other files in network-scripts/ will not be touched.
file { '/etc/sysconfig/network-scripts/':
recurse => true,
purge => false,
owner => root,
group => root,
ignore => '\.svn', # this is specific to me as I use svn.
source => "puppet:///modules/network/${hostname}/",
}
# if anything changes with the above File resource, then fire network start to bring them up.
# this won't restart the network, only bring up any ifaces that are not up yet.
exec{ 'network-ifup':
command => 'service network start',
refreshonly => true,
subscribe => File['/etc/sysconfig/network-scripts/'],
}
}
FYI alguns dos itens acima podem ser um pouco específicos do CentOS / RHEL.