一、Ansible安装配置
Ansible 能够安装到 Linux、BSD、Mac OS X 等平台,Python 版本最低要求为 2.6。
CentOS直接使用yum安装即可,安装之前先安装epel源码。
rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
然后执行命令: yum install ansible -y 安装即可。
安装完后正式来使用,ansible默认配置文件路径为:
/etc/ansible
默认hosts内容可以配置分组,我们可以定义各种ip及规则(自动化的前提就是ssh互通免密钥)
ansible主要参数如下:
-u username 指定ssh连接的用户名,即执行后面命令的用户
-i inventory_file 指定所使用的inventory文件的位置,默认为/etc/ansible/hosts
-m module 指定使用的模块,默认为command,常见模块有command、shell、script、yum、copy等等
-f 10 指定并发数,并发量大的时候,提高该值
--sudo [-k] 当需要root权限执行的化,-k参数用来输入root密码。
-a 指定模块的参数,可以是命令等等。
例:
Ansible日常使用
ansible -i /etc/ansible/hosts all -a “date”
Ansible正则表达式使用
ansible 192.168.33.* -m command -a "df -h"
远程批量拷贝文件或者目录
ansible all -m copy -a 'src=/etc/passwd dest=/tmp/ mode=755 owner=root'
Ansible YUM远程批量安装
Ansible 192.168.* -m yum -a "name=sysstat,screen,ntpdate state=installed"
二、 常见模块:
1. 默认模块:command 例如:ansible all -a '命令'【针对特殊模块有问题】
2.shell模块 例如:ansible 主机组 -m shell -a ‘echo $HOSTNAME’ 【单引号支持特殊符号】
3.script模块:所有主机上运行一个脚本。不需要推送脚本,自动将脚本推送到目的主机并执行。
ansible all -m script -a '/data/shell/test.sh'
4.copy模块:批量推送文件,把文件批量推送到各主机组
ansible all -m copy -a 'src=源文件 dest=目标文件 backup=yes'
5.fetch模块:批量抓取模块,比如抓取日志 只能复制单个文件,不能复制目录。
ansible all -m fetch -a 'src=远程文件 dest=本地目录'
6.yum模块:yum安装卸载模块
ansible all -m yum -a 'name=vsftp'
7.service模块: 服务器启动控制
ansible all -m service -a 'name=vsftpd state=started enable=yes'
8.stat模块:获取文件状态
ansible all -m stat -a "path=/etc/sysctl.conf"
三、Playbook配置管理
Ansible Playbook 收集命令与任务集,采用YAML语法结构
案例:
使用playbook实现在客户端安装screen软件
在/etc/ansible/目录下,新建screen.yaml文件,内容如下:
- hosts: all
remote_user: root
tasks:
- name: yum install screen
shell: yum install screen -y
文件解析:-hosts:all指定对所有hosts生效,remote_user表示远程root,tasks表示需要执行的任务;name显示的名称,shell后面接:需要在远程客户端执行的命令。可以写多个命令,以;分号隔开即可,例如 shell: yum install screen -y ;mkdir /tmp/`date +%Y%m%d`