自动化运维工具-ansible详解
一、ansible简介
ansible是一种基于python开发的自动化运维工具,它只需要在服务端安装ansible,无需在每个客户端安装客户端程序,通过ssh的方式来进行客户端服务器的管理,基于模块来实现批量数据配置、批量设备部署以及批量命令执行。
ansible大致模块工作原理见下图:
大致工作原理就是ansible程序调用读取/etc/ansible/ansible.cfg配置文件获取主机列表清单/etc/ansible/hosts文件,获取所要处理的主机列表,然后查看剧本任务,在根据剧本中一系列任务生成一个临时的脚本文件,然后将该脚本文件发送给所管理的主机,脚本文件在远程主机上执行完成后返回结果,然后删除本地临时文件
二、ansible的安装部署及免密设置
ansible安装比较简单,只要安装第三方源后,使用包管理工具dnf一键安装即可,步骤如下:
dnf install -y epel-release
dnf install -y ansible
安装完成后,为了方便管理可以配置ssh免密,命令如下:
ssh-keygen -t rsa //在/root/.ssh/目录下生产公钥(id_rsa.pub)和私钥(id_rsa)两个文件
ssh-copy-id root@<ip> //分发秘钥至需要免密登录的目标设备
三、ansible工作模式
ansible分为两种工作模式:
一是adhoc(点对点模式):此模式相当于对管理主机执行单个的shell命令
二是playbook(剧本模式):该模式应用较多,该模式是指将一系列任务整合形成一个剧本,以此来达成某种功能(譬如部署某个服务,数据库备份等)的目的。
上述两种模式可类比于一个是执行单个shell命令,一个是shell脚本。
四、ansible配置文件关键配置介绍
4.1、ansible.cfg配置文件
inventory :管理的主机清单文件路径
library:ansible的模块存放的目录
remote_tmp:上述工作原理中提到的将脚本发送至对端的临时目录
local_tmp:上述工作原理中提到本地生成脚本存放的临时目录
forks:并发连接数,默认为5
sudo_user :命令执行用户
remote_port :访问管理主机的端口
host_key_checking:设置是否检查SSH主机的密钥,默认为false
timeout :ssh连接被管理主机的超时时间
log_path:ansilbe日志文件路径
4.2、hosts配置文件
hosts配置文件是ansible管理的主机列表文件,里面记载着管理主机的ip、端口等信息
其有两种方式:
一是单个主机名或主机ip记录
二是将某一类主机分组记录,譬如数据库主句:
[dbserver]
192.168.1.1
192.168.1.2
192.168.1.3
........
当需要对该类主机进行操作时,只要调用dbserver即可调用该分组内所有主机,且此处可支持通配符
五、 ansible常用参数
ansible-doc -l :列出所有模块
ansible-doc -s <模块名> :查看模块的参数信息
ansible --version :查看ansible版本
ansible -v :输出详细详细;-vv:输出更详细的信息
ansible -m :指定调用的模块名称
ansible -a :调用模块的参数
ansilbe -c :测试命令执行结果,不实际执行
ansible -k :提示输入ssh的秘密,而不是基于ssh认证
ansible -u :指定执行命令的用户
ansilbe -i :指定访问的主机列表文件
ansilbe -f :指定并发进程数
六、ansible常用模块
以下模块举例主机组为client
1、ping模块连通性测试
[root@server ~]# ansible client -m ping //检测主机组主机连通性
192.168.91.128 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
运维点滴: 期待后续
后爸: 为啥docker镜像里下载不了软件,ssh服务,vim。gdb都下载不了????
chenxianshengya: git创建分支