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的方法。