Я управляю своими хозяевами с помощью марионетки. Хосты используют двойной стек IPv4 и IPv6. Я хочу добавить оба адреса в / etc / hosts. Когда я добавлял его вручную, мой файл / etc / hosts выглядел так:
192.0.2.1 hostname.example.com hostname
2001:db8::1 hostname.example.com hostname
Я пытаюсь сделать это с помощью марионетки, но все еще могу добавлять хосты в / etc / hosts вручную.
Моей первой попыткой был следующий манифест:
host {
"hostname.example.com":
ip => '192.0.2.1',
host_alias => ["hostname"],
;
"hostname-v6.example.com":
ip => '2001:db8::1',
host_alias => ["hostname","hostname.example.com"],
;
}
В результате получится следующий файл / etc / hosts:
192.0.2.1 hostname.example.com hostname
2001:db8::1 hostname-v6.example.com hostname.example.com hostname
Это будет работать, но введет ненужное второе имя хоста, которое некоторые приложения (например, pythons getfqdn ()) будут возвращать как имя хоста по умолчанию.
Когда я пытаюсь разделить имя ресурса и имя хоста в / etc / hosts вот так:
host {
"ip4-host":
name => "hostname.example.com",
ip => '192.0.2.1',
host_aliases => ["hostname"],
alias => 'ipv4-hostname',
;
"ip6-host":
name => "hostname.example.com",
ip => '2001:db8::1',
host_aliases => ["hostname"],
alias => 'ipv6-hostname',
;
}
Я получу следующую ошибку:
Cannot alias Host[ipv6-host] to ["hostname.example.com"] at (file: /etc/puppetlabs/code/environments/production/site/mymodule/manifests/init.pp, line: 23); resource ["Host", "hostname.example.com"] already declared (file: /etc/puppetlabs/code/environments/production/site/mymodule/manifests/init.pp, line: 19) (file: /etc/puppetlabs/code/environments/production/site/mymodule/manifests/init.pp, line: 23, column: 9) on node hostname.example.com
где строка 19 - это первый ресурс хоста, а 23 - второй.
В настоящее время я пишу свои / etc / hosts с помощью шаблона, но из-за этого я теряю возможность добавлять записи вручную.
Есть ли у вас другие идеи?
У вас есть два семейства адресов и два имени (имя хоста и имя хоста.example.com). Если это не позволяет вам назвать оба ресурса одинаково, используйте одно имя для каждого семейства и добавьте другое в качестве псевдонима.