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 (из-за многословности)


person Matthias Huttar    schedule 08.10.2018    source источник
comment
Матиас ... ты когда-нибудь разбирался с этим? У меня та же проблема, и я довольно озадачен.   -  person GoneAsync    schedule 21.11.2018
comment
Привет! Я действительно узнал. Первая строка файла пользовательских данных должна быть #cloud-config. В противном случае игнорируется.   -  person Matthias Huttar    schedule 24.11.2018
comment
В документации и руководствах по Hypriotos это не упоминается, а в некоторых примерах этот комментарий также отсутствует.   -  person Matthias Huttar    schedule 24.11.2018
comment
Ага! Я, должно быть, наткнулся на это по глупой удаче. Это работает для меня, но я добавил это для хорошей меры одновременно с исправлением другого недоразумения. Спасибо!   -  person GoneAsync    schedule 25.11.2018


Ответы (3)


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

#cloud-config 

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

в найденных мной руководствах по гиприотам об этом не упоминалось, а в примерах этой строки не было.

person Matthias Huttar    schedule 25.11.2018

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

sudo raspi-config

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

person Peter HJ van Eijk    schedule 06.02.2020
comment
Пожалуйста, подумайте над уточнением своего ответа, описав, как вы выполнили этот код и / или командную строку. - person sao; 07.02.2020
comment
просто добавил это. - person Peter HJ van Eijk; 08.02.2020

  1. Измените имя хоста на hostnamectl set-hostname mycoolname
  2. Изменить /etc/cloud/cloud.cfg
  3. Заменить preserve_hostname: true на preserve_hostname: false
  4. Перезагрузить
person Antoniet    schedule 10.06.2020