cloud-init игнорирует конфигурацию статической IP-сети
Я запускаю облачный образ 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
сам.
2 ответа
Я наконец понял это. Надеюсь, это поможет кому-то другому.
По-видимому, вы не можете предоставить сетевую конфигурацию в 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
Если вы заметили, в /etc/cloud/cloud.cfg.d существует файл с именем 99-fake-cloud.cfg (или что-то подобное). Если вы удалите это, то cloud-init настроит сеть, используя параметры в вашем файле пользовательских данных (т.е. - /etc/cloud/cloud.cfg)