Ansible配置文件ansiblecfg详解

29次阅读

共计 2951 个字符,预计需要花费 8 分钟才能阅读完成。

Ansible 是一个系列文章,我会尽量以通俗易懂、诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些。

前言

此时外面小雨淅淅沥沥的下着,周末,慵懒的周末,无聊到极点才打开电脑,回头一看,都有小半个月没有看技术书籍了,颓废就像洪水一样,泛滥到无可收拾。技术人,一天不看技术,都会感到空虚,但是最近生活的打击一个接一个,让人措手不及,防不胜防;工作中的忙碌,让自己就像无头苍蝇一样,到处乱撞。

继续自己的博客之路,近期准备将 Ansible 相关的内容整理一下,和大家分享。

优先级说明

熟悉 Linux 运维的同学,对于这个就非常有经验了。在 Linux 中,基本上 99% 的软件都有一个配置文件,而这些配置文件中配置了这些软件的运行方式等一些属性。同时,根据存放位置的不同,同一个软件,同样的配置文件的使用优先级也是不一样的。在 Ansible 中,它的配置文件是一个名为 ansible.cfg 的配置文件,ansible.cfg 配置文件是以 ini 格式存储配置数据的。但是 ansible.cfg 配置文件可以存放在不同的目录,但只有一个可用,在运行 Ansible 命令时,Ansible 将会按照预先设定的顺序查找配置文件,检查到哪个就用哪个。Ansible 预先设定的优先级顺序如下:

  • ANSIBLE_CFG:首先,Ansible 命令会先检查环境变量,及这个环境变量将指向的配置文件;
  • ./ansible.cfg:其次,将会检查当前目录下的 ansible.cfg 配置文件;
  • ~/.ansible.cfg:再次,将会检查当前用户 home 目录下的 .ansible.cfg 配置文件;
  • /etc/ansible/ansible.cfg:最后,将会检查在安装 Ansible 时自动生成的配置文件。

几乎所有的配置项都可以通过 Ansible 的 playbook 或环境变量来重新赋值,所以当你怎么都不知道这个变量在哪里定义的时候,不妨去看看环境变量里看看。根据我这么多年的运维经验来说,我建议使用 ~/.ansible.cfg 作为配置文件使用,这样就可以实现每个用户都有自己独自的配置文件,不污染其它用户正常使用 Ansible,同时也方便进行选项配置。

由于 Ansible 本身没有服务的概念,所以只要配置修改后配置将马上生效。

配置选项详解

到目前为止,我还没有见到一个配置项超级少,配置超级简单的配置文件;同样的,Ansible 的配置文件也不简单,配置项超级多;但是,二八法则同样也适用于这些配置文件,20% 的配置项决定了 80% 的功能,只有那 20% 的配置项是我们需要去关心的。所以,大家不要害怕,下面我们就将这 20% 常用的选项进行一一说明和总结。

  • defaults 配置

    配置项说明默认值
    inventoryansible inventory 文件路径/etc/ansible/hosts
    libraryansible 模块文件路径/usr/share/my_modules/
    remote_tmpansible 远程主机脚本临时存放目录~/.ansible/tmp
    local_tmpansible 管理节点脚本临时存放目录~/.ansible/tmp
    forksansible 执行并发数5
    poll_intervalansible 异步任务查询间隔15
    sudo_useransible sudo 用户root
    ask_sudo_pass运行 ansible 是否提示输入 sudo 密码True
    ask_pass运行 ansible 是否提示输入密码True
    transportansible 远程传输模式smart
    remote_port远程主机 SSH 端口22
    module_langansible 模块运行默认语言环境C
    gatheringfacts 信息收集开关定义smart
    roles_pathansible role 存放路径/etc/ansible/roles
    timeoutansible SSH 连接超时时间10
    remote_useransible 远程认证用户root
    log_pathansible 日志记录文件/var/log/ansible.log
    module_nameansible 默认执行模块command
    executableansible 命令执行 shell/bin/sh
    hash_behaviouransible 主机变量重复处理方式replace
    private_role_vars默认情况下,角色中的变量将在全局变量范围中可见。为了防止这种情况,可以启用以下选项,只有 tasks 的任务和 handlers 得任务可以看到角色变量yes
    vault_password_file指定 vault 密码文件路径
    ansible_managed定义的一个 Jinja2 变量,可以插入到 Ansible 配置模版系统生成的文件中Ansible managed
    display_skipped_hosts开启显示跳过的主机True
    error_on_undefined_vars开启错误,或者没有定义的变量False
    action_pluginsansible action 插件路径
    cache_pluginsansible cache 插件路径
    callback_pluginsansible callback 插件路径
    connection_pluginsansible connection 插件路径
    lookup_pluginsansible lookup 插件路径
    inventory_pluginsansible inventory 插件路径
    vars_pluginsansible vars 插件路径
    filter_pluginsansible filter 插件路径
    terminal_pluginsansible terminal 插件路径
    strategy_pluginsansible strategy 插件路径
    fact_caching定义 ansible facts 缓存方式memory
    fact_caching_connection定义 ansible facts 缓存路径
  • privilege_escalation 配置

    配置项说明默认值
    become是否开启 become 模式True
    become_method定义 become 方式sudo
    become_user定义 become 方式root
    become_ask_pass是否定义 become 提示密码False

总结

通过一个软件的配置文件,我们大体能知道这个软件支持的功能,就像我们在阅读源码一样,熟悉了目录结构后,就是开始阅读配置文件。这篇文章对 Ansible 的功能配置文件 ansible.cfg 进行了一个整体的总结,同时也对一些常用的配置选项进行了重点说明。这里说的配置项虽然都是一些简单的内容点,但是却是后续学习的基础和根本,希望大家对这里的配置选项有一个整体的记忆和印象,在后续的学习中,可以快速的回忆起这些内容。最后,如果觉的还不错,可以点击下方的“打赏”哦。

2019 年 6 月 15 日,于内蒙古呼和浩特。


从最基础的编程语法,到高深的编程技巧;从最简单的学习计划,到长远的职业规划;果冻想分享的不仅仅是一篇文章,更多的是对编程的挚爱和执着,对人生的享受和理解;不管你是 IT 菜鸟,还是编程老手,“果冻想”都值得你关注。

正文完
 0