ansible特点
Ansible和SaltStack一样是基于Python开发,Ansible只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为Ansible基于SSH远程管理,而Linux服务器大部分都离不开SSH,所以Ansible不需要为配置添加额外的支持。
Ansible安装使用都很简单,而且基于上千个插件和模块,实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。
有时候会觉得Ansible比SaltStack执行效率慢,其实并不是软件本身的问题,二是由于SSH服务慢,可以通过优化SSH连接速度和使用Ansible加速模块提高效率
Ansible管理工具的优点:
- 轻量级,更新时只需要在操作机上进行一次更新即可
- 采用SSH协议
- 不需要客户端安装agent
- 批量任务执行可以写成脚本,并且不需要分发到客户端
- 使用Python编写,维护简单
- 支持sudo普通用户命令
- 去中心化管理
Ansible 安装
ansible-2.9.11-1.el8.noarch.rpm sshpass-1.06-9.el8.x86_64.rpm
##需要的两个rpm包——python依赖性在rhel8本地仓库
[root@server151 rpm]# ansible --version
基于Ansible批量管理,需要将被管理的服务器IP列表添加到/etc/ansible/hosts文件中,当然本机也可以是被管理机器
Ansible自动运维工具管理客户端的案例操作,由于Ansible管理远程服务器是基于SSH,在登录远程服务器执行命令时需要远程服务器的用户名和密码,也可以加入-k参数手动输入密码或者基于ssh-keygen生成免密钥
[root@server151 rpm]# cd /etc/ansible/
[root@server151 ansible]# ls
ansible.cfg hosts roles
##ansible.cfg 主配置文件
## hosts 清单文件
ansible [-m module_name] [-a args]
–version 显示版本
-m module 指定模块,默认为command
-v 详细过程 –vv -vvv更详细
–list-hosts 显示主机列表,可简写 --list
-k, --ask-pass 提示输入ssh连接密码,默认Key验证
-C, --check 检查,并不执行
-T, --timeout=TIMEOUT 执行命令的超时时间,默认10s
-u, --user=REMOTE_USER 执行远程执行的用户
ansible.cfg 配置文件常用参数
[defaults] ##基本信息设定
#inventory = /etc/ansible/hosts ##指定清单路径
#remote_user = root ##在受控主机上登陆的用户名称,未指定则为当前使用用户
#ask_pass = True ##是否提示输入ssh密码,如果公钥登陆设定为false
#library = /usr/share/my_modules/ ##库文件存放目录
#local_tmp = ~/.ansible/tmp ##本机临时命令存放目录
#remote_tmp = ~/.ansible/tmp ##远程主机临时py命令存放目录
#forks = 5 ##默认并发量
#host_key_checking = False ##第一次连接受管控主机时是否输入yes建立host_key
#sudo_user = root ##默认sudo用户
#ask_sudo_pass = True ##每次受控主机执行ansible命令时是否询问sudo密码
#module_name = command ##默认模块,默认使用command 可修改为shell
#log_path = /var/log/ansible.log ##日志文件路径
[privilege_escalation] ##身份信息设定
#become=True ##连接后是否自动切换用户
#become_method=sudo ##设定切换用户方式 通常为sudo
#become_user=root ##在被控主机上切换的用户 不建议使用root用户
#become_ask_pass=False ##是否需要为becone_method提示输入密码。默认为false
资源清单
资源清单文件目录
/etc/ansible/hosts
列出资源清单测试_1
[root@server151 ansible]# vim hosts
www.test.org
www.test1.org
[test]##指定组的名称
172.25.254.152
[root@server151 ansible]# ansible all --list
hosts (3):
www.test.org
www.test1.org
172.25.254.152
###列出所有资源
[root@server15