Ansible模块——Ansible配置文件!

Ansible配置文件

Ansible 查找名为 ansible.cfg 的文件来作为自己的配置文件

复制代码
[root@ansible ansible]# ansible --version
ansible [core 2.16.3]
  config file = /root/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.12/site-packages/ansible_core-2.16.3-py3.12.egg/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.12.8 (main, Dec 12 2024, 16:30:29) [GCC 8.5.0 20210514 (Red Hat 8.5.0-22)] (/usr/bin/python3)
  jinja version = 3.1.6
  libyaml = True

文件位置和优先级

Ansible 的配置文件在四个位置可以出现:

  • ANSIBLE_CONFIG 的环境变量

  • • 当前工作目录下的 ansible.cfg

  • • 当前用户家目录下的 .ansible.cfg 隐藏文件

  • • 全局默认的配置文件 /etc/ansible/ansible.cfg

优先级由高到低:环境变量 → 当前工作目录 → 家目录 → /etc

所以执行 Ansible 指令时,先从环境变量中找配置文件,如果环境变量没有,就到当前工作目录下找配置文件,如果当前工作目录依然没有,就到当前用户的家目录下找配置文件,如果当前用户家目录下还没有,就去找 /etc/ansible/ansible.cfg

推荐的 ansible.cfg 管理方式:

优先级从高到低如下:

    1. 当前目录的 ./ansible.cfg
    1. 环境变量 ANSIBLE_CONFIG 指定的路径
    1. 用户目录下的 ~/.ansible.cfg
    1. 系统路径 /etc/ansible/ansible.cfg

生成一个默认的配置文件

复制代码
[root@ansible ansible]# ansible-config init --disabled > ansible.cfg

文件内容

复制代码
[root@ansible ansible]# grep -E '^\[' ansible.cfg
[defaults]
[privilege_escalation]
[persistent_connection]
[connection]
[colors]
[selinux]
[diff]
[galaxy]
[inventory]
[netconf_connection]
[paramiko_connection]
[jinja2]
[tags]

Ansible 配置段说明

配置段 用途 说明
defaults 默认设置 主要配置 Ansible 的基础行为,比如 inventory, remote_user, timeout, roles_path
privilege_escalation 提权控制 控制 become, become_user, become_method 等提权行为(如 sudo)
persistent_connection 持久连接参数 控制连接插件如 SSH 的持久化(可减少连接开销)
connection 通用连接配置 包括远程连接的超时、重试、缓存控制等
colors 控制台颜色输出 定义输出中不同类型信息的颜色
selinux SELinux 设置 是否自动管理 semanage、标签恢复等(对启用 SELinux 的主机有用)
diff 显示差异设置 控制是否开启 diff 模式,能在修改配置时显示差异
galaxy Ansible Galaxy 设置 设置 Galaxy 源、缓存策略、角色下载等
inventory 动态库存参数 针对 Inventory 插件的默认设置,比如缓存、路径等
netconf_connection Netconf 连接参数 针对支持 NETCONF 的网络设备(如 Cisco、Juniper)连接设置
paramiko_connection 使用 paramiko 时的设置 使用 paramiko(Python SSH 库)替代 OpenSSH 时的行为控制
jinja2 模板渲染设置 控制模板变量、未定义变量行为、Jinja 环境等
tags tag 行为 控制运行 playbook 时关于 tag 的匹配方式

常用配置选项

[defaults] 常用配置:

配置项 说明 示例
inventory 指定主机清单路径 inventory = ./hosts
remote_user 默认远程登录用户 remote_user = ansible
ask_pass 是否在执行时询问 SSH 密码 ask_pass = false
ask_become_pass 是否询问 sudo 密码 ask_become_pass = true
private_key_file 指定私钥路径 private_key_file = ~/.ssh/id_rsa
host_key_checking 是否启用 SSH 主机密钥检查 host_key_checking = false
timeout 连接超时时间(秒) timeout = 30
forks 并发执行主机数 forks = 10
retry_files_enabled 是否生成 .retry 文件 retry_files_enabled = false
log_path 日志文件路径 log_path = /var/log/ansible.log
roles_path 指定角色目录 roles_path = ./roles
gathering 控制 facts 的收集方式(implicit、explicit、smart) gathering = smart
fact_caching 是否启用 facts 缓存 fact_caching = jsonfile
fact_caching_connection facts 缓存路径 fact_caching_connection = ./fact_cache

[privilege_escalation] 提权配置:

配置项 说明 示例
become 是否启用提权 become = true
become_method 使用提权方式(sudo/su/pbrun/doas 等) become_method = sudo
become_user 提权后的目标用户 become_user = root
become_ask_pass 是否询问提权密码 become_ask_pass = false

[ssh_connection](或 [connection]连接优化配置:

配置项 说明 示例
pipelining 启用 SSH pipelining,加速执行 pipelining = true
control_path SSH 控制连接的 socket 路径 control_path = %(directory)s/%%h-%%r
ssh_args 传递给 SSH 的参数 ssh_args = -o ControlMaster=auto -o ControlPersist=60s
retries SSH 失败重试次数 retries = 3

[jinja2] 模板渲染相关:

配置项 说明 示例
undefined 控制未定义变量的处理方式(如 strict undefined = strict
trim_blocks 去除 Jinja2 模板中的空行 trim_blocks = true
lstrip_blocks 去除 Jinja2 左侧空格 lstrip_blocks = true

[diff] 差异显示:

配置项 说明 示例
always 是否始终显示变更 diff always = true
context 显示上下文行数 context = 5

[galaxy] Ansible Galaxy 设置:

配置项 说明 示例
server_list 指定 Galaxy 服务器 server_list = ansible_galaxy
ignore_certs 忽略 Galaxy HTTPS 证书验证 ignore_certs = false

[inventory] 主机清单设置(动态库存):

配置项 说明 示例
enable_plugins 启用的库存插件 enable_plugins = host_list, yaml, ini
cache 启用主机缓存 cache = true
cache_plugin 使用的缓存插件 cache_plugin = jsonfile
cache_timeout 缓存有效时间 cache_timeout = 600

其他配置段(可选):

段名 用途
[paramiko_connection] 如果使用 paramiko 作为 SSH 连接后端,配置连接行为
[netconf_connection] 管理 NETCONF 网络设备的连接参数
[colors] 控制终端输出颜色样式
[selinux] 配置如何处理 SELinux 标签修复
[tags] 控制 tag 匹配行为,比如 skip_tags 默认值等

配置案例

复制代码
[defaults]  
inventory      = ./inventory    # 主机清单的位置
fork           = 20                # 并发执行的主机数
ask_pass       = False            # 执行 Ansible 时是否询问密码
remote_user    =  root            # 表示使用 root 用户来访问被控节点
log_path       = /var/log/ansible.log    # 指定 Ansible 的日志文件位置
host_key_checking = False                # 是否进行 SSH 主机 Key 检查
ansible_python_interpreter = /usr/bin/python3.9        # 指定被控端上 Python 的解释器
[privilege_escalation]
become = True    # 是否提权
become_method = sudo    # 提权的方式
become_user = root        # 提权到哪个用户
become_ask_pass = False    # 执行 Ansible 时是否询问提权密码

使用时删除注释。

相关推荐
烁34721 分钟前
Ansible初识
ansible
月巴月巴白勺合鸟月半28 分钟前
在Linux下开发桌面程序
linux·运维·服务器
zh路西法29 分钟前
【tmux入门】终端分屏、SSH远程守护与一键启动脚本
linux·运维·ssh·bash
qq_1631357535 分钟前
Linux 【03-pwd命令超详细教程】
linux
学途路漫漫36 分钟前
Ubuntu 24.04 国内网络环境全面优化指南
linux·网络·ubuntu
c2385636 分钟前
GDB 进程概念详解(下篇)—— 多进程与进阶调试能力
linux·服务器·数据库
RisunJan39 分钟前
Linux命令-php(PHP语言的命令行接口)
linux·php
A_humble_scholar40 分钟前
Linux(八) 进程内存全景:环境变量、main 函数参数与虚拟地址空间全链路深度解析
linux·运维·服务器
longforus1 小时前
linux上播放音乐的终极解决方案
linux·音频·折腾
xcLeigh1 小时前
鸿蒙PC平台 Shotwell 照片管理器适配实战:从 Linux GNOME 到 鸿蒙PC 的 Electron 迁移
linux·electron·harmonyos·鸿蒙·shotwell·照片管理器