目录
什么是ansible
是自动化运维,基于python开发,基于ssh协议。
很好的实现了批量系统配置,批量程序部署,批量运行命令等功能
ansible 特点
- 部署Ansible环境,被控端无需做任何操作;
- SSH协议对设备进行管理;
- API及自定义模块,可通过Python轻松扩展;
- Playbooks来定制强大的配置、状态管理;
- agent,更新时,只需在操作机上进行一次更新即可;
- Web管理界面和REST API接口——AWX平台。
上图为ansible的基本架构,从上图可以了解到其由以下部分组成:
核心:ansible
核心模块(Core Modules):这些都是ansible自带的模块
扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块
插件(Plugins):完成模块功能的补充
剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
链接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
主机群(Host Inventory):定义ansible管理的主机
ansible yum安装
yun安装:
1、强烈建议使用yum 进行安装,或者装所有服务器配置为同一版本的python以避免因为python版本而导致的错误。
#yum install sshpass 有时交互输入密码时自动交互使用。
php3安装:
2、使用pip3 进行安装。最好将所有服务器安装同一版本的python,以避免版本问题。
pip3 install ansible paramiko PyYAML Jinja2
yun安装操作ansible
前提需要epel.repo源
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
其次进行yum安装
yum -y install ansible
ansible 程序结构
安装目录如下(yum安装):
配置文件目录:/etc/ansible/
执行文件目录:/usr/bin/
Lib库依赖目录:/usr/lib/pythonX.X/site-packages/ansible/
Help文档目录:/usr/share/doc/ansible-X.X.X/
Man文档目录:/usr/share/man/man1/
ansible配置文件
配置文件为
[root@ansible ansible]# vim /etc/ansible/ansible.cfg
设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
host_key_checking = False
指定一个存储ansible日志的文件(默认不记录日志)
log_path = /var/log/ansible.log
ansible配置文件常见参数:
#这个参数表示资源清单inventory文件的位置
inventory = /etc/ansible/hosts
#指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
library = /usr/share/ansible
#并发连接数,默认为5
forks = 5
#设置默认执行命令的用户
sudo_user = root
#指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
remote_port = 22
#设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
host_key_checking = False
#设置SSH连接的超时时间,单位为秒
timeout = 60
#指定一个存储ansible日志的文件(默认不记录日志)
log_path = /var/log/ansible.log
基础命令
语法
ansible <IP> 参数(-m) command 参数(-a) "<命令>"
-m 指定要执行的模块,默认模块为command
-a 传递参数给模块
【连接选项,用于如何连接主机】
-k 询问连接时的ssh密码 --针对可以做ssh密钥通信方可连接不在输入密码
-u 用于指定用户
【权限控制】
-b 用于升级权限 --针对与一些用户没有权限时使用
-K 提升权限时的密码
-"命令" 提交模块时参数