1.Ansiable简介

站在巨人的肩上 / 2023-05-07 / 原文

1.ansible简介

  ansible是一种基于python开发的自动化运维工具,它只需要在服务端安装ansible,无需在每个客户端安装客户端程序,通过ssh的方式来进行客户端服务器的管理,基于模块来实现批量数据配置、批量设备部署以及批量命令执行。

2.ansible工作原理

  

  大致的工作原理就是ansible程序调用读取/etc/ansible/ansible.cfg(这个是取决于读取配置文件顺序)配置文件,获取主机列表清单hosts文件,获取所要处理的主机列表,然后查看playbooks,根据playbooks生成一个临时的脚本文件,然后将该脚本文件发送给所管理的主机,脚本文件在远程主机上执行完成后返回结果,然后删除本地临时文件。

3.ansible工作模式

  ansible分为两种工作模式:

  一是adhoc(点对点模式):此模式相当于对管理主机执行单个shell命令

  二是playbook(剧本模式):该模式应用较多,该模式是指将一系列任务整合形成一个剧本,以此来达成某种功能(比如部署某个服务,数据备份等)的目的。

  上述两种模式可类比于一个是用于执行单个shell命令,一个是shell脚本。

4.ansible安装

  ansible安装很简单,当配置了阿里镜像源之后,可以直接执行: yum -y install ansible 进行安装,然后也会自动安装ansible所需依赖包等。

  用yum安装之后,会在/etc/ansible/ 下面生成ansible配置文件:  

[root@db04 ansible]# cd /etc/ansible
[root@db04 ansible]# ls
ansible.cfg  hosts  roles

     这里可以看到生成了ansible.cfg配置文件(这个可以看做是配置模版)以及hosts 还有一个roles目录。

  通常配置ansible的话,我们一般会配置ansible机器到其它主机节点免密登录。

  1.首先配置一下/etc/hosts文件   这里要配置一下远程节点ip和域名

  2.然后执行如下命令

  ssh-keygen -f /root/.ssh/id_rsa -N ''

  for i in db01 db02 
  do
      ssh-copy-id $i
  done

5.ansible配置文件读取顺序

  • 首先检测ansible_config变量定义的配置文件
  • 其次检查当前目录下的./ansible.cfg文件
  • 再次检查当前用户家目录下~/ansible.cfg文件
  • 最后检查/etc/ansible/ansible.cfg文件 

6.ansible配置文件关键配置介绍

  6.1 ansible.cfg配置文件 

nventory :管理的主机清单文件路径
library:ansible的模块存放的目录
remote_tmp:上述工作原理中提到的将脚本发送至对端的临时目录
local_tmp:上述工作原理中提到本地生成脚本存放的临时目录
forks:并发连接数,默认为5
sudo_user :命令执行用户
remote_port :访问管理主机的端口        
host_key_checking:设置是否检查SSH主机的密钥,默认为false
timeout :ssh连接被管理主机的超时时间
log_path:ansilbe日志文件路径

  6.2 hosts配置文件 

hosts配置文件是ansible管理的主机列表文件,里面记载着管理主机的ip、端口等信息
其有两种方式:
一是单个主机名或主机ip记录
二是将某一类主机分组记录,譬如数据库主句:
[dbserver]    
192.168.1.1
192.168.1.2
192.168.1.3
........
当需要对该类主机进行操作时,只要调用dbserver即可调用该分组内所有主机,且此处可支持通配符

7.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 :指定并发进程数