当前位置: 首页 > web >正文

Ansible配置文件与主机清单

Ansible配置文件与主机清单

在这里插入图片描述

Ansible的配置文件与主机清单是实现自动化管理的基础——配置文件定义Ansible的运行规则(如连接用户、并发数、权限升级等),主机清单指定待管理的目标主机及分组,二者配合确保Ansible命令与Playbook高效执行。本章将从配置文件结构、优先级、核心参数解析,到主机清单定义、实战配置展开详细说明。

一、/etc/ansible目录下的核心文件与目录

通过包管理工具(如yumapt)安装Ansible后,默认在/etc/ansible目录下生成3个核心文件/目录,分别承担不同功能:

文件名/目录名类型核心作用
hosts文件Ansible的默认主机清单配置文件,用于记录待管理的受控主机IP/域名及分组信息。
ansible.cfg文件Ansible的主配置文件,定义Ansible的全局运行参数(
roles目录角色(Role)的默认存储目录,用于存放按功能模块化的Playbook

二、Ansible配置文件的优先级

Ansible配置文件以ini格式存储(键值对+分区结构),支持通过环境变量、不同路径的配置文件覆盖默认参数。运行Ansible命令(如ansibleansible-playbook)时,会按以下从高到低的顺序查找配置文件,优先级高的配置会覆盖低优先级的配置:

  1. 环境变量ANSIBLE_CONFIG
    优先级最高,通过设置环境变量指定自定义配置文件路径,例如:

    export ANSIBLE_CONFIG=/home/student/ansible/ansible.cfg
    

    该方式适合临时切换配置文件场景(如不同项目使用不同配置)。

  2. 当前工作目录下的./ansible.cfg
    若当前目录存在ansible.cfg,则优先使用该文件(无需设置环境变量),适合项目级配置隔离(如每个项目目录下存放独立配置)。

  3. 当前用户家目录下的~/.ansible.cfg
    用户级配置文件,仅对当前用户生效,适合自定义个人常用配置(如默认连接用户、禁用主机密钥检查)。

  4. 系统默认配置文件/etc/ansible/ansible.cfg
    优先级最低,是Ansible安装时自动生成的全局默认配置,若未通过前3种方式指定配置,将使用此文件。

三、主配置文件/etc/ansible/ansible.cfg核心参数解析

[defaults]
# 1. 主机清单配置
inventory = /etc/ansible/hosts  # 指定默认主机清单路径,可修改为自定义路径# 2. 模块与工具路径
library = /usr/share/my_modules/  # Ansible默认搜寻自定义模块的目录(第三方模块存放路径)
module_utils = /usr/share/my_module_utils/  # 模块工具文件存放目录
roles_path = /etc/ansible/roles  # 角色(Role)的默认存储路径,可添加多个路径(用冒号分隔,如"/path1:/path2")
collections_path =  # 集合(Collection)的存储路径,第三方模块集合(如community.general)通常安装在此# 3. 临时文件配置
remote_tmp = ~/.ansible/tmp  # 受控主机上存放临时Python命令文件的目录
local_tmp = ~/.ansible/tmp   # 控制节点上存放临时文件的目录# 4. 并发与连接配置
forks = 5  # 默认并发执行任务的进程数(值越大执行越快,建议根据控制节点性能调整,如10、20)
poll_interval = 15  # 轮询任务状态的时间间隔(秒)
remote_port = 22  # 受控主机的SSH端口(默认22,若SSH端口修改需对应调整)
remote_user = root  # 连接受控主机时使用的默认用户(建议改为普通用户,再通过提权获取权限)
host_key_checking = False  # 是否检查受控主机的SSH密钥(False可避免首次连接时手动确认,适合自动化场景)# 5. 密码与权限询问配置
ask_sudo_pass = True  # 执行`sudo`时是否询问密码(默认no,若受控主机sudo需密码则设为yes)
ask_pass = True       # 连接受控主机时是否询问SSH密码(默认no,若未配置免密登录则设为yes)

2. [privilege_escalation]:特权升级配置

Ansible默认使用连接用户执行任务,但普通用户通常无管理员权限(如安装软件、修改系统配置),该分区用于配置“权限升级”(类似sudo),让普通用户临时获取root权限:

[privilege_escalation]
become = true          # 是否默认开启权限升级(true表示自动提权,false需手动在Playbook中指定)
become_method = sudo   # 权限升级方式(默认sudo,其他可选su、pbrun等)
become_user = root     # 升级后的目标用户(默认root,即提权到root)
become_ask_pass = false# 执行提权时是否询问密码(false表示无需密码,需提前在受控主机配置sudo免密)

四、主机清单配置

主机清单是Ansible识别“管理范围”的核心,用于定义受控主机的IP/域名、分组、组内变量等,示例如下:

# 1. 单主机(直接写IP或域名,未分组)
host1.example.com    # 域名形式
host2.example.com
192.168.100.10       # IP形式# 2. 主机组(用"[组名]"标识,组内包含多个主机)
[hostservers]        # 组名:webservers(Web服务主机组)
host1.example.com
host2.example.com# 3. 子组(用"[父组名:children]"标识,父组包含多个子组)
[all:children]      # 父组名:all(内置组,代表所有主机),子组为hostservers
hostservers

2. 主机清单常用命令

通过ansible命令查看清单中的主机信息,验证清单配置是否正确:

# 1. 查看清单中所有受控主机(-i指定清单路径,--list-hosts仅显示主机列表)
ansible all -i /etc/ansible/hosts --list-hosts# 2. 查看指定组(如webservers)包含的受控主机
ansible hostservers -i /etc/ansible/hosts --list-hosts# 3. 查看自定义清单(如/home/student/ansible/inventory)中的主机
ansible all -i /home/student/ansible/inventory --list-hosts

五、实战:在控制节点配置Ansible

以“控制节点server.example.com”为例,完成Ansible的安装与基础配置,满足指定需求:

1. 步骤1:安装Ansible所需软件包

根据系统类型选择安装命令(以RHEL/CentOS为例):

# 1. 配置YUM仓库(若未配置)
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo# 2. 安装Ansible
sudo dnf install -y ansible# 3. 验证安装(查看Ansible版本)
ansible --version

2. 步骤2:创建静态主机清单/home/student/ansible/inventory

需求:node1dev组、node2test组、node3prod组,且prod组是webservers组的子组。
创建并编辑清单文件:

# 1. 创建目录(若不存在)
mkdir -p /home/student/ansible# 2. 编辑清单文件
vim /home/student/ansible/inventory

写入以下内容:

# 定义各主机及所属组
[dev]
node1[test]
node2[prod]
node3# 定义子组:webservers包含prod组
[webservers:children]
prod

3. 步骤3:创建配置文件/home/student/ansible/ansible.cfg

需求:指定主机清单路径为/home/student/ansible/inventory,角色路径包含/home/student/ansible/roles
创建并编辑配置文件:

vim /home/student/ansible/ansible.cfg

写入以下内容:

[defaults]
# 指定主机清单路径(覆盖默认的/etc/ansible/hosts)
inventory = /home/student/ansible/inventory# 指定角色路径(支持多个路径,用冒号分隔,此处添加自定义路径)
roles_path = /home/student/ansible/roles:/etc/ansible/roles# 可选:添加常用优化配置
remote_user = student  # 用student用户连接受控主机(需提前配置免密登录)
host_key_checking = False  # 禁用SSH密钥检查,避免手动确认
forks = 10  # 并发数调整为10,提升执行效率[privilege_escalation]
become = true          # 默认开启提权
become_method = sudo   # 提权方式为sudo
become_user = root     # 提权到root
become_ask_pass = false# sudo免密(需在受控主机配置student用户sudo免密)

4. 步骤4:验证配置

# 1. 查看当前使用的配置文件(确认加载自定义配置)
ansible --version  # 输出中"config file"应显示为/home/student/ansible/ansible.cfg# 2. 查看清单中的主机分组(验证清单配置)
ansible all -i /home/student/ansible/inventory --list-hosts
ansible webservers -i /home/student/ansible/inventory --list-hosts  # 查看webservers组(应包含node3)

通过以上配置,控制节点server.example.com已具备Ansible自动化管理能力,可基于自定义的配置文件与主机清单执行后续任务(如运行Playbook、批量执行命令)。

http://www.xdnf.cn/news/19601.html

相关文章:

  • juicefs+ceph rgw 存储安装
  • MYSQL表的增删改查
  • 深入解析数据结构之单链表
  • ros2bag_py的api小结、丢帧问题对策
  • 【Linux基础】Linux系统启动:深入理解GRUB引导程序
  • 平面椭圆转化为三阶Bezier曲线的方法
  • 并发编程——10 CyclicBarrier的源码分析
  • 大模型参数到底是什么?
  • synchronized的锁对象 和 wait,notify的调用者之间的关系
  • EKS上部署gpu服务利用karpenter实现自动扩缩(s3作为共享存储)
  • 一、计算机系统知识
  • C++ 枚举算法详细利用与数字分解教学教案
  • Spring Security 6.x 功能概览与代码示例
  • 程序员独立开发直播卖产品 SOP 教程
  • arm容器启动spring-boot端口报错
  • 基于开源AI大模型、AI智能名片与S2B2C商城小程序的“教育用户”模式探究
  • 谈谈对BFC的理解
  • 当代科学(范畴大辩论) 的学科分科(论据)的要素论(论点)及方法论(论证):边缘处理
  • 浅谈 SQL 窗口函数:ROW_NUMBER() 与聚合函数的妙用
  • 机器视觉opencv教程(三):形态学变换(腐蚀与膨胀)
  • 利用爬虫获取淘宝商品信息,参数解析
  • 基于单片机停车场管理系统/车位管理/智慧停车系统
  • 小迪自用web笔记22
  • Java线程池使用入门
  • uvm验证环境中struct(结构体)和class的区别与联系
  • 基于单片机老人防丢失防摔倒系统/老人健康状态检测系统
  • CMake⼯程指南-3
  • [光学原理与应用-361]:ZEMAX - 分析 - 像差分析
  • KingbaseES V009版本发布:国产数据库的新飞跃
  • 基于全参考图的质量评价均方误差MSE、峰值信噪比PSNR