Hypriot OS на Raspberry PI: пользовательские данные для cloud-init игнорируются

Я пытаюсь настроить Raspberry PI 3b+, используя HypriotOS 1.9 с Cloud init. Для этого я положил user-data файл в корень загрузочного тома. Согласно документам, это должно быть выполнено автоматически и выполнить изменения, описанные в файле (например, изменить имя хоста).

Тем не менее, ни одно из этих изменений не происходит, и просмотр результатов журнала cloud-init, похоже, не указывает на то, что файл даже правильно выбран.

Я использую утилиту hypriot flash для копирования файлов в целевую ОС. когда я монтирую SD-карту и проверяю, скопированы ли пользовательские данные и действительны ли yaml - тогда действительно так и есть.

Кто-нибудь испытывал что-то подобное или имеет хорошее представление о том, что происходит?

Больше информации:

пользовательские данные (шаблон, фактические значения интерполируются):

# vim: set ts=2 sw=2 filetype=yaml:
---
hostname: $TEMPLATE_HOSTNAME
manage_etc_hosts: true

users:
  - name: r9s
    gecos: "Raspbernetes User"
    sudo: ALL=(ALL) NOPASSWD:ALL
    shell: /bin/bash
    groups: users,docker,video,input
    plain_text_passwd: r9spwd
    lock_passwd: true
    ssh_pwauth: false

locale: "de_DE.UTF-8"
timezone: "Europe/Berlin"

write_files:
  - content: |
      allow-hotplug: wlan0
      iface wlan0 inet dhcp
      wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
      iface default inet dhcp
    path: /etc/network/interfaces.d/wlan0
  - content: |
      country=de
      ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
      update_config=1
      network={
        ssid="$TEMPLATE_SSID"
        psk="$TEMPLATE_PSK"
        proto=RSN
        key_mgmt=WPA-PSK
        pairwise=CCMP
        auth_alg=OPEN
      }
    path: /etc/wpa_supplicant/wpa_supplicant.conf
ssh_authorized_keys:
  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSkvewNpUkKQp/uXNEAMkqQyEjZeLQmcVje9XStvn92cNq3NO2Ij6S+pBtGcB4IYxYjjT8Nv5GxUDS51gZYg/F2Blr4jnOKXkpSyRZwRFiZ05dNaU6DRjK9ETujAdTYa7jmsrbZEejuG8YcVlfJkOvQeRxI+Y6pgAw+hl9ZwcQ8oHwcZbPFJgCbDgOUv6IssLNbKvLgt/vKHcd74oHVN9y+NtpLk4+mdWCzLv/STjshZVxP/Xz896irIBuKEnPhNO1qvTctTVJpEBvwGjA/RgFVjLpY8gSwLHlr5vTcLtKgyMZ7+xr6iKFlSPQovfugokJ5eBYG5Zn4oAy99KuVJbB matthias@rusty-nail
runcmd:
  - 'systemctl restart avahi-daemon'
  - 'ifup wlan0'

вывод cloud-init.log на pastebin (из-за многословия)

1 ответ

Решение

Ответ состоял в том, что файлы пользовательских данных должны начинаться со строки, содержащей именно эту последовательность:

#cloud-config 

если нет, файл игнорируется и пропускается, как если бы его там не было. Это фактически задокументировано в облачных документах init. Тем не менее, это очень трудно найти, просто просматривая документацию.

Обнаруженные мной учебники по ипотеке не упоминали об этом, и в примерах там не было ни строчки.

  1. Измените имя хоста с помощью hostnamectl set-hostname mycoolname
  2. редактировать /etc/cloud/cloud.cfg
  3. Заменить preserve_hostname: true от preserve_hostname: false
  4. перезагрузка

Смена имени хоста после перепрошивки на hypriot на малине. у меня сработал raspi-config. Это сохраняется после перезагрузки.

sudo raspi-config

Затем перейдите в параметры сети-> имя хоста и измените имя хоста.

Другие вопросы по тегам