本文共 3175 字,大约阅读时间需要 10 分钟。
一、需求
机房每次增加一批服务器,一些初始环境变量,监控端,脚本,时间校对,配置文件参数等一系修改操作,刚开始按步就班,也用到一些脚本完成,但高效性没能体现出来。现在升级到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 |