一、需求

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

二、剧本实现

    以下是以zabbix案例来操作!

---
  - 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