shell > vim /etc/ansible/playbook.yml # 将远程主机IP地址写入文件中保存 --- - hosts: Client remote_user: root tasks: - name: Save IP To info.txt shell: "ifconfig eth0 | awk -F '[ :]'+ '/inet addr/{print $4}' > ~/info.txt" # hosts 指定执行操作主机 # remote_user 指定执行用户 # tasks 指明有哪些动作 # name 动作描述 # shell 模块,后面为具体指令
Playbook 实战:
一、目录结构
shell > cd /etc/ansible/ ; tree . . ├── ansible.cfg ├── delete_zabbix_agent.yml ├── hosts ├── install_zabbix_agent.yml └── roles ├── delete_zabbix_agent │ ├── tasks │ │ └── main.yml │ └── vars │ └── main.yml └── install_zabbix_agent ├── files │ └── zabbix-2.4.5.tar.gz ├── tasks │ └── main.yml ├── templates │ ├── zabbix_agentd │ └── zabbix_agentd.conf └── vars └── main.yml ## ansible.cfg 此文件为 ansible 的主配置文件 ## hosts 用于定义主机组 ## roles 定义不同的角色 ## install_zabbix_agent.yml 用于安装 zabbix_agent 的引导文件 ## delete_zabbix_agent.yml 删除已安装的 zabbix_agent 的引导文件 └── install_zabbix_agent ├── files │ └── zabbix-2.4.5.tar.gz ├── tasks │ └── main.yml ├── templates │ ├── zabbix_agentd │ └── zabbix_agentd.conf └── vars └── main.yml ## 其中,install_zabbix_agent 为一个角色,用于安装 zabbix_agent ## file 目录:用于存放将要拷贝到远程主机的安装包等 ## tasks 目录:将要执行的所有任务,如果比较复杂,可以单独定义不同的任务,最后在 main.yml 文件中引用即可 ## templates 目录:模板目录,这里存放着一些可变的文件,即:每台主机上的这些文件中的内容都不完全相同 ## vars 目录:用于存放变量 ## 这是一个比较简单的结构,其实一个角色中还可以有 meta 、handlers 等
二、Playbook 安装软件需要的步骤
1、定义 hosts( 给哪些主机安装软件 )
shell > vim /etc/ansible/hosts [mini] 129.139.153.78:16283 155.139.190.94:12573
2、定义入口文件 install_zabbix_agent.yml
shell > vim /etc/ansible/install_zabbix_agent.yml --- - hosts: mini roles: - install_zabbix_agent ## 可以看到将要安装的主机组为 mini 组,角色为 install_zabbix_agent
3、定义角色 install_zabbix_agent
shell > tree /etc/ansible/roles/install_zabbix_agent/ ├── files │ └── zabbix-2.4.5.tar.gz ├── tasks │ └── main.yml ├── templates │ ├── zabbix_agentd │ └── zabbix_agentd.conf └── vars └── main.yml ## 建立 files 目录,存放编译安装过的 zabbix_agent 目录的压缩文件,用于拷贝到远程主机 ## 建立 tasks 目录,用于编写将要执行的任务 ## 建立 templates 目录,用于存放可变的模板文件 ## 建立 vars 目录,用于存放变量信息
--------------------------------------分割线 --------------------------------------
shell > cat /etc/ansible/roles/install_zabbix_agent/tasks/main.yml --- - name: Install Software yum: name={{ item }} state=latest with_items: - libcurl-devel - name: Create Zabbix User user: name={{ zabbix_user }} state=present createhome=no shell=/sbin/nologin - name: Copy Zabbix.tar.gz copy: src=zabbix-{{ zabbix_version }}.tar.gz dest={{ zabbix_dir }}/src/zabbix-{{ zabbix_version }}.tar.gz owner=root group=root - name: Uncompression Zabbix.tar.gz shell: tar zxf {{ zabbix_dir }}/src/zabbix-{{ zabbix_version }}.tar.gz -C {{ zabbix_dir }}/ - name: Copy Zabbix Start Script template: src=zabbix_agentd dest=/etc/init.d/zabbix_agentd owner=root group=root mode=0755 - name: Copy Zabbix Config File template: src=zabbix_agentd.conf dest={{ zabbix_dir }}/zabbix/etc/zabbix_agentd.conf owner={{ zabbix_user }} group={{ zabbix_user }} mode=0644 - name: Modify Zabbix Dir Permisson file: path={{ zabbix_dir }}/zabbix owner={{ zabbix_user }} group={{ zabbix_user }} mode=0755 recurse=yes - name: Start Zabbix Service shell: /etc/init.d/zabbix_agentd start - name: Add Boot Start Zabbix Service shell: chkconfig --level 35 zabbix_agentd on