我最近开始使用 MaaS 3.0.0(从 2.4 开始)。我能够登记、调试和部署节点,直到今天,当我尝试登记一些节点时,我开始收到以下信息:
Can not apply stage config, no datasource found! Likely bad things to come!
我最终追踪到了 enlist-preseed URL(http://xxx1:5240/MAAS/metadata/latest/enlist-preseed/?op=get_enlist_preseed)向客户端提供 500 错误,这是我在 Chrome 中浏览时的输出:
name 'metadata_enlist_url' is not defined at line 8 column 22 in file /var/snap/maas/15003/preseeds/enlist
我仍使用 2.4 版本,当我转到相同路径时,会出现以下信息:
#cloud-config
datasource:
MAAS:
timeout : 50
max_wait : 120
# there are no default values for metadata_url or oauth credentials
# If no credentials are present, non-authed attempts will be made.
metadata_url: http://x.x.2.4:5240/MAAS/metadata/enlist
output: {all: '| tee -a /var/log/cloud-init-output.log'}
我尝试/var/snap/maas/15003/preseeds/enlist
使用 2.4 版本在我的 3.0 maas 上创建/编辑,但 3.0 网页从未返回任何有用的信息,只是同样的错误。
有人知道发生了什么事/如何解决它吗?
答案1
所以我不确定它是如何进入这种状态的,但出于某种原因,MaaS 不再喜欢这个 {{metadata_enlist_url}}
变量,甚至把它包含在这样的评论中
# metadata_url: {{metadata_enlist_url}}
MaaS 尝试进行替换时出现错误。删除该变量并硬编码metadata_url: http://x.x.x.1:5240/MAAS/metadata/enlist
内容后,我现在至少可以进入登记工作流程(但仍遇到其他一些问题...)
答案2
尝试将 preseeds/enlist 中的 metadata_url 值设置为:
metadata_url: http://{{server_host}}:5240/MAAS/metadata
我已经使用 MAAS 2.9 对此进行了测试。
答案3
我从 MAAS 2.6 升级后发现了同样的问题,但我设法找到了一种在 MAAS 3.0+ 中有效的解决方案。我尝试了上述方法,但对我不起作用。
当我查询这个 URL 时:http://xxx2:5240/MAAS/metadata/enlist-preseed/?op=get_enlist_preseed通过我的浏览器
我得到了这个结果:
Unrecognised signature: method=GET op=get_enlist_preseed
然后,我在测试服务器上安装了 MAAS 3.3 的全新实例,并发现新安装中的“/etc/maas/preseeds/enlist”或 /snap/maas/24685/etc/maas/preseeds/enlist 文件与生产安装完全不同。
生产服务器上的文件:
$ cat /etc/maas/preseeds/enlist
#cloud-config
datasource:
MAAS:
timeout : 50
max_wait : 120
# there are no default values for metadata_url or oauth credentials
# If no credentials are present, non-authed attempts will be made.
metadata_url: {{metadata_enlist_url}}
输出:{全部:'| tee -a /var/log/cloud-init-output.log'}
测试服务器上的文件:
$ cat /etc/maas/preseeds/enlist
{{preseed_data}}
我备份了生产服务器上的旧登记文件,并将其更改为与测试服务器上的登记文件相同,现在它再次运行并且正在登记新机器。
现在,当我查询相同的 URL 时,我得到以下信息:
#cloud-config
apt:
preserve_sources_list: false
primary:
- arches:
- amd64
- i386
uri: http://archive.ubuntu.com/ubuntu
- arches:
- default
uri: http://ports.ubuntu.com/ubuntu-ports
proxy: http://x.x.x.2:8000/
security:
- arches:
- amd64
- i386
uri: http://archive.ubuntu.com/ubuntu
- arches:
- default
uri: http://ports.ubuntu.com/ubuntu-ports
sources_list: 'deb $PRIMARY $RELEASE main restricted multiverse universe
# deb-src $PRIMARY $RELEASE main restricted multiverse universe
deb $PRIMARY $RELEASE-updates main restricted multiverse universe
# deb-src $PRIMARY $RELEASE-updates main restricted multiverse universe
deb $PRIMARY $RELEASE-backports main restricted multiverse universe
# deb-src $PRIMARY $RELEASE-backports main restricted multiverse universe
deb $SECURITY $RELEASE-security main restricted multiverse universe
# deb-src $SECURITY $RELEASE-security main restricted multiverse universe
'
datasource:
MAAS:
metadata_url: http://x.x.x.2:5240/MAAS/metadata/
manage_etc_hosts: true
packages:
- python3-yaml
- python3-oauthlib
power_state:
condition: test ! -e /tmp/block-poweroff
delay: now
mode: poweroff
timeout: 1800
rsyslog:
remotes:
maas: x.x.x.2:5247
希望这可以帮助。