ansible 是一个自动化的工具,所以ansible并没有服务需要进行管理;主要来实现企业级的自动化批量部署或下发配置等等,并且ansible 还是一个无代理架构,可以通过应用自身的能力来管理应用本身。
ansible 优势:不需要去做重复的事,配置的下发和应用的部署,以及滚动更新
ansible 执行任务的方式主要为以下两种:
ad-hoc ==》临时命令 ==》 用来执行简单的任务
playbook ==》 剧本 ==》 用来执行复杂的任务
用户通过 ansible 下发请求后执行的步骤如下:
第一步,回去 Host Inventory(主机清单)中确认需要操控的主机是否在清单中;
第二步,检查用户所使用的是哪一个Core Modules(模块),这里模块分为两种,一种是Core Modules 核心模块,第二种则是 Costorne Modules 扩展模块,扩展模块的出现是为了弥补核心模块功能的不足;
第三步,找到模块后就会根据 Connection Plugins 链接插件链接到被控主机;
第四步,是将模块推送到远程主机来执行(这里其实就是python脚本,执行完毕后就会自己删除掉);
第五步,执行完毕后则会关闭连接。
Ansible 安装
安装方式:
(1)使用yum安装
(2)使用源码包编译安装
(3)使用python的pip包管理器安装
Ansible 的主机清单
ansible 所有被管理的对象都可以叫做主机例如服务器,路由器,存储等等,并且ansible只能管理清单中的主机,如果执行任务的主机不在清单里面,那么ansible就无法执行任务;
所有记录主机的文件被叫做主机清单==》inventory ==》默认清单 ==》/etc/ansible/hosts
ansible 文件定义主机的方式:
(1)使用主机名定义主机,例如:host1.example.com(需注意,该主机名是可以解析成IP)
(2)使用IP来定义主机,例如 192.168.1.1
(3)匹配连续的IP或字母,例如 192.168.1.[1:100],node[a:z],如下图其中 ansible all --list-host 是列举出清单中所有的主机
(4)通过分组的方式来定义主机(注:如果清单中同时出现主机组和主机,那么主机必须在主机组前面),如下图所示
特殊查询:ansible ungrouped --list-hosts #表示查询不属于任何组的主机
Ansible 的配置文件
默认:
重点:/etc/ansible/ansible.cfg 主配置文件 ==》如果配置文件不存在会使用默认配置
/etc/ansible/hosts inventory主机清单
/etc/ansible/roles 角色存放的目录
ansible.cfg 配置模块:
[defaults]==>通用配置项
[inventory]==>主机清单配置项
[privilege_escalation]==>权限提升配置项
[paramiko_connection]==>远程链接的模块,适用与rhel6之前的系统版本
[ssh_connection]==>SSH的配置项
[persistent_connection]==>保持长链接配置项
[accelerate]==> 链接加速配置项
[selinux]==>SELINUX配置项
[colors]==>颜色配置项
[diff]==>前后两次执行对比
#ansible 的配置文件在系统上会存在多份,其中优先级如下,从高到低
1,ANSIBLE_CONFIG 环境变量
2,./ansible.cfg 当前的工作目录
3,~/.ansible.cfg 当前用户的家目录
4,/etc/ansible/ansible.cfg 默认配置文件
基础配置示例:
(1)优先确认有被控设备正常运行,然后再来配置ansible清单(这里是通过主机名来配置的ansible被控清单,主机名本机已在/etc/hosts文件中做了指定IP解析)
(2)配置 ansible.cfg 配置文件
<<EOF
#配置参数含义
inventory = ./hosts #指定当前目录下的hosts为ansible主机清单
remote_user = devops #使用devops用户来连接到被控
ask_pass = false #不使用密码,而是使用秘钥验证
bcome=True #开启提权
become_method=sudo #提权方式为sudo
become_uset=root #提权到root用户
become_ask_pass=false #提权时不需要验证密码
ssh_args #ssh连接项开启,保障连接复用提升性能
EOF
ansible all -m ping #测试ansible的联通性
<< EOF
初期测试时可直接通过ssh秘钥特性实现免密登陆,同步来验证ansible的联通性
EOF