ansible是运维的自动化工具。
特点:
①部署简单,只需在主控端部署ansible环境,被控端无需做任何操作。
②默认使用ssh协议对设备进行管理,是基于ssh来和远程主机通信的。
③有大量常规运维操作模块,可实现日常绝大部分操作。
④配置简单,功能强大,可扩展行强。
⑤轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可。
ansible组成:
ansible:ansible核心程序
hostInventory: 记录由ansible管理的主机信息,包括端口,密码,ip,用户名等
playbooks: 剧本yaml格式文件,
coreModules: 核心模块,主要操作是通过调用核心模块来管理任务。
CustomModules: 自定义模块
ConnectionPlugins: 连接插件
ansible任务执行
①ad-hoc——点对点模式
②playbook模式——剧本模式
ansible执行工作,工作原理
①加载自己的配置文件,默认/etc/ansible/ansible.cfg
②查找对应的主机配置文件,找到要执行的主机或者组——hosts文件
③加载模块文件
④通过ansible将模块或命令生成对应的临时py文件,将该文件传输到远成服务器。
⑤执行该文件,
⑥执行并返回结果
⑦删除临时py文件,并退出
ansible常用模块参数
参数 | 说明 |
---|---|
-a | 执行命令, ansible web -m shell -a 'cat /etc/passwd ‘ |
-K | 提示输入密码使用sudo |
-k | 登录密码,提示输出ssh密码而不是基于秘钥验证 |
-C | 模拟运行环境并预运行,可以进行查错测试 |
-i | 指定主机清单的路由 |
-f | 并行任务数,默认为5,即并发量 |
-m | 需要执行模块的参数 |
ansible常用模块
<font color='red'>模块 | 说明 |
---|---|
ping | 主机连通测试 |
template | 将嵌入了变量的文件,上传到远程主机 |
command | 可以直接在远程主机上执行命令,并将结果返回本主机,但不支持| 管道命令 |
shell | 远程主机上调用shell解释器运行命令,支持shell命令的所有功能 |
copy | 将文件上传到远程主机 |
file | 主要是对文件进行管理,列如创建文件,为文件设置权限 |
fetch | 从远程某主机获取文件到本地 |
cron | 适用于管理cron计划任务 |
yum | 用于软件的安装 |
service | 用于对服务程序的管理 |
user | 用来管理用户账户 |
group | 用于添加或删除组 |
script | 将本地脚本直接运行在远程主机上 |
lineinfile | 用于对文件进行添加内容 |
mount | 用于管理被控端设备的挂载 |
unarchive | 用于远程主机上解包文件 |
hostname | 用于修改被控制端的主机名 |
uri | 下载软件包 |
playbook中变量的引用
1: 命令行带入变量 -e var=值
2: yaml文件里定义vars引入变量 vars:
- test: wawa
3:hosts主机清单里带入变量
[test:vars]
test=wawa
4:roles带入变量
test: wawa
ansible playbook文件解析
files: 存shell脚本,安装包,文件,不带变量的文件
tasks: 任务清单,即需要完成的操作
handlers: 触发器
vars: 用于存放自定义变量
templates: 文件存有变量,存放文件模版
tests: 测试tasks文件是否能正常运行
定义角色
①手动定义角色——cd roles目录,手动创建ansible playbook文件
②自定义角色
ansible-galaxy init #角色名
tree #查看文件