美文网首页
Ansible学习——组件之roles day7

Ansible学习——组件之roles day7

作者: 全栈小运维 | 来源:发表于2020-05-10 11:23 被阅读0次
    roles 角色

    在ansible中,roles是playbooks的一部分。playbooks模块化之后,成为roles的组织结构,易读,代码可重用,层次清晰。

    ansible的roles用于层次性、结构化地组织palybook。roles能够根据层次型结构自动装载变量文件、tasks及handlers等。要使用roles只需要playbook中使用include指令即可。

    以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等;
    role_name/

    files/:
    存储由copy或script等模块调用的文件;
    tasks/:
    此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用;
    handlers/:
    此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由main.yml进行“包含”调用;
    vars/:
    此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行“包含”调用;
    templates/:
    存储由template模块调用的模板文本;
    meta/:
    此目录中至少应该有一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系;其它的文件需要由main.yml进行“包含”调用;
    default/:
    此目录中至少应该有一个名为main.yml的文件,用于设定默认变量;

    在playbook中调用角色的方法:

    - hosts: HOSTS
      remote_user: USERNAME
      roles:
      - ROLE1
      - ROLE2
      - { role: ROLE3, VARIABLE: VALUE, ...}
      - { role: ROLE4, when: CONDITION }
    
    roles目录结构

    root@node1 playbook]# tree roles/

    roles/ \\ansible所有的信息都放到此目录下面对应的目录中
    └── nginx  \\角色名称
        ├── default  \\为当前角色设定默认变量时使用此目录,应当包含一个main.yml文件;
        ├── files  \\存放有copy或script等模块调用的文件
        ├── handlers \\此目录总应当包含一个main.yml文件,用于定义各角色用到的各handler
        ├── meta \\应当包含一个main.yml,用于定义角色的特殊设定及其依赖关系;1.3及以后版本支持
        ├── tasks \\至少包含一个名为main.yml的文件,定义了此角色的任务列表,可使用include指令
        ├── templates \\template模块会自动在此目录中寻找Jinja2模板文件
        └── vars  \\应当包含一个main.yml文件,用于定义此角色用到的变量
    

    相关文章

      网友评论

          本文标题:Ansible学习——组件之roles day7

          本文链接:https://www.haomeiwen.com/subject/ohejwhtx.html