1. ansible-角色-roles基本使用
1.1) 创建roles目录结构
1 [root@test-1 ansible]# mkdir -p /ansible/roles/{common,nginx,php}/{tasks,handlers,defaults,vars,files,templates,meta}/
2 [root@test-1 ansible]# touch /ansible/{fooservers.yaml,hosts,site.yaml,webservers.yaml}
3 [root@test-1 ansible]# touch /ansible/roles/{common,nginx,php}/{tasks,handlers,defaults,vars,files,templates,meta}/main.yaml
1.2) 验证roles目录结构创建成功没
1 [root@test-1 ansible]# tree /ansible/
2 /ansible/
3 ├── fooservers.yaml
4 ├── hosts
5 ├── roles
6 │ ├── common
7 │ │ ├── defaults
8 │ │ │ └── main.yaml
9 │ │ ├── files
10 │ │ │ └── main.yaml
11 │ │ ├── handlers
12 │ │ │ └── main.yaml
13 │ │ ├── meta
14 │ │ │ └── main.yaml
15 │ │ ├── tasks
16 │ │ │ └── main.yaml
17 │ │ ├── templates
18 │ │ │ └── main.yaml
19 │ │ └── vars
20 │ │ └── main.yaml
21 │ ├── nginx
22 │ │ ├── defaults
23 │ │ │ └── main.yaml
24 │ │ ├── files
25 │ │ │ └── main.yaml
26 │ │ ├── handlers
27 │ │ │ └── main.yaml
28 │ │ ├── meta
29 │ │ │ └── main.yaml
30 │ │ ├── tasks
31 │ │ │ └── main.yaml
32 │ │ ├── templates
33 │ │ │ └── main.yaml
34 │ │ └── vars
35 │ │ └── main.yaml
36 │ └── php
37 │ ├── defaults
38 │ │ └── main.yaml
39 │ ├── files
40 │ │ └── main.yaml
41 │ ├── handlers
42 │ │ └── main.yaml
43 │ ├── meta
44 │ │ └── main.yaml
45 │ ├── tasks
46 │ │ └── main.yaml
47 │ ├── templates
48 │ │ └── main.yaml
49 │ └── vars
50 │ └── main.yaml
51 ├── site.yaml
52 └── webservers.yaml
53
54 25 directories, 25 files
2. 案例,roles案例基本使用
2.1) 编写site.yaml 程序执行文件
1 [root@test-1 ansible]# cat site.yaml
2 ---
3 - hosts: web1
4 gather_facts: no
5
6
7 roles:
8 - common
9 - nginx
10 - php
2.2) 编写common公共使用tasks文件main.yaml
1 [root@test-1 ansible]# vim /ansible/roles/common/tasks/main.yaml
2 [root@test-1 ansible]# cat /ansible/roles/common/tasks/main.yaml
3 - name: common task test
4 debug: msg="common task test"
2.3) 编写nginx的tasks文件main.yaml
1 [root@test-1 ansible]# cat /ansible/roles/nginx/tasks/main.yaml
2 - name: nginx task test
3 debug: msg="nginx task test"
2.4) 编写php的tasks文件main.yaml
1 [root@test-1 ansible]# cat /ansible/roles/php/tasks/main.yaml
2 - name: php task test
3 debug: msg="php task test"
2.5) 检查site.yaml配置文件是否正确
1 [root@test-1 /]# cd /ansible/
2 [root@test-1 ansible]# ls
3 fooservers.yaml hosts roles site.yaml webservers.yaml
4 [root@test-1 ansible]# ansible-playbook --syntax-check site.yaml
5
6 playbook: site.yaml
3. 执行site.yaml文件
3.1) 执行site.yaml文件
1 [root@test-1 ansible]# ansible-playbook site.yaml
2
3 PLAY [web1] *************************************************************************************************************************************************************
4
5 TASK [common : common task test] ****************************************************************************************************************************************
6 ok: [192.168.200.132] => {
7 "msg": "common task test"
8 }
9 ok: [192.168.200.133] => {
10 "msg": "common task test"
11 }
12
13 TASK [nginx : nginx task test] ******************************************************************************************************************************************
14 ok: [192.168.200.132] => {
15 "msg": "nginx task test"
16 }
17 ok: [192.168.200.133] => {
18 "msg": "nginx task test"
19 }
20
21 TASK [php : php task test] **********************************************************************************************************************************************
22 ok: [192.168.200.132] => {
23 "msg": "php task test"
24 }
25 ok: [192.168.200.133] => {
26 "msg": "php task test"
27 }
28
29 PLAY RECAP **************************************************************************************************************************************************************
30 192.168.200.132 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
31 192.168.200.133 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
提示:
我们可以看到测试的roles在远程上已经调用配置文件,进行加载