且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

ansible-playbook批量部署zabbix

更新时间:2022-04-13 18:15:13

一、需求

    机房每次增加一批服务器,一些初始环境变量,监控端,脚本,时间校对,配置文件参数等一系修改操作,刚开始按步就班,也用到一些脚本完成,但高效性没能体现出来。现在升级到ansible,自动化部署应用,配置,编排task,把平常复杂工作变得简单,同时使得运维工作上更加标准化和控制!

二、剧本实现

    以下是以zabbix案例来操作!

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
---
  - hosts: "{{ host }}"
    remote_user: "{{ user }}"
    gather_facts: false
    tasks:
        - name: Install the 'Development tools' package group
          yum:
              name: "@Development tools"
              state: present
          tags:
              - Dev_tools
 
        - name: Install packages
          yum: state=present name={{ item }}
          with_items:
              - gcc
              - gcc-c++
              - autoconf
              - automake
              - libxml2-devel
              - sysstat
              - vim
              - iotop
              - unzip
              - htop
              - iotop
              strace
              - wget
              tar
              - libselinux-python
              rsync
              - rdate
          tags:
              - packages
        - name: Selinux modify disabled
          lineinfile:
              dest: /etc/selinux/config
              regexp: '^SELINUX='
              line: 'SELINUX=disabled'
          tags:
              - testselinux
 
        - name: Modify lineinfile
          lineinfile:
              dest: "{{ item.dest }}"
              state: present
              regexp: "{{ item.regexp }}"
              line: "{{ item.line }}"
              validate: 'visudo -cf %s'
          with_items:
                # - { 
                #   dest: "/etc/zabbix/zabbix_agentd.conf",
                #   regexp: "^Include",
                #   line: "\n\n###Add include\nInclude=/etc/zabbix/zabbix_agentd.conf.d/*.conf" }
              - {
                dest: "/etc/sudoers",
                regexp: "^Defaults    requiretty",
                line: "# Defaults    requiretty" }
          tags:
              - testline
 
        - name: Copy configuration file
          copy:
              src: "{{ item.src }}"
              dest: "{{ item.dest }}"
              owner: root
              group: root
              mode: "{{ item.mode }}"
          with_items:
              - {
                src: "/etc/init.d/zabbix_agentd",
                dest: "/etc/init.d/zabbix_agentd",
                mode: "0755"}
          tags:
              - testcopy
        - name: Create a directory
          file: path={{ item }} state=directory mode=0750
          with_items:
              /etc/sudoers.d
          tags:
              - testdir
 
        - name: Looping over Fileglobs
          copy: src={{ item }} dest=/etc/sudoers.d/ owner=root mode=0440
          with_fileglob:
              /etc/sudoers.d/*
          tags:
              - test_fileglobs
 
        - name: synchronization of src on the control machine to dest on the remote hosts
          synchronize:
            src: "{{ item.src }}"
            dest: "{{ item.dest }}"
            recursive: yes
            checksum: yes
 
          with_items:
              - {
                src: "/etc/zabbix",
                dest: "/etc/"}
              - {
                src: "/usr/local/zabbix",
                dest: "/usr/local/"}
          tags:
              - sys_dir
 
        - name: Ensure two job that runs of crontab
          cron:
            name: "{{ item.name }}"
            minute: "{{ item.minute}}"
            job: "{{ item.job}}"
          with_items:
                - {
                  name: "Time synchronization",
                  minute: "10",
                  job: "/usr/bin/rdate -s 192.168.1.163 > /dev/null 2>&1"}
                - {
                  name: "a job vmstat_output",
                  minute: "1",
                  job: "vmstat 1 10 > /tmp/vmstat_output"}
                - {
                  name: "a job iostat_output",
                  minute: "1",
                  job: "bin/bash /usr/local/zabbix/script/iostat.sh"}
          tags:
              - testcron
 
        - name: Starting zabbix_agentd
          shell: /usr/local/zabbix/script/zabbix_agent.sh
          tags:
              - starting_zabbix_aqentd
 
        - name: Install omsa
          shell: sh /usr/local/zabbix/script/dell.sh
          tags:
              - install_omsa









本文转自 zouqingyun 51CTO博客,原文链接:http://blog.51cto.com/zouqingyun/1882781,如需转载请自行联系原作者