背景
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
致謝
筆者受到下方的文章的啓發,才得以解決問題。