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
致谢
笔者受到下方的文章的启发,才得以解决问题。