1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
| 1、准备目录
# mkdir -pv playbook/roles/nginx/{default,files,handlers,meta,tasks,templates,vars}
2、准备nginx的配置文件
# cd roles/nginx/templates
# ansible all -m setup |grep ansible_processor_cores
"ansible_processor_cores": 1, \\获取ansible的要调用的相关函数
"ansible_processor_cores": 1, \\获取ansible的要调用的相关函数
# vim nginx.conf
worker_processes {{ ansible_processor_cores }}; \\调用获取到的函数
3、准备Nginx的default.conf文件及rpm包
# ll nginx/files/
-rw-r--r-- 1 root root 2685 Jan 18 15:51 default.conf
-rw-r--r-- 1 root root 319456 Jan 18 15:52 nginx-1.4.7-1.el6.ngx.x86_64.rpm
4、在tasks目录中配置任务列表
# cd nginx/tasks/
# vim main.yml
- name: copy nginx.rpm
copy: src=nginx-1.4.7-1.el6.ngx.x86_64.rpm dest=/tmp/nginx-1.4.7-1.el6.ngx.x86_64.rpm
- name: install nginx
shell: yum -y install /tmp/nginx-1.4.7-1.el6.ngx.x86_64.rpm
- name: provides nginx.conf
template: src=nginx.conf dest=/etc/nginx/nginx.conf
tags: nginxconf
notify:
- server restart
- name: provides default.conf
copy: src=default.conf dest=/etc/nginx/conf.d/default.conf
tags: nginxconf
- name: server start
service: name=nginx enabled=true state=started
5、在handlers目录中配置定义handler信息
# cd nginx/handlers/
# vim main.yml
- name: server restart
service: name=nginx state=restarted
6、在roles同一级目录中创建site.yml文件
- hosts: webservers
remote_user: root
roles:
- nginx
7、应用配置
# ansible-playbook site.yml
PLAY [webservers] *************************************************************
GATHERING FACTS ***************************************************************
ok: [node2]
ok: [node1]
TASK: [nginx | copy nginx.rpm] ************************************************
ok: [node1]
ok: [node2]
TASK: [nginx | install nginx] *************************************************
changed: [node1]
changed: [node2]
TASK: [nginx | provides nginx.conf] *******************************************
changed: [node2]
changed: [node1]
TASK: [nginx | provides default.conf] *****************************************
changed: [node2]
changed: [node1]
TASK: [nginx | server start] **************************************************
changed: [node2]
changed: [node1]
NOTIFIED: [nginx | server restart] ********************************************
changed: [node1]
changed: [node2]
PLAY RECAP ********************************************************************
node1 : ok=7 changed=5 unreachable=0 failed=0
node2 : ok=7 changed=5 unreachable=0 failed=0
8、查看webservers主机上是否已经启动nginx
# ansible webservers -m shell -a 'netstat -tnlp'
node2 | success | rc=0 >>
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5497/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1174/sshd
tcp 0 0 :::22 :::* LISTEN 1174/sshd
node1 | success | rc=0 >>
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5513/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1174/sshd
tcp 0 0 :::22 :::* LISTEN 1174/sshd
9、查看playbook目录总体结构:
# tree playbook/
playbook/
├── roles
│ └── nginx
│ ├── default
│ ├── files
│ │ ├── default.conf
│ │ └── nginx-1.4.7-1.el6.ngx.x86_64.rpm
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ ├── tasks
│ │ └── main.yml
│ ├── templates
│ │ └── nginx.conf
│ └── vars
└── site.yml
|