大约这样的,制作一个带有keydb的镜像, 然后镜像启动的时候挂载云盘, 初始化zfs, 挂载到keydb的数据目录, 启动keydb进程, 然后再运行集群初始化命令, 一气呵成。...解决方案
首先制作镜像
通过packer先把安装有keydb功能的服务制作好镜像
其次挂载云盘
通过terraform绑定实例和云盘的关系
最后是集群初始化脚本(本文关键步骤)
初始化脚本是通过cloud-init...的userdata来进行的, terraform有专门的模块暂不细表....脚本有个关键的初始化zfs, 如下
zpool create -f keydb raidz ${device\_list}
zfs create keydb/data
zfs set mountpoint...=/data keydb/data
但是这个device_list在脚本执行的时候, 还没挂载成功, 就会导致脚本失败, keydb没有启用flash特性
解决的思路是加一个检测步骤, 等待块设备ready