我们正在尝试将 Juju 引导到 MAAS 云中的另一台机器上,但出现了“错误,无法访问文件*-provider-state
gomaasapi:从服务器返回错误:403 禁止。”错误。
当我们运行juju bootstrap
.jenv 文件时,会创建并返回此错误,其中“*-provider-state”中的 * 被 MAAS 节点的 Juju Agent Name 替换。当我们删除环境(通过删除 .jenv 文件)时,会返回相同的错误,但文件名仅列为“provider-state”。即使创建了 .jenv 文件,节点也不会进入已分配状态。运行任何东西 - juju bootstrap、juju status、juju destroy-environment,都会出现相同的错误。
背景故事:之前,此 MAAS 服务器上曾存在一个引导式 Juju 环境。我们不得不更改网络配置,但无法删除分配的节点。因此,我们认为可以卸载 juju 并重新开始。显然,它不起作用,并且我们的服务器上仍留有一些链接。我们如何摆脱它?我们确实使用 maas shell 删除了分配的节点,但此错误仍然存在。
我们正在运行 MAAS 12.04 LTS 和 Juju 1.16。
答案1
首先,删除 .jenv 文件才不是破坏环境,这只会使您无法从 juju 客户端连接到它。.jenv 文件包含连接到环境所需的所有信息,包括 juju API 服务器地址、SSL 证书等。
要销毁 juju 环境,请使用:
$ juju destroy-environment my-maas-env-name -y
这将正确释放 MAAS 节点,删除存储条目,包括提供者状态文件。
此外,在客户端计算机上重新安装 juju 无法解决您的问题,因为环境及其分配的节点仍然存在,并且对于 MAAS 来说,您仍在使用该环境。
为了解决您的具体问题,我会执行以下操作:
- 您的环境不再可访问,因为 .jenv 文件已消失,而且由于它是自动生成的,您无法通过创建一个空的 .jenv 文件来重新获得对环境的访问权限。
- 如果 .jenv 文件仍然存在,请将其删除。
- 以 MAAS 管理员身份登录 MAAS Web UI,转到“节点”,对于每个已分配的节点,单击该节点,然后在节点页面上单击“停止节点”。这将取消分配节点并将其恢复到准备好。
- 使用 MAAS CLI,您可以列出环境存储中的所有文件:
$ maas my-maas-session files list
,并删除提供程序存储文件:($ maas my-maas-session file delete XXXX-provider-storage
您从文件列表中获取的确切文件名,它看起来像 c4ba50c2-268c-4cf4-8be1-c0903982c8a8-provider-state;并且 my-maas-session 对应于您的 CLI 用户会话 - 它可以是任何字符串,例如使用$ maas login my-session-name http://192.168.50.2/MAAS/ <maas-api-key>
- 使用您在 environment.yaml 中使用“maas-oauth”指定的相同密钥) - 再次引导,一旦完成它就可以工作了。
希望这可以帮助,