Openstack 创建时指定密码

背景

Openstack创建时指定密码不生效。

现象

通过openstack4j 创建虚拟机实例,指定了密码(或者直接由服务器默认生成了密码),Server返回值内也有密码,可就是不生效。

ServerCreateBuilder sc = Builders.server()
                .name(Objects.requireNonNull(..., "名称"))
                .flavor(Objects.requireNonNull(..., "规格"))
                .image(Objects.requireNonNull(..., "镜像"))
                .addAdminPass(...)
                .networks(...);

分析

Openstack初始化的过程

  • Cloud-Init + metadata + userdata

这篇文章有详细的阐述:
OpenStack 虚拟机的配置初始化 — Cloud-Init & Config Drive | Metadata API

解决

经过测试和验证,通过CloudInit方式创建的虚拟机,需要满足下方条件, 指定密码才能生效。

  • configDrive必须设置 true
  • userdata需要传递

传入personality /etc/cloud/cloud.cfg.d/userdata.cfg

#cloud-config
ssh_pwauth: True
chpasswd:
  list: |
    root:password12345
  expire: False

致谢

笔者受到下方的文章的启发,才得以解决问题。

posted @ 2023-02-23 10:32  一杯半盏  阅读(165)  评论(0编辑  收藏  举报