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

Ansible模块——Ansible配置文件!

Ansible配置文件

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

[root@ansible ansible]# ansible --version
ansible [core 2.16.3]config file = /root/ansible/ansible.cfgconfigured 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/ansibleansible collection location = /root/.ansible/collections:/usr/share/ansible/collectionsexecutable location = /usr/local/bin/ansiblepython 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.6libyaml = True

文件位置和优先级

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

  • • ANSIBLE_CONFIG 的环境变量

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

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

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

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

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

推荐的 ansible.cfg 管理方式:

优先级从高到低如下:

  1. 1. 当前目录的 ./ansible.cfg

  2. 2. 环境变量 ANSIBLE_CONFIG 指定的路径

  3. 3. 用户目录下的 ~/.ansible.cfg

  4. 4. 系统路径 /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 的基础行为,比如 inventoryremote_usertimeoutroles_path 等

[privilege_escalation]

提权控制

控制 becomebecome_userbecome_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 时是否询问提权密码

使用时删除注释。

相关文章:

  • ansible中的inventory.ini 文件详解
  • Ansible模块——Ansible的安装!
  • 每日C++ 5.28dddd
  • 微信小程序返回上一页监听
  • 【产品小白】京东外卖为何未独立成 APP
  • ToolsSet之:Json格式化
  • 【深度学习-pytorch篇】1. Pytorch矩阵操作与DataSet创建
  • Python后端开发实战:从0到1搭建高可用API服务
  • Linux命令行命令自动补全
  • vs中添加三方库的流程
  • webpack打包基本配置
  • GUI 编程——python
  • 干货|VR全景是什么?
  • 同源“平滑思想”的问题解法:正则化与拉普拉斯平滑
  • hi3516cv610分配多个 vb pool及查看vb信息
  • Linux的SHELL脚本基础
  • 在qt中使用c++实现与Twincat3 PLC变量通信
  • Kubernetes Dashboard 安装部署、访问与管理实战实验
  • VScode单双引号、分号格式
  • 【深度学习-pytorch篇】4. 正则化方法(Regularization Techniques)
  • 网站建设推销话术/为什么中国禁止谷歌浏览器
  • redis做缓存的网站并发数/广告投放的方式有哪些
  • 培训学校 网站费用/合肥网站外包
  • 网站后台管理系统哪个好/浏览器看b站
  • 做拍拍拍拍网站/seo日常工作内容
  • 微信微网站建设平台/连云港seo优化