Назад | Перейти на главную страницу

Добавьте несколько IP-адресов для одного хоста в / etc / hosts с помощью марионетки

Я управляю своими хозяевами с помощью марионетки. Хосты используют двойной стек 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). Если это не позволяет вам назвать оба ресурса одинаково, используйте одно имя для каждого семейства и добавьте другое в качестве псевдонима.