本节书摘来自华章出版社《Ansible权威指南 》一书中的第2章,第2.1节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第2章

Ansible基础元素介绍

第1章介绍了Ansible的功能作用、通信发展史、基础的安装部署及处理Ansible安装问题所需的Python多环境管理工具Pyenv和Virutalenv。在前期基本工作准备妥当的基础上,本章进一步深入学习Ansible的基础元素,会相继接触Ansible目录结构简介、Ansible系列命令、Ansible Inventory配置规范、Ansible模式匹配规则等,其中部分内容,诸如Inventory、Ansible-playbook等在后续涉及章节会更深入介绍。本章主要是为大家呈现Ansible及系列命令的基础入门介绍,
所介绍的内容相互之间没有紧密关系,可选择性地阅读感兴趣章节。
2.1 Ansible目录结构介绍
Ansible是开源工具,整个开发过程或二次开发均遵循GPL协议,所以所有源码均可见。作为一款日常工作所需的核心软件,我们有必要知道其目录分布及各目录功能。通过如下命令我们可以获取Ansible所有文件存放目录:

# rpm -ql ansible

该命令输出内容较多,大致分为如下几类:

  配置文件目录/etc/ansible/
执行文件目录/usr/bin/
Lib库依赖目录/usr/lib/pythonX.X/site-packages/ansible/
Help文档目录/usr/share/doc/ansible-X.X.X/
Man文档目录/usr/share/man/man1/

整体的目录概要可参考如图2-1所示的Ansible目录树结构。


其中,如下目录运维常要配置,需熟练掌握。
1)配置文件目录/etc/ansible/,主要功能为:Inventory主机信息配置、Ansible工具功能配置等。所有Ansible的配置均存放在该目录下,运维日常的所有配置类操作也均基于此目录进行。
2)执行文件目录/usr/bin/,主要功能为:Ansible系列命令默认存放目录。Ansible所有的可执行文件均存放在该目录下。
在/usr/lib/pythonXXX/site-packages/下,该目录是系统当前默认的Python路径,因为Ansible是基于Python编写的,所以Ansible的所有lib库文件和模块文件也均存放于该目录下。希望了解Ansible源码的话可至该目录下查看其工作原理,当然也可至GitHub上下载历史或最新Ansible版本。
2.2 Ansible配置文件解析
Inventory用于定义Ansible的主机列表配置,Ansible的自身配置文件只有一个,即ansible.cfg,Ansible安装好后它默认存放于/etc/ansible/目录下。ansible.cfg配置文件可以存在于多个地方,Ansible读取配置文件的顺序依次是当前命令执行目录→用户家目录下的.ansible.cfg→/etc/ansible.cfg,先找到哪个就使用哪个的配置。其ansible.cfg配置的所有内容均可在命令行通过参数的形式传递或定义在Playbooks中。
配置文件ansible.cfg约有350行语句,大多数为注释行默认配置项。该文件遵循INI格式,分为如下几类配置。

(1)[defaults]

该类配置下定义常规的连接类配置,如inventory、library、remote_tmp、local_tmp、forks、poll_interval、sudo_user、ask_sudo_pass、ask_pass、transport、remote_port等。
[defaults]

# inventory = /etc/ansible/hosts        # 定义Inventory
# library = /usr/share/my_modules/    # 自定义lib库存放目录
# remote_tmp = $HOME/.ansible/tmp    # 临时文件远程主机存放目录
# local_tmp = $HOME/.ansible/tmp        # 临时文件本地存放目录
# forks = 5                # 默认开启的并发数
# poll_interval = 15            # 默认轮询时间间隔
# sudo_user  = root            # 默认sudo用户
# ask_sudo_pass = True            # 是否需要sudo密码
# ask_pass  = True            # 是否需要密码
# roles_path = /etc/ansible/roles    # 默认下载的Roles存放的目录
# host_key_checking = False        # 首次连接是否需要检查key认证,建议设为False
# timeout = 10                # 默认超时时间
# timeout = 10                # 如没有指定用户,默认使用的远程连接用户
# log_path = /var/log/ansible.log    # 执行日志存放目录
# module_name = command            # 默认执行的模块
# action_plugins = /usr/share/ansible/plugins/action # action插件的存放目录
# callback_plugins = /usr/share/ansible/plugins/callback # callback插件的存放目录
# connection_plugins = /usr/share/ansible/plugins/connection    # connection插件的# 存放目录
# lookup_plugins = /usr/share/ansible/plugins/lookup    # lookup插件的存放目录
# vars_plugins = /usr/share/ansible/plugins/vars    # vars插件的存放目录
# filter_plugins = /usr/share/ansible/plugins/filter    # filter插件的存放目录
# test_plugins = /usr/share/ansible/plugins/test    # test插件的存放目录
# strategy_plugins = /usr/share/ansible/plugins/strategy    # strategy插件的存放目录
# fact_caching = memory                    # getfact缓存的主机信息存放方式
# retry_files_enabled = False
# retry_files_save_path = ~/.ansible-retry        # 错误重启文件存放目录

上述是日常可能用到的配置,这些多数保持默认即可。
(2)[privilege_escalation]
出于安全角度考虑,部分公司不希望直接以root的高级管理员权限直接部署应用,往往会开放普通用户权限并给予sudo的权限,该部分配置主要针对sudo用户提权的配置。

[privilege_escalation]
# become=True        # 是否sudo
# become_method=sudo    # sudo方式
# become_user=root    # sudo后变为root用户
# become_ask_pass=False    # sudo后是否验证密码
(3)[paramiko_connection]
定义paramiko_connection配置,该部分功能不常用,了解即可。
[paramiko_connection]    # 该配置不常用到
# record_host_keys=False    # 不记录新主机的key以提升效率
# pty=False        # 禁用sudo功能
(4)[ssh_connection]
Ansible默认使用SSH协议连接对端主机,该部署是主要是SSH连接的一些配置,但配置项较少,多数默认即可。
[ssh_connection]
# pipelining = False    # 管道加速功能,需配合requiretty使用方可生效
(5)[accelerate]
Ansible连接加速相关配置。因为有部分使用者不满意Ansible的执行速度,所以Ansible在连接和执行速度方面也在不断地进行优化,该配置项在提升Ansibile连接速度时会涉及,多数保持默认即可。
[accelerate]
# accelerate_port = 5099            # 加速连接端口
# accelerate_timeout = 30            # 命令执行超时时间,单位秒
# accelerate_connect_timeout = 5.0    # 连接超时时间,单位秒
# accelerate_daemon_timeout = 30        # 上一个活动连接的时间,单位分钟
# accelerate_multi_key = yes
(6)[selinux]
关于selinux的相关配置几乎不会涉及,保持默认配置即可。
[selinux]
# libvirt_lxc_noseclabel = yes
# libvirt_lxc_noseclabel = yes
(7)[colors]
Ansible对于输出结果的颜色也进行了详尽的定义且可配置,该选项对日常功能应用影响不大,几乎不用修改,保持默认即可。
[colors]
# highlight = white
# verbose = blue
# warn = bright purple
# error = red
# debug = dark gray
# deprecate = purple
# skip = cyan
# unreachable = red
# ok = green
# changed = yellow
# diff_add = green
# diff_remove = red
# diff_lines = cyan

上面尽可能全地介绍了运维工作中可能需要修改的配置选项,除了在关闭首次连接提示(host_key_checking = False)或提速调整([accelerate]区域块配置调整)时可能会稍做调整,其中绝大多数选项默认即可,Ansible安装好后无需任何改动即可使用。

《Ansible权威指南 》一第2章 Ansible基础元素介绍相关推荐

  1. 《Ansible权威指南 》一 第一篇 Part 1 基础入门篇

    本节书摘来自华章出版社<Ansible权威指南 >一书中的第1章,第1.1节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第一篇 ...

  2. 《Ansible权威指南》一1.7 Ansible的安装部署

    本节书摘来自华章出版社<Ansible权威指南>一书中的第一章,第1.7节,作者 李松涛 魏 巍 甘 捷 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.7 ...

  3. 《Hadoop权威指南》第三章 Hadoop分布式文件系统

    <Hadoop权威指南>第三章 Hadoop分布式文件系统 目录 前言 HDFS的设计 HDFS的概念 命令行接口 Hadoop文件系统 Java接口 数据流 通过distcp并行复制 注 ...

  4. 《Swift 权威指南》——第6章,第6.7节常量和变量参数

    本节书摘来自异步社区<Swift 权威指南>一书中的第6章,第6.7节常量和变量参数,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 6.7 常量和变量 ...

  5. 《低功耗蓝牙开发权威指南》——第2章基本概念

    本节书摘来自华章社区<低功耗蓝牙开发权威指南>一书中的第2章基本概念,作者 (英)Robin Heydon,更多章节内容可以访问云栖社区"华章社区"公众号查看 第2章 ...

  6. 《嵌入式系统数字视频处理权威指南》——第1章 现实世界中的视频

    本节书摘来自华章计算机<嵌入式系统数字视频处理权威指南>一书中的第1章,作者:(美)Michael Parker Suhel Dhanani 更多章节内容可以访问云栖社区"华章计 ...

  7. 《设计团队协作权威指南》—第1章1.3节甘为螺丝钉

    本节书摘来自异步社区<设计团队协作权威指南>一书中的第1章1.3节甘为螺丝钉,作者[美]Dan M.Brown,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1 ...

  8. 《低功耗蓝牙开发权威指南》——第3章低功耗蓝牙的体系结构

    本节书摘来自华章社区<低功耗蓝牙开发权威指南>一书中的第3章低功耗蓝牙的体系结构,作者 (英)Robin Heydon,更多章节内容可以访问云栖社区"华章社区"公众号查 ...

  9. 《ANTLR 4权威指南》——第2章纵观全局

    本节书摘来自华章社区<ANTLR 4权威指南>一书中的第2章纵观全局,作者[美] 特恩斯·帕尔(Terence Parr),更多章节内容可以访问云栖社区"华章社区"公众 ...

最新文章

  1. SQLyog中TAB键设置四个空格的步骤
  2. django 快速实现完整登录系统(cookie)
  3. 图片宽度自适应浏览器宽度
  4. VS2010打开项目提示未能正确加载解决方案中一个或多个项目
  5. 今年的hsctf里遇到了一个比较少见的nds逆向题目,侥幸拿下一血
  6. catv系统主要有哪三部分组成_光纤放大器在DWDM传输系统中的应用
  7. ES5-3 循环、引用值初始、显示及隐式类型转换
  8. Python 之数据类型
  9. Harris角点检测算法优化
  10. IIS7下 【请求被中止: 未能创建 SSL/TLS 安全通道 】 解决方法
  11. fatal error C1853 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
  12. mysql 变量 视图_MySQL – 无法使用SET变量创建视图
  13. 如何使VNC和Linux tty7 显示同步效果
  14. python中 和 的区别_举例子让你明白python中is和==的区别
  15. 转载:基于Redis实现分布式锁
  16. 几种在Linux下查询外网IP的办法(转)
  17. eclipse后台提示computing additional info的解决办法
  18. 小米路由器能搭建虚拟服务器吗,【教程】如何通过小米路由器构建文件共享服务...
  19. u盘获取计算机管理员权限,win7系统如何获得管理员权限
  20. MySQL5.7导出数据表

热门文章

  1. Visual Studio 宏
  2. php递归实现冒泡排序,PHP冒泡排序、快速排序算法
  3. python读取配置文件获取所有键值对_python读取配置文件
  4. angular div 滚动条事件_DOM事件
  5. icmp端口_pingtunnel搭建icmp隧道
  6. springMvc(实现HandlerMethodArgumentResolver)自定义参数解析器
  7. Java并发包中Semaphore的工作原理、源码分析及使用示例
  8. 机器学习笔记(五)续——朴素贝叶斯算法的后验概率最大化含义
  9. 2021抖音汽车生态报告
  10. 互联网日报 | 6月30日 星期三 | 叮咚买菜正式登陆纽交所;微软发布Win 11首个预览版;三星宣布3nm芯片成功流片...