众所周知ansible默认角色路径为:/usr/share/ansible/roles目录
而用户默认安装角色路径为$HOME/.ansible/roles/目录。
如果我们不想修改ansible配置文件又想在任意目录基于运行角色部署服务,需要在ansible剧本中
指定角色路径。
分享剧本如下:
---
- hosts: pxg # 替换成你的主机组名称
remote_user: root
vars:
custom_roles_path: /root/.ansible/roles/ # 新建角色路径变量
rolename: 5KYDEV0P5.skydevops-mysql # 定义 rolename 变量
tasks:
- name: 设置角色路径
set_fact:
ansible_roles_path: "{{ custom_roles_path }}/{{ rolename }}"
delegate_to: localhost # 指定变量在本地
- name: 包含角色
include_role:
name: "{{ ansible_roles_path }}"
- name: 安装角色
ansible.builtin.include_role:
name: "{{ rolename }}"
...
以上剧本结合如下命令:
ansible-playbook - mysql.yml # mysql.yml为上述剧本名称
即可基于角色5KYDEV0P5.skydevops-mysql运行安装mysql。
如果是基于其他角色,使用-e指定额外变量即可,命令示例如下:
ansible-playbook - mysql.yml -e custom_roles_path=你的角色路径 -e rolename=你的角色名称