一、基本概念
一个软件工具,基于网络去管理被控节点,使用这个工具前需要具备python环境,支持所有类型系统的管理,不需要在被控节点上安装代理软件或客户端软件,
无代理架构:通过ssh管理linux系统、winrm管理windows系统、snmp管理网络设备、通过云上api接口管理公私有云
模块化管理:可以使用各类语言来开发模块
多级控制:可以有多个主控节点,负载分担主控的压力
配置文件简单:通过yaml文件编写
幂等性:执行一次和重复执行多次 相同的动作,结果都是一样
二、安装
源码包安装:
官方的稳定版本,只更新到2.9版本
releases.ansible.com
wget https://releases.ansible.com/ansible/ansible-2.9.0rc1.tar.gz
wget https://github.com/ansible/ansible/archive/refs/tags/v2.9.0.zip
解压tar包
构建包
安装
rpm包安装
Index of /ansible/rpm/releasehttps://releases.ansible.com/ansible/rpm/release/使用网址构建一个yum网络源
本地iso镜像文件安装(模块少)
rhel9:yum install ansible-core
rhel8:yum install ansible
可以通过下载集合的方式增加模块
galaxy.ansible.com
使用pip包管理器安装ansible
dnf provides */pip 根据文件名查找属于哪个软件包
pip install ansible==2.9.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
-i后面接的加速器地址
通过容器安装—ansible的导航器
1、安装导航器
dnf install ansible-navigator -------需要依据相关的ansible专属镜像做作为光盘挂载本地
2、通过网络拉取容器镜像
(需要订阅红帽官网),需要login登录
ansible-navigator images
2、通过本地光盘自带的容器安装,导出tar包
3、每次启动容器默认都是会从网上拉取镜像,我们需要配置一个本地自动化执行环境:在家目录下创建一个.ansible-navigator.yml 文件
作用:如果本地有镜像,就使用本地的镜像
三、ansible的管理
命令集合
ansible-doc -l | wc -l or grep 模块名 查看所有可用模块
ansible-doc -s user(模块名) 查看模块可用参数
ansible-doc 模块名 查看使用案例examples
1、添加主机列表
去配置文件中修改参数
/etc/ansible/ansible.cfg
删除注释符号,定义主机清单
复制example目录下的主机清单到配置文件所在的目录下
通过ip地址去定义
通过主机名去定义,必须保证主机名和ip地址有对应关系(配置/etc/hosts文件)
通过主机组进行定义
通过范围定义
主机组嵌套
二、查看主机清单
可以使用,号隔开主机名,查看多个主机或者主机组
以通配符来匹配主机
取交集,以m开头的主机并且处于mysql主机组,使用单引号
使用正则表达式匹配
2、配置文件优先级
从高到低
第一:ansible_config 变量
第二:当前所在的工作目录
第三:用户家目录下的.ansible.config
第四:/etc/ansible/ansible.cfg文件
定义一个环境变量ansible_config=/opt/ansible.cfg(uset ANSIBLE_CONFIG 取消环境变量)
将ansible.cfg配置文件拷贝到/opt目录下
将环境变量取消后,在opt目录下查看配置文件仍然是/opt下的ansible.cfg,此时是第二优先级生效
3、调用ansible执行任务
先备份配置文件/etc/ansible/ansible.cfg
[dafaults]
inventory = /etc/ansible/hosts 主机清单文件路径
ask_pass = True 是否通过需要密码验证,需要保证被控节点密码相同remote_user = devops 指定 远程 被控主机 时所使用的用户
[privilege_escalation]
become = True
become_method = sudo
become_user= root
become_ask_pass = False[ssh_connection] 开启ssh加速
ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s
配置主机清单
ad-hoc方式执行任务
ansible 主机/主机组 -m 模块 -a ‘模块参数’ ansible参数
ansible all -m she