У меня возникли проблемы с настройкой полной автономной установки для Ubuntu Server Focal (ARM) на Raspberry pi 4 с использованием конфигурации облачной инициализации. Вся цель этого - упростить замену SD-карты в случае сбоя. Я пытаюсь использовать файлы конфигурации cloud-init, чтобы применить статическую конфигурацию для lan / wlan, создать нового пользователя, добавить авторизованные ключи ssh для нового пользователя, установить докер и т. Д. Однако, что бы я ни делал, кажется, что настройки Wi-Fi не применяются перед первой перезагрузкой.
Шаг 1: запишите образ на SD-карту. Шаг 2: перезапишите sd-карту system-boot / network_config и system-boot / user-data с помощью файлов конфигурации
сетевая конфигурация
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
optional: true
addresses: [192.168.100.8/24]
gateway4: 192.168.100.2
nameservers:
addresses: [192.168.100.2, 8.8.8.8]
wifis:
wlan0:
optional: true
access-points:
"AP-NAME":
password: "AP-Password"
dhcp4: false
addresses: [192.168.100.13/24]
gateway4: 192.168.100.2
nameservers:
#search: [mydomain, otherdomain]
addresses: [192.168.100.2, 8.8.8.8]
данные пользователя
chpasswd:
expire: true
list:
- ubuntu:ubuntu
# Enable password authentication with the SSH daemon
ssh_pwauth: true
groups:
- myuser
- docker
users:
- default
- name: myuser
gecos: My Name
primary_group: myuser
groups: sudo
shell: /bin/bash
ssh_authorized_keys:
- ssh-rsa AAAA....
lock_passwd: false
passwd: $6$rounds=4096$7uRxBCbz9$SPdYdqd...
packages:
- apt-transport-https
- ca-certificates
- curl
- gnupg-agent
- software-properties-common
- git
runcmd:
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
- add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- apt-get update -y
- apt-get install -y docker-ce docker-ce-cli containerd.io
- systemctl start docker
- systemctl enable docker
## TODO: add git deployment and configure folders
power_state:
mode: reboot
Во время первой загрузки cloud-init всегда применяет конфигурацию резервной сети.
Я также попытался применить безголовую конфигурацию для Wi-Fi, как описано здесь.
Создал wpa_supplicant.conf и скопировал его в системную загрузочную папку SD.
trl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=RO
network={
ssid="AP-NAME"
psk="AP-Password"
}
Также создал пустой файл ssh и скопировал его в загрузочную систему
Команды запуска всегда завершаются ошибкой, поскольку во время первой загрузки cloud-init применяет резервную конфигурацию сети. После перезагрузки применяются настройки lan / wlan, создается пользователь, добавляются авторизованные ключи ssh. Однако мне все еще нужно использовать ssh в PI и установить остальные пакеты: докер и т. Д., И я хотел избежать этого. Я делаю что-то неправильно?