如何运用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 116 117 118 119 120 121 122 | --- - 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=\'#\'" /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/basusr/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: susr/local/zabbix/script/dell.sh tags: - install_omsa |
原创: ansible分享