【问题标题】:Hypriot OS on Raspberry PI: user-data for cloud-init is ignoredRaspberry PI 上的 Hypriot 操作系统:cloud-init 的用户数据被忽略
【发布时间】:2018-10-08 16:40:42
【问题描述】:

我尝试使用带有 Cloud init 的 HypriotOS 1.9 配置 Raspberry PI 3b+。为此,我将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'

output of cloud-init.log on pastebin (because of verbosity)

【问题讨论】:

  • Matthias ...你有没有碰巧解决过这个问题?我遇到了同样的问题,而且很困惑。
  • 嗨!确实我发现了。用户数据文件的第一行必须是#cloud-config。否则将被忽略。
  • hypriotos 文档和教程没有提到这一点,一些示例也没有评论。
  • 啊哈!我一定是运气不好。它对我有用,但在解决另一个误解的同时添加了这个作为很好的衡量标准。谢谢!

标签: raspberry-pi cloud-init hypriot


【解决方案1】:

答案是,用户数据文件需要以包含此序列的行开头:

#cloud-config 

如果不存在,文件将被忽略并跳过,就好像它不存在一样。这是actually documented in the cloud init docs。然而,仅浏览文档时很难找到。

我找到的 hypriot 教程没有提到它,并且那里的示例中没有该行。

【讨论】:

    【解决方案2】:

    在覆盆子上的 hypriot 上闪烁后更改主机名。 raspi-config 为我工作。 这在重新启动后仍然存在。

    sudo raspi-config

    然后转到 网络选项-> 主机名 更改主机名。

    【讨论】:

    • 请考虑通过描述您如何通过代码和/或命令行完成此操作来详细说明您的答案。
    • 刚刚添加了。
    【解决方案3】:
    1. hostnamectl set-hostname mycoolname更改主机名
    2. 编辑/etc/cloud/cloud.cfg
    3. preserve_hostname: true 替换为preserve_hostname: false
    4. 重启

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 2014-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      相关资源
      最近更新 更多