ansible角色运行指定角色路径

众所周知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=你的角色名称

你可能感兴趣的:(ansible)