标签:
ansible是基于模块化的,通过条用特定的模块,完成特定的任务
基于Python语言实现,由Paramiko、PyYAML和Jinja2三个关键模块实现
部署简单,agentless(无需部署客户端,通过ssh协议管理各客户端)
基于主从模式
支持自定义模块 (其他编程语言写的模块,也可以经过ansible的接口调用)
支持Playbook 连续任务按先后顺序完成
ansible的组成部分:
ansible core:ansible自身核心模块
host inventory:主机库,定义可管控的主机列表
connection plugins:连接插件,默认基于ssh协议连接
modules:core modules(自带模块或核心模块)、custom modules(自定义模块,用户可基于任何编程语言编写自定义模块)
配置文件:
(1)ansible应用程序的主配置文件:/etc/ansible/ansible.cfg
(2) Host Inventory定义管控主机:/etc/ansible/hosts
安装: yum -y install epel-release yum -y install ansible
命令的使用格式:ansible <host-pattern> [-m module_name] [-a args] [options]
vim /etc/ansible/ansible.cfg
上面是自定义单个主机示例
自定义单个组示例,中括号中的字符是组名,一个主机可以属于多个主
可以使用ansible -i /somefile 指明inventory host文件路径
自定义两个组
ansible-doc 命令查看相关帮助, ansible-doc -l 列出ansible支持哪些模块,ansible-doc -s MODULE-NAME 查看模块支持哪些
参数
最简单的一条命令:ansible web1 -m ping,由于ssh不是基于密钥验证,此处会显示UNREACHABLE
先得在各主机上配置密钥验证,首先创建密钥对,命令很简单ssh-keygen,加三次回车
cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys chmod 700 /root/.ssh/authorized_keys
scp -p /root/.ssh/authorized_keys 192.168.238.170:/root/.ssh/ (通过scp将密钥发往各主机)
此时再来测试 ansible all -m ping all表示所有主机
ansible常用模块介绍
ansible <host-pattern> [-m module_name] [-a args] [options]
args:是key=value格式
command:默认模块,可省略。在远程主机上进行操作命令,command不是key=value格式,后面直接跟命令
例如:ansible all -m command -a ’ifconfig‘
注意:要用到管道类的命令,command无法执行
user:添加删除user命令
例如:ansible web1 -m user -a "name=apache state=present" name指定用户名,present表示创建,absent表示删除
删除家目录,要使用remove=true,要创建系统用户添加system=true
cron 定义crontab中的条目的
例如:ansible all -m cron -a "minute=‘*/5‘ job=‘/usr/sbin/ntpdate 210.72.145.44 &> /dev/null‘ name=‘sync time‘"
上面的name必须指定
删除: ansible all -m cron -a "name=‘sync time‘ state=absent", 另外的参数month= day= weekday=
file 设置文件属性
例如:ansible web1 -m file -a "path=/tmp/dir state=directory" 创建dir目录
ansible web1 -m file -a "path=/tmp/nihao owner=root state=touch" 创建一个nihao的空文件
yum 包管理器
例如: ansible web1 -m yum -a "name=httpd state=present" 安装httpd包
copy 完成文件复制
例如:ansible all -m copy -a ‘src=/etc/fstab dest=/tmp/fstab mode=100‘ src指定本地文件绝对路径,dest指定目标主机绝
对路径
service 启动关闭 各个服务
例如:ansible web1 -m service -a ‘name=httpd state=started enabled=true‘ 启动http服务,enabled=true指定开机启动
shell 在shell环境中运行shell命令
例如:ansible all -m shell -a ‘echo "0" | passwd --stdin root‘
script 指定本地一个脚本文件,传递到远程主机上执行一遍
vim /tmp/date.sh
例如:ansible all -m script -a ‘/tmp/date.sh‘ 在所有主机上执行脚本设定时区
标签:
原文地址:http://www.cnblogs.com/linuxboke/p/5468271.html