Ansible的Role

Role是我们在Ansible上可再利用的重要单位,在这里确认创建Role的方法。

在当前目录下创建 tutorial 目录后,执行 ansible-galaxy init –init-path=”roles” nginx 命令创建nginx的Role。

[root@sys-blog ~]# mkdir mkdir ansible-tutorial
[root@sys-blog ~]# cd mkdir ansible-tutorial
[root@sys-blog ~]# ansible-galaxy init --init-path="roles" nginx
- Role nginx was created successfully

执行tree命令后,可确认到如下目录结构。如果想从服务器的任何位置使用Role的话,可以把Role文件存放到 /etc/ansible/roles目录下使其变为全局Role。

[root@sys-blog ansible-tutorial]# tree
.
└── roles
    └── nginx
        ├── defaults
        │   └── main.yml   -> 定义Role里使用的变量的默认值
        ├── files          -> 存放往构成管理对象服务器拷贝的文件
        ├── handlers
        │   └── main.yml   -> 定义Handler Task
        ├── meta
        │   └── main.yml   -> 定义Role的依赖关系
        ├── README.md
        ├── tasks
        │   └── main.yml   -> 定义Role里执行的task
        ├── templates      -> 存放Jinja2 template文件
        ├── tests          -> 为了测试Role的Playbook(test.yml)及inventory
        │   ├── inventory
        │   └── test.yml
        └── vars
            └── main.yml   -> Role里使用变量

10 directories, 8 files

实际项目一般会创建多个Role,下面的命令可一次性创建多个Role。

# roles=(ansible apache jboss jdk oracle_client)
# for role in ${roles[@]}; do ansible-galaxy init --init-path="roles" $role; done

介绍了在Ansible上创建Role的方法。