一、需求
機房每次增加一批服務器,一些初始環境變量,監控端,腳本,時間校對,配置文件參數等一系修改操作,剛開始按步就班,也用到一些腳本完成,但高效性沒能體現出來。現在升級到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