При расширении марионеточного модуля, который должен управлять /etc/network/interfaces
, я столкнулся со следующей проблемой:
Старый модуль просто считывает некоторые переменные из hiera и создает файл с одним интерфейсом через шаблон. Чтобы снять это ограничение, я добавил к hiera хеш, содержащий другие интерфейсы и их параметры. Я хочу добавить их в файл интерфейсов через модуль puppet-concat.
Но если сначала объявляется файл для шаблона, а затем файл для concat, выдается ошибка объявления дубликата.
Как я могу сначала использовать шаблон, а затем объединить его с файлом? Или это невозможно?
Ошибка: не удалось получить каталог с удаленного сервера: ошибка 400 на СЕРВЕРЕ: ошибка оценки: ошибка при оценке утверждения ресурса, ошибка оценки: ошибка при оценке утверждения ресурса, повторяющееся объявление: .... / modules / lip_network / manifest / debian .pp: 16 нельзя повторно объявить в /etc/puppetlabs/code/modules/concat/manifests/init.pp:179 в ... / init.pp: 179: 5 в ... / modules / lip_network / manifest / debian. стр: 21
Код класса:
class lip_network::debian
{
$ipaddress = $::lip_network::ipaddress
$netmask = $::lip_network::netmask
$gateway = $::lip_network::gateway
$dns1 = $::lip_network::dns1
$domain = $::lip_network::domain
$iface = $::lip_network::iface
package { 'resolvconf':
ensure => latest,
}
file { '/etc/network/interfaces':
mode => '0644',
owner => 'root',
content => template("${module_name}/interfaces.erb"),
}
concat { '/etc/network/interfaces':
ensure => present,
}
$interface_configs = hiera_hash(lip_network_multi_interfaces::interfaces)
$interface_list = keys($interface_configs)
concat::fragment { "test_interfaces":
target => '/etc/network/interfaces',
content => 'auto em0\niface em0 inet static',
order => "10"
}
# apparently /etc/init.d/networking does not regenerate
exec { 'iface restart':
command => "ifdown ${iface} ; ifup ${iface}",
refreshonly => true,
subscribe => File['/etc/network/interfaces'],
}
}