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

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

Есть ли у вас другие идеи?

0
задан 11 August 2019 в 08:44
1 ответ

У Вас есть два семейства адресов и два имени (имя хоста и hostname.example.com). Если это не позволит Вам назвать оба из ресурсов, то же затем использует одно название каждого семейства и добавляет другой как псевдоним.

0
ответ дан 23 November 2019 в 22:21

Теги

Похожие вопросы