qddf 发表于 2016-12-15 08:55:43

ansible-playbook批量部署zabbix

一、需求
    机房每次增加一批服务器,一些初始环境变量,监控端,脚本,时间校对,配置文件参数修改等一系操作,刚开始按步就班,也用到一些脚本,高效性没能体现出来。现在升级到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
---
- hosts: "{{ host }}"
    remote_user: "{{ user }}"
    gather_facts: false
    tasks:
      - 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=\'#\'" /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=\'#\'" /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





页: [1]
查看完整版本: ansible-playbook批量部署zabbix