Я не нашел элегантного способа добавить несколько строк в существующий файл.
Я заметил Простые текстовые шаблоны вики-страницу, но мне нужно добавить блок в /etc/network/interfaces
.
Есть подсказка?
Я согласен, что Augeas - безусловно, лучший ответ на то, что вы пытаетесь.
Я бы также рекомендовал file_line
ресурс из stdlib кукольная библиотека. Как правило, он намного легче, чем augeas.
Вам нужно будет определить один ресурс для каждой строки, и, если порядок важен, вы можете добавить зависимости между вызовами.
Пример использования:
file_line { "no_ipv6_networking":
path => "/etc/sysconfig/network",
line => "NETWORKING_IPV6=no",
match => "^NETWORKING_IPV6=",
}
Вы можете использовать augeas
type для этого, но идеальным решением было бы использовать netcf
поскольку вы хотите управлять сетевыми интерфейсами.
Некоторое время назад я начал Поставщик Puppet Netcf. Это все еще не готов к производству, но если у вас есть некоторые навыки Ruby, это, вероятно, лучшее решение для ваших нужд (и PR тоже безусловно приветствуются).
Провайдер Netcf принимает в качестве входных данных определение интерфейса XML, например:
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>
';
}
Вы можете найти больше примеров определений XML в репозиторий Netcf.