我有一个使用打包器部署的工作 cloud-init。一旦 VM 启动并完成自动安装,Ubuntu 就会执行自动更新。这似乎需要很长时间才能完成,并且是一个不需要的步骤,因为我们在安装后移交给 puppet。
目前,我传递了错误的 DNS 详细信息以避免自动更新。
如何禁用该自动更新?
谢谢 !
我有一个使用打包器部署的工作 cloud-init。一旦 VM 启动并完成自动安装,Ubuntu 就会执行自动更新。这似乎需要很长时间才能完成,并且是一个不需要的步骤,因为我们在安装后移交给 puppet。
目前,我传递了错误的 DNS 详细信息以避免自动更新。
如何禁用该自动更新?
谢谢 !
自动安装包括向 webhook 报告的选项:
reporting:
hook:
type: webhook
endpoint: http://example.com/endpoint/path
consumer_key: "ck_foo"
consumer_secret: "cs_foo"
token_key: "tk_foo"
token_secret: "tk_secret"
level: INFO
我试图配置这个,但无济于事。由于我对 webhook 不太熟悉,所以我首先尝试获取任何信息并设置此配置:
reporting:
hook:
type: webhook
endpoint: localhost:8000
然后我在我的本地服务器上设置 netcat,如下所示:
nc -l localhost 8000
但是在这个插座上我什么也得不到。我不太确定如何使用这项服务,但我希望至少能看到任何数据。
在执行新的 Subiquity 服务器自动安装程序的网络部分期间,它会失败并返回非零代码 on netplan apply
,然后它会udevadm settle -t 0
一遍又一遍地运行,返回退出代码 1 直到它最终放弃。
来自一份/var/crash
报告:
# date/time removed for readability
DEBUG subiquitycore.netplan:111 config for ens2f0 = {}
DEBUG subiquitycore.netplan:111 config for ens2f0 = {}
DEBUG subiquitycore.netplan:135 config for bond0 =
{'dhcp4': True, 'interfaces': ['ens2f0', 'ens2f1'], 'parameters': {'lacp-rate': 'slow', 'mode': '802.3ad', 'transmit-hash-policy', 'layer2'}}
DEBUG subiquitycore.utils:74 arun_command called: ['netplan', 'apply']
DEBUG subiquitycore.utils:48 run_command called: ['udevadm', 'settle', '-t', '0']
DEBUG subiquitycore.utils:61 ['udevadm', 'settle', '-t', '0'] exited with code 1
DEBUG subiquitycore.controller.network:196 waiting 0.1 to let udev event queue settle
<repeating udevadm settle commands issued>
(相关)自动安装配置:
#cloud-config
autoinstall:
version: 1
# double network due to a bug
# see https://ubuntu.com/server/docs/install/autoinstall-reference#network
network:
network:
version: 2
ethernets:
ens2f0: {}
ens2f1: {}
bonds:
bond0:
dhcp4: true
interfaces:
- ens2f0
- ens2f1
parameters:
mode: 802.3ad
lacp-rate: slow
transmit-hash-policy: layer2
这会生成以下 Netplan 配置 ( /etc/netplan/00-installer-config.yaml
):
# This is network config written by 'subiquity'
network:
bonds:
bond0:
dhcp4: true
parameters:
mode: 802.3ad
lacp-rate: slow
transmit-hash-policy: layer2
ethernets:
ens2f0: {}
ens2f1: {}
version: 2
我还尝试了一个更简单的 netplan 配置,在一个端口 ( ens2f0
) 上只有一个静态地址,甚至在任何接口匹配eth*
或en*
(在本例中ens2f0
为ens2f1
我的理论是,有一个模块或其他东西在 udev 中创建了一个未处理甚至可能不相关的事件,但是我将如何调试呢?
此外,即使正确配置了相关设备和接口,如果udev中存在此类未处理的事件,Netplan也不会继续进行下去,这不是很大的侵略性吗?
设置:
Ubuntu 20.04 每日构建 20200923(尝试 20.04.1 和初始 LTS 版本)
Netplan 0.99-ubuntuu3~20.04.2
Systemd 245.4-4ubuntu3.2
Supermicro X11DDW-L
Mellanox ConnectX-5 (PCI-E)
BIOS/旧版启动(由于 UEFI 中此 NIC/主板之间不兼容)
我试图在没有运气的情况下做以下一周!我想在机器部署过程中创建一个 MACVLAN。我已经使用 Cloud-Init 语法为此过程提供了代码:
#cloud-config
write_files:
- content: |
#!/bin/bash
sudo ip link add eth0 link enp0s3 type macvlan mode bridge
sudo ifconfig eth0 up
path: /tmp/macvlan.sh
permissions: '777'
- content: |
[Unit]
Description=macvlan setup service
[Service]
ExecStart=/etc/init.d/macvlan.sh
[Install]
WantedBy=multi-user.target
path: /tmp/macvlan.service
permissions: '777'
runcmd:
- sudo mv /tmp/macvlan.sh /etc/init.d/macvlan.sh
- sudo mv /tmp/macvlan.service /etc/systemd/system/macvlan.service
- systemctl enable macvlan
- systemctl start macvlan
所以现在我想知道如何在部署过程中自动使用这个代码?我知道有一种方法可以手动使用代码,如下所示:
maas $PROFILE machine deploy $SYSTEM_ID user_data=$(base64 ./import_key.sh)
但我希望 MaaS 自动为所有机器执行此操作(因为我正在使用 Juju 控制器部署新机器,而我无法手动执行此操作)。如果无法使用 Cloud-Init,那么是否可以使用 Curtin?如何?