######################
Ansible
自动化运维工具
######################
一、ansible简述
1、客户端不用安装,不用做任何操作,是基于SSH协议来管理的
2、Ansible是基于python语言开发的自动化运维工具,2015年被红帽公司以1.5亿美金收购,工作方式为C/S架构,但客户端不用安装任何工具、插件。只要安装了openssh即可。
3、Ansible 自动化工具工作流程和原理:
Ansible运维工具是C/S架构,在Server商品安装Ansible软件程序,通过软件程序调用本地模块或插件,读取本地Hosts列表文件(记录客户端的IP列表),基于SSH协议远程连接客户端,将任务发送给客户端,让客户端执行发送的任务,最终返回执行结果。
二、ansible特点:
轻量级,
基于SSH协议
不需要去客户端安装AGENT
批量执行脚本,不用放到被控节点中
基于PYTHON编写,维护更简单
支持sudo普通用户命令
去中心化管理
服务端与客户端互不影响
三、安装配置
python 2.6以上
[root@localhost ~]#yum install epel-release
[root@localhost ~]#yum install ansible
[root@localhost ~]# rpm -qa|grep ansible
ansible-2.9.13-1.el7.noarch
配置文件
/etc/ansible/ansible-cfg
inventory =/etc/ansible/hosts 被控端IP列表
library =/usr/share/my_modules ansible模块
remote_tmp 定义临时缓存文件
forks =5 并行进程数,即同时操作的被控端数
sudo_user =root sudo远程执行用户名
ask_sudo_pass=true 使用sudo,是否需要输入密码
system_warnings = False
deprecation_warnings = False
command_warnings = False
nocolor=1 1为打开颜色
四、ansible使用方法
1、修改默认命令为shell
vim /etc/ansible/ansible-cfg
command_name = shell 改默认模块名称
command_warnings=False 支持警告
2、建组
hosts里加[]
[root@localhost ~]# cat /etc/ansible/hosts
[lvs]
192.168.1.10 ansible_user=admin ansible_password=123456
192.168.1.11
[mysql]
192.168.0.12
192.168.0.13
[php-fpm]
192.168.0.14
192.168.0.15
使用
[root@localhost ~]#ansible php-fpm -m command -a "mysql install -y php-fpm php php-devel"
3、常见命令
所有机器
ansible all -m command -a "df -h"
部分主机,网段
ansible 192.168.0.* -m command -a "df -h"
两台
ansible 192.168.0.10,192.168.0.11 -m command -a "df -h"
五、ansible模块使用
yum模块安装
#ansible lvs -m yum -a "name=epel-release,ntp status=install" -vvvv
vvvv 显示详细过程
copy模块
#ansible php -m copy -a "src=/data/autoinstallphp.sh dest=/data/autoinstallphp.sh mode=0755"
复制,改权限,改宿主及组,备份旧文件
#ansible php -m copy -a "content='hello' dest=/tmp/aaa mode=644 owner=nginx group=nginx backup=yes"
删除文件及目录
#ansible php -m file -a "path=/tmp/212 state=absent"
synchronize模块
数据同步
只改变才会覆盖,可增量、可空目录
同步本地文件至php远程机器中
#ansible php -m synchronize -a "src=/tmp/ dest=/tmp/"
同步时,删除客户端中源端没有的文件及目录
#ansible php -m synchronize -a "src=/tmp/ dest=/tmp/ delete=yes"
另:免密设置
#################
免密钥配置
#############
ssh-keygen 全部回车
ls /-l /root/.ssh/id_rsa 钥匙,私钥
ls /-l /root/.ssh/id_rsa.pub 锁,公钥
ssh-cp-id -i /root/.ssh/id_rsa.pub 192.168.1.142
把锁给别人,自己拿钥匙解锁
#################
----------------------------------end