-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplaybook.yml
283 lines (248 loc) · 6.86 KB
/
playbook.yml
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
# [vagrant@zabbix vagrant]$ ansible-playbook playbook.yml -i localhost, --connection=local
---
- hosts: all
become: true
tasks:
- name: Disable SELinux
selinux:
state: disabled
- name: upgrade all packages
yum:
name: https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
#state: latest
update_cache: yes
- name: Install zabbix packages
package:
state: installed
name:
- vim
- ansible
- hosts: zabbix
become: true
tasks:
- name: Install zabbix packages
package:
state: installed
name:
- zabbix-server-mysql
- zabbix-web-mysql
- zabbix-nginx-conf
- zabbix-agent
- mariadb
- mariadb-server
- MySQL-python
- python-pip
- traceroute
- name: install zabbix api
pip:
name: zabbix-api
- name: Edit nginx configuration (hostname and listen)
blockinfile:
dest: /etc/nginx/conf.d/zabbix.conf
insertafter: "^server {"
block: |
listen 80;
server_name zabbix.local localhost default;
- name: Edit php-fpm configuration (timezone)
lineinfile:
dest: /etc/php-fpm.d/zabbix.conf
line: "php_value[date.timezone] = Europe/Amsterdam"
- name: Disable fping6 (breaks pinging on hostname if no ipv6 is present)
lineinfile:
dest: /etc/zabbix/zabbix_server.conf
regexp: "^# Fping6Location="
line: "Fping6Location="
- name: Start services
service:
name: "{{ item }}"
state: started
enabled: yes
with_items:
- mariadb
- nginx
- zabbix-agent
- zabbix-server
- php-fpm
- name: Prepopulate zabbix.conf.php
copy:
dest: /etc/zabbix/web/zabbix.conf.php
content: |
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = '';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '{{ inventory_hostname }}';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
- name: Make DB
mysql_db:
state: present
name: zabbix
collation: utf8_bin
encoding: utf8
register: createdb
- name: Import DB
mysql_db:
state: import
name: zabbix
collation: utf8_bin
encoding: utf8
target: /usr/share/doc/zabbix-server-mysql-4.4.0/create.sql.gz
when: createdb is changed
- name: Make DB user
mysql_user:
name: zabbix
priv: "zabbix.*:ALL"
state: present
- hosts: proxy
become: true
tasks:
- name: Install zabbix packages
package:
state: installed
name:
- zabbix-proxy-sqlite3
- python-pip
- name: install zabbix api
pip:
name: zabbix-api
- name: Make sure dir exists
file:
state: directory
path: /var/lib/zabbix
owner: zabbix
- name: Disable fping6 (breaks pinging on hostname if no ipv6 is present)
lineinfile:
dest: /etc/zabbix/zabbix_proxy.conf
regexp: "^# Fping6Location="
line: "Fping6Location="
- name: Fix config (db)
lineinfile:
dest: /etc/zabbix/zabbix_proxy.conf
regexp: "^DBName="
line: "DBName=/var/lib/zabbix/zabbix_proxy"
- name: Fix config (server)
lineinfile:
dest: /etc/zabbix/zabbix_proxy.conf
regexp: "^Server="
line: "Server=zabbix.local"
- name: Start services
service:
name: zabbix-proxy
state: started
enabled: yes
- name: Add proxy to zabbix master
zabbix_proxy:
server_url: http://zabbix.local
login_user: Admin
login_password: zabbix
proxy_name: "Zabbix proxy"
description: "Zabbix proxy"
status: active
state: present
interface:
type: 0
main: 1
useip: 0
ip: ""
dns: "{{ inventory_hostname }}.local"
port: 10050
- name: Add hostgroup Tosca
zabbix_group:
server_url: http://zabbix.local
login_user: Admin
login_password: zabbix
state: present
host_groups:
- Tosca
- name: Add tosca to zabbix master
zabbix_host:
server_url: http://zabbix.local
login_user: Admin
login_password: zabbix
description: "tosca"
host_name: "schoot.org"
visible_name: "tosca"
status: enabled
host_groups:
- Tosca
link_templates:
- Template Module ICMP Ping
state: present
interfaces:
- type: 1
main: 1
useip: 0
ip: ""
dns: "schoot.org"
port: 10050
proxy: "Zabbix proxy"
- hosts: client1,client2
become: true
tasks:
- name: Install zabbix packages
package:
state: installed
name:
- zabbix-agent
- zabbix-sender
- zabbix-get
- python-pip
- name: install zabbix api
pip:
name: zabbix-api
- name: Fix config (server)
lineinfile:
dest: /etc/zabbix/zabbix_agentd.conf
regexp: "^Server="
line: "Server=proxy.local"
- name: Fix config (serveractive)
lineinfile:
dest: /etc/zabbix/zabbix_agentd.conf
regexp: "^ServerActive="
line: "ServerActive=proxy.local"
- name: Fix config (hostname)
lineinfile:
dest: /etc/zabbix/zabbix_agentd.conf
regexp: "^Hostname="
line: "Hostname={{ inventory_hostname }}.local"
- name: Start services
service:
name: zabbix-agent
state: started
enabled: yes
- name: Add client to zabbix master
zabbix_host:
server_url: http://zabbix.local
login_user: Admin
login_password: zabbix
description: "{{ inventory_hostname }}"
host_name: "{{ inventory_hostname }}.local"
visible_name: "{{ inventory_hostname }}"
status: enabled
host_groups:
- Linux servers
link_templates:
- Template OS Linux by Zabbix agent
state: present
interfaces:
- type: 1
main: 1
useip: 0
ip: ""
dns: "{{ inventory_hostname }}.local"
port: 10050
proxy: "Zabbix proxy"
- hosts: zabbix
tasks:
- name: Login
debug:
msg: "Login op http://zabbix.local met Admin / zabbix"