Ansible学习笔记
1、Ansible介绍
Ansible是一款简单的运维自动化工具,只需要使用SSH协议连接就可以来进行系统管理,自动化执行命令,部署等任务。
Ansible的特点:
1、Ansible不需要单独安装客户端,也不需要启动任何服务
2、Ansible是Python中的一套完整的自动化执行任务模块
3、Ansible Playbook采用yaml配置,对于自动化任务执行过一目了然
Ansible组成结构:
Ansible | Ansible的命令工具,核心执行工具;一次性或临时执行的操作都是通过该命令执行 |
Ansible Playbook | 任务剧本(又称任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,yaml格式 |
Inventory | Ansible管理主机的清单,默认是/etc/ansible/hosts文件 |
Modules | Ansible执行命令的功能模块,可以自定义模块 |
Plugins | 插件,模块功能的补充,常有连接类型插件,循环插件,变量插件,过滤插件,插件功能用的较少 |
API | 提供给第三方程序调用的应用程序编程接口 |
1.1、Ansible文件介绍
配置文件 | |
/etc/ansible/ansible.cfg | 主配置文件,配置Ansible工作特性 |
/etc/ansible/hosts | 主机清单 |
/etc/ansible/roles | 角色存放目录 |
程序文件 | |
/usr/bin/ansible | 主程序,临时命令执行工具 |
/usr/bin/ansible-doc | 查看配置文档,模块功能查看工具 |
/usr/bin/ansible-galaxy | 下载/上传优秀代码或模块到官网平台 |
/usr/bin/ansible-playbook | 定制自动化任务,编排剧本工具 |
/usr/bin/ansible-pull | 远程执行命令工具 |
/usr/bin/ansible-vault | 文件加密工具 |
/usr/bin/ansible-console | 基于Console界面与用户交互工具 |
1.2、Ansible配置文件
Ansible配置文件:/etc/ansible/ansible.cfg,一般保持默认 | |
[Defaults] | |
#inventory=/etc/ansible/hosts | 主机列表配置文件 |
#library=/usr/share/my_modules | 库文件存放目录 |
#remote_tmp=~/.ansible/tmp | 存放临时py命令文件的远程主机目录 |
#local_tmp=~/.ansible/tmp | 本机临时命令执行目录 |
#forks=5 | 默认并发数 |
#sudo_user=root | 默认sudo用户 |
#ask_sudo_pass=True | 每次执行ansible命令是否询问ssh密码 |
#ask_pass=True | 每次执行ansible命令是否询问sudo密码 |
#remote_port=22 | 远程主机ssh端口 |
#host_key_checking=False | 检査对应服务器的host_key,建议取消注释 |
#log_path=/var/log/ansible.log | 日志文件 |
1.3、Ansible执行过程
Ansible执行过程:
1、加载配置文件,默认为/etc/ansible/ansible.cfg
2、加载对应模块文件,如command
3、通过ansible将模块或命令生成对应临时py文件,并将该文件传输至远程主机执行用户$HOME/.ansible/tmp/ansible-tmp-xx/xxx.py
4、赋予xxx.py文件执行权限
5、执行xxx.py文件并返回结果
6、删除xxx.py文件,sleep 0退出
执行状态:
绿色:执行成功,不需要执行变更操作
黄色:执行成功,且需要执行变更操作
红色:执行失败
1.4、Ansible主机清单
Ansible主机清单配置文件为/etc/ansible/hosts,常见如下几种方式:
all | ansible all -m ping |
* | ansible “*” -m ping |
逻辑或 | ansible “webserver:appserver” -m ping |
逻辑与 | ansible “webserver:&dbserver” -m ping |
逻辑非 | ansible “webserver:!dbserver” -m ping |
正则表达式 | ansible “~(web|db).mengshicheng.io” -m ping |