Ansible执行playbook创建mysql用户提示wls组不存在如何修复
问题根因
报错是因为创建mysql用户时指定的附加组wls未提前创建。
当前playbook的创建组任务仅会遍历GROUPS列表创建mysql组,没有创建wls组的逻辑。Ansible的user模块不会自动创建groups参数中指定的附加组,所有被引用的用户组必须预先存在,否则就会抛出Group wls does not exist错误。
修复方案
将wls组加入var.yml的GROUPS配置列表,让已有的创建组任务统一完成所有依赖组的创建,这是最规范的处理方式,能保证所有环境执行逻辑一致。
修改后的var.yml完整内容如下:
PORT : 3306 USER : mysql USERID : "{{ PORT }}" GROUP : mysql GROUPID : "{{ PORT }}" SECGROUP : wls DBUSER : root DBPASSWD : "{{ DBPASS }}" GROUPS: - name: "{{ GROUP }}" gid: "{{ GROUPID }}" # 新增wls组配置,需要固定gid可自行添加gid字段 - name: "{{ SECGROUP }}" USERS: - name : "{{ USER }}" uid: "{{ USERID }}" group: "{{ GROUP }}" groups: "{{ SECGROUP }}" comment: "{{ USER }}"
如果不需要给wls组指定固定GID,按上述写法仅配置name即可,Ansible会自动分配系统可用的GID。
如果wls是目标机器上预先存在、不需要playbook管理的系统组,也可以提前在所有目标节点上手动创建该组后再执行playbook,但这种方式容易出现环境不一致问题,不推荐使用。
内容的提问来源于stack exchange,提问作者Kevin Tran
相关产品推荐
相关产品推荐

