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

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.dtcms.com/a/360155.html

相关文章:

  • Library cache lock常见案例分析(二)
  • 在Windows的wsl中如何以root登录Ubuntu
  • KMP 算法相关练习题
  • AI 重构内容创作:从文案生成到视频剪辑,创作者该如何与 AI 协同共生?
  • 用产品经理的思维,重构AI时代的增长Playbook
  • CatBoost vs XGBoost:两大Boosting框架的全面对比
  • 【AI智能体】Dify 实现自然语言转SQL操作数据库实战详解
  • 暄桐零基础书法入门课《写字旅行攻略》报名啦
  • 鸿蒙开发入门:ArkTS 运算符与分支循环全解析(含实战案例 + 避坑指南)
  • 常见的两栏布局实现方法
  • P2P技术应用:去中心化
  • Transformer架构三大核心:位置编码(PE)、前馈网络(FFN)和多头注意力(MHA)。
  • Reactor模式--单线程版本
  • HTML5国庆网站源码
  • Unity学习----【数据持久化】二进制存储(二)--文件流
  • 有关指针的认知盲区:指针大小,决定因素,指针变量
  • Nano Banana:下一代AI图像创作与编辑指南
  • [强网杯2019]随便注-----堆叠注入,预编译
  • 主网上线后生态极速扩张的 Berachain 生态,有哪些值得关注的项目?
  • Java全局异常处理器:优雅处理系统异常
  • 【Android】LayoutInflater 控件实例化的桥梁类
  • 【重学MySQL】九十五、Linux 下 MySQL 大小写规则设置详解
  • Java中的异常,枚举,泛型,代理
  • 人工智能知识体系全景图:从基础概念到2025年前沿技术(一)
  • 2025年8月个人工作生活总结
  • vsftpd的基本整理
  • 基于多模态大模型的PCB智能缺陷检测与分析
  • STM32F103C8T6的智能医疗药品存储柜系统设计与华为云实现
  • 设计模式八股
  • 算法题(196):最大异或对