常用指令:
ansible 192.168.202.211 -m ping
ansible groupname -m ping
简介
ansible是新出现的自动化运维工具,基于Python开发,实现了批量系统配置、批量程序部署、批量运行命令等功能:
主要包括:
(1)连接插件connection plugins:负责和被监控端实现通信;
(2)host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)各种模块核心模块、command模块、自定义模块;
(4)借助于插件完成记录日志邮件等功能;
(5)playbook 剧本执行多个任务时,非必需可以让节点一次性运行多个任务;(6)ansible的架构:连接其他主机默认使用ssh协议;
1、ansible主要组成部分:
ANSIBLE PLAYBOOKS:剧本,编排定义Ansible任务集的配置文件;由Ansible顺序依次执行,通常是JSON格式的YML文件;
INVENTORY:Ansible管理主机的清单 /etc/anaible/hosts
MODULES: Ansible执行命令的功能模块,多数为内置核心模块,也可自定义
PLUGINS: 模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用
API: 供第三方程序调用的应用程序编程接口
ANSIBLE: 组合INVENTORY、API、MODULES、PLUGINS的绿框,可以理解为是ansible命令工具,其为核心执行工具
2、ansible命令执行来源:
(1)Ansible命令执行来源:1> USER,普通用户,即SYSTEM ADMINISTRATOR2> CMDB(配置管理数据库) API 调用3> PUBLIC/PRIVATE CLOUD API调用 (公有私有云的API接口调用)4> USER-> Ansible Playbook -> Ansibile(2)利用ansible实现管理的方式:1> Ad-Hoc 即ansible单条命令,主要用于临时命令使用场景2> Ansible-playbook 主要用于长期规划好的,大型项目的场景,需要有前期的规划过程
3、playbook 执行过程:
(1)Ansible-playbook(剧本)执行过程将已有编排好的任务集写入Ansible-Playbook通过ansible-playbook命令分拆任务集至逐条ansible命令,按预定规则逐条执行(2)Ansible主要操作对象HOSTS主机NETWORKING网络设备(3)注意事项:执行ansible的主机一般称为主控端,中控,master或堡垒机主控端Python版本需要2.6或以上被控端Python版本小于2.4需要安装python-simplejson被控端如开启SELinux需要安装libselinux-pythonwindows不能做为主控端ansible不是服务,不会一直启动,只是需要的时候启动
4、ansible安装
rpm包安装: EPEL源yum info ansible 查看ansible信息yum install ansible 安装ansible编译安装:yum -y install python-jinja2 PyYAML python-paramiko python-babelpython-cryptotar xf ansible-1.5.4.tar.gzcd ansible-1.5.4python setup.py buildpython setup.py installmkdir /etc/ansiblecp -r examples/* /etc/ansibleGit方式:git clone git://github.com/ansible/ansible.git --recursivecd ./ansiblesource ./hacking/env-setuppip安装: pip是安装Python包的管理器,类似yumyum install python-pip python-develyum install gcc glibc-devel zibl-devel rpm-bulid openssl-develpip install --upgrade pippip install ansible --upgrade确认安装:ansible --version
5、配置文件路径:
(1)配置文件/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性(一般无需修改)/etc/ansible/hosts 主机清单(将被管理的主机放到此文件)/etc/ansible/roles/ 存放角色的目录(2)程序/usr/bin/ansible 主程序,临时命令执行工具/usr/bin/ansible-doc 查看配置文档,模块功能查看工具/usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台/usr/bin/ansible-playbook 定制自动化任务,编排剧本工具/usr/bin/ansible-pull 远程执行命令的工具/usr/bin/ansible-vault 文件加密工具/usr/bin/ansible-console 基于Console界面与用户交互的执行工具
6、主机清单inventory
Inventory 主机清单
(1)ansible的主要功能,用于批量操作主机,为了便捷地使用其中的部分主机,可以在inventory file中将其分组
(2)默认的inventory file为/etc/ansible/hosts
(3)inventory file可以有多个,且也可以通过Dynamic Inventory来动态生成$ cat /etc/ansible/hostsntp.magedu.com 不分组,直接加[groupname] # 中括号中的字符为组名
www1.magedu.com:2222 # 可以指定端口,目标主机使用非默认的SSH端口时
www2.magedu.com[webserver] # 使用列表的方式标识各主机,db[1:3].magedu.com
db1.magedu.com
db2.magedu.com
db3.magedu.com[dbserver] # 使用列表的方式标识各主机,192.168.207.10[1:3]
192.168.207.101
192.168.207.102
192.168.207.103
7、