Gitlab-runner/Ansible:MariaDB安装阶段Root用户配置权限问题
Gitlab-runner/Ansible:MariaDB安装阶段Root用户配置权限问题
看起来你在通过GitLab Runner的Ansible流水线配置MariaDB root密码时碰到了权限和流程缺失的问题,我来帮你一步步梳理解决思路~
首先,先分析下你当前playbook的几个关键缺口:
- 刚安装完MariaDB服务后没有启动它,没启动服务的话根本没法进行密码配置操作
- 缺少实际设置MariaDB root密码的核心步骤,你目前只复制了配置文件,但密码还没真正写入数据库
- 虽然你加了
become: yes,但可能需要确认gitlab-runner用户的sudo权限是否完全生效
第一步:确认GitLab Runner用户的sudo权限
因为你的Ansible任务是通过gitlab-runner用户SSH连接执行的,且用了become: yes切换到root,必须确保该用户能免密sudo,否则Ansible执行时会卡在密码输入环节。
在目标VM上执行以下命令配置:
echo "gitlab-runner ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/gitlab-runner sudo chmod 0440 /etc/sudoers.d/gitlab-runner
第二步:完善Ansible Playbook
下面是补充完整后的playbook,包含服务启动、密码设置和配置文件同步的完整流程:
--- - name: Installation et configuration de MariaDB hosts: all become: yes vars_files: - /home/gitlab-runner/vault.yaml - ./variables.yml tasks: - name: Install MariaDB packages dnf: name: "{{ item }}" state: present update_cache: yes with_items: - mariadb-server tags: [mariadb] - name: Start and enable MariaDB service systemd: name: mariadb state: started enabled: yes tags: [mariadb] - name: Set MariaDB root password mysql_user: name: root password: "{{ mariadb_root_password }}" # 这个变量要在你的variables.yml或vault里定义 host_all: yes login_unix_socket: /var/lib/mysql/mysql.sock # 用本地socket无密码登录(刚安装时root无密码) tags: [mariadb] - name: Copy .my.cnf file with root password credentials template: src: my.cnf.j2 dest: /etc/my.cnf.d/client.cnf owner: root group: root mode: 0644 tags: [mariadb] - name: Restart MariaDB to apply config systemd: name: mariadb state: restarted tags: [mariadb]
关键步骤说明:
- 启动并启用服务:安装完mariadb-server后必须先启动服务,否则无法连接数据库执行密码设置
- 设置root密码:利用
mysql_user模块,通过本地Unix Socket登录(刚安装的MariaDB root用户默认只允许本地无密码登录),直接设置密码 - 重启服务:配置文件更新后重启服务确保生效
关于my.cnf.j2模板的注意点
你的模板文件里要包含正确的root认证信息,比如:
[client] user=root password={{ mariadb_root_password }} socket=/var/lib/mysql/mysql.sock
这样修改后,应该就能解决权限和密码配置的问题了。如果还有问题,可以检查Ansible执行日志,看看具体是哪一步报错,比如是否是sudo权限不足,或者MariaDB服务启动失败~
备注:内容来源于stack exchange,提问作者David Auvray
相关产品推荐
相关产品推荐

