Raspberry PI 上的 Hypriot OS:cloud-init 的用户数据被忽略
Hypriot OS on Raspberry PI: user-data for cloud-init is ignored
我尝试使用 HypriotOS 1.9 和 Cloud init 配置 Raspberry PI 3b+。为此,我将一个 user-data
文件放入引导卷的根目录中。根据文档,这应该自动获取并执行文件中描述的更改(例如更改主机名)。
但是,发生了 none 这些更改,并且查看 cloud-init 的日志输出似乎并没有表明该文件甚至被正确拾取。
我正在使用 hypriot flash 实用程序将文件复制到目标 OS。当我安装 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-config
如果不存在,文件将被忽略并跳过,就好像它不存在一样。这是actually documented in the cloud init docs。不过光看文档还是很难找到的。
我找到的 hypriot 教程没有提到它,而且那里的例子中也没有这条线。
在覆盆子上刷入 hypriot 后更改主机名。
raspi-config 为我工作。
这在重新启动后仍然存在。
sudo raspi-config
然后去
网络选项-> 主机名
更改主机名。
- 更改主机名
hostnamectl set-hostname mycoolname
- 编辑
/etc/cloud/cloud.cfg
- 将
preserve_hostname: true
替换为preserve_hostname: false
- 重启
我尝试使用 HypriotOS 1.9 和 Cloud init 配置 Raspberry PI 3b+。为此,我将一个 user-data
文件放入引导卷的根目录中。根据文档,这应该自动获取并执行文件中描述的更改(例如更改主机名)。
但是,发生了 none 这些更改,并且查看 cloud-init 的日志输出似乎并没有表明该文件甚至被正确拾取。
我正在使用 hypriot flash 实用程序将文件复制到目标 OS。当我安装 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-config
如果不存在,文件将被忽略并跳过,就好像它不存在一样。这是actually documented in the cloud init docs。不过光看文档还是很难找到的。
我找到的 hypriot 教程没有提到它,而且那里的例子中也没有这条线。
在覆盆子上刷入 hypriot 后更改主机名。 raspi-config 为我工作。 这在重新启动后仍然存在。
sudo raspi-config
然后去 网络选项-> 主机名 更改主机名。
- 更改主机名
hostnamectl set-hostname mycoolname
- 编辑
/etc/cloud/cloud.cfg
- 将
preserve_hostname: true
替换为preserve_hostname: false
- 重启