cloud-init игнорирует статическую конфигурацию IP-сети - PullRequest
0 голосов
/ 14 октября 2019

Я запускаю образ облака Ubuntu 18.04 и пытаюсь настроить сеть через cloud-init. По какой-то причине он игнорирует мою сеть, когда я пытаюсь назначить статический IP, и просто возвращается к использованию DHCP. Я не уверен, почему, и я не уверен, как отладить это. Кто-нибудь знает, если я делаю что-то не так или как мне следует дополнительно устранить эту проблему:

Вот мой config.yaml, который я использую для генерации config.img:

#cloud-config
network:
    version: 2
    ethernets:
        ens2:
            dhcp4: false
            dhcp6: false
            addresses: [10.0.0.40/24]
            gateway4: 10.0.0.1
password: secret # for the 'ubuntu' user in case we can't SSH in
chpasswd: { expire: false }
ssh_pwauth: true
users:
    - default
    - name: brennan
      ssh_import_id: gh:brennancheung
      sudo: ALL=(ALL) NOPASSWD:ALL
hostname: vm
runcmd:
    - [ sh, -xc, "echo Here is the network config for your instance" ]
    - [ ip, a ]
final_message: "Cloud init is done.  Woohoo!"

Всеиначе в конфиге, кажется, работает, как будто он даже не видит часть network.

Я присоединяю .img как cdrom, чтобы прочитать cloud-init,Вы можете увидеть, как я запускаю его здесь: https://github.com/brennancheung/playbooks/blob/master/cloud-init-lab/Makefile

ПРИМЕЧАНИЕ. После входа в окно я могу заменить конфигурацию в /etc/netplan на раздел network выше и повторно применитьэто и сеть подходит со статическим IP. Поэтому я думаю, что нет никаких очевидных ошибок, которые я пропускаю. Это наводит меня на мысль, что это связано с сетевым модулем (модулями) cloud-init, а не с самим netplan.

1 Ответ

0 голосов
/ 14 октября 2019

Я наконец понял это. Надеюсь, это поможет кому-то еще.

Очевидно, вы не можете предоставить сетевую конфигурацию в user-data. Вы должны указать это в источнике данных поставщика облачных услуг или в метаданных. Для этого необходимо переместить сетевой раздел в отдельный файл и создать образ cloud-init с параметром --network-config=....

Пример:

cloud-localds -v --network-config=network-config-v2.yaml seed.img user-data.yaml

У меня есть полная настройка для настройки и загрузки экземпляра облака в локальном KVM, если это поможет кому-то еще.

https://github.com/brennancheung/playbooks/tree/master/cloud-init-lab

...