【Ansible 自动化配置管理实践】01、Ansible 快速入门

目录

一、Ansible 快速入门

1.1 什么是 Ansible 

​1.2 Ansible 主要功能 

1.3 Ansible 的特点 

1.4 Ansible 基础架构 

二、Ansible 安装与配置 

2.1 Ansible 安装 

2.2 确认安装 

三、Ansible 配置解读 

3.1 Ansible 配置路径 

3.2 Ansible 主配置文件 

3.3 Ansible 配置优先级 


 

一、Ansible 快速入门

1.1 什么是 Ansible 

        Ansible 是一个 IT 自动化的配置管理工具,自动化主要体现在 Ansible 集成了丰富模块,以及强大的功能组件,可以通过一个命令行完成一系列的操作。进而能减少我们重复性的工作,以提高工作的效率。

1.2 Ansible 主要功能 

  • 批量执行远程命令,可以对 N 多台主机同时进行命令的执行。
  • 批量配置软件服务,可以进行自动化的方式配置和管理服务。
  • 实现软件开发功能,jumpserver 底层使用 ansible 来实现的自动化管理。
  • 编排高级的 IT 任务,Ansible 的 playbook 是一门编程语言可以用来描绘一套 IT 架构。 

1.3 Ansible 的特点 

  • 容易学习: 无代理,不像 salt 既要学客户端与服务端,还需要学习客户端与服务端中间通讯协议;
  • 操作灵活: Ansible 有较多的模块,提供了丰富的功能;playbook 则提供类似于编程语言的复杂功能;
  • 简单易用: 体现在 Ansible 一个命令可以完成很多事情;
  • 安全可靠: 因为 Ansible 使用了 SSH 协议进行通讯,既稳定也安全;
  • 移植性高: 可以将写好的 playbook 拷贝至任意机器进行执行;
  • 幂等性: 一个任务执行 1 遍和执行 n 遍效果一样,不会因为重复执行带来意外情况。

1.4 Ansible 基础架构 

        Ansible 架构中的控制节点、被控制节点、 inventroy、ad-hocplaybook、Connection Protocol 是什么? 

在 Ansible 架构中,以下是一些关键概念:

  1. 控制节点 (Control Node): 控制节点是指运行 Ansible 的主机,负责管理和执行 Ansible 的配置和任务。通常,这是管理员或开发人员的工作站或服务器,用于控制和管理被控制节点。

  2. 被控制节点 (Managed Node): 被控制节点是指由控制节点管理的目标主机。Ansible 通过 SSH 连接到这些节点,并在其上执行任务。被控制节点可以是服务器、虚拟机或任何远程主机。

  3. Inventory (清单): 清单是一个包含被控制节点信息的文件,它告诉 Ansible 哪些主机应该被管理。清单可以是静态的(手动编写主机列表)或动态的(通过脚本或外部源动态生成)。清单还可以包含主机组,用于组织和分类主机。

  4. Ad-hoc Commands (即席命令): 即席命令是在控制节点上直接执行的简单 Ansible 命令,用于在远程被控制节点上执行一次性任务,而无需编写复杂的 Playbook。使用即席命令,可以快速地在目标主机上执行某些操作。

  5. Playbook (剧本): Playbook 是 Ansible 的主要配置文件,用于定义一系列任务和配置,以及在目标主机上执行这些任务的顺序。它使用 YAML 格式,具有易读性和编写简便性。通过 Playbook,可以在多个主机上执行复杂的配置管理和自动化任务。

  6. Connection Protocol (连接协议): 连接协议指定 Ansible 在控制节点与被控制节点之间建立连接的方式。在大多数情况下,默认连接协议是 SSH (Secure Shell),通过 SSH 协议连接到被控制节点并执行任务。然而,Ansible 也支持其他连接协议,例如在 Windows 主机上使用 WinRM 进行连接。

        总结: Ansible 是一种配置管理和自动化工具,它由控制节点管理被控制节点。清单文件指定被控制节点,Playbook 定义任务和配置,Ad-hoc Commands 允许在目标主机上执行一次性任务,而连接协议决定了如何与被控制节点建立连接。

二、Ansible 安装与配置 

2.1 Ansible 安装 

# 方式一:yum 安装(推荐)
[root@tidb ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@tidb ~]# yum makecache
[root@tidb ~]# yum install ansible -y# 方式二:pip 安装
[root@tidb ~]# yum install python3 python3-devel python3-pip -y
[root@tidb ~]# pip3 install --upgrade pip -i https://pypi.douban.com/simple/
[root@tidb ~]# pip3 install ansible -i https://pypi.douban.com/simple/

2.2 确认安装 

# 检查 Ansible 版本
[root@tidb ~]# ansible --version
ansible 2.9.27config file = /etc/ansible/ansible.cfgconfigured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python2.7/site-packages/ansibleexecutable location = /usr/bin/ansiblepython version = 2.7.5 (default, Jun 28 2022, 15:30:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]# 测试 Ansible 是否可用
[root@tidb ~]# ansible localhost -m ping
localhost | SUCCESS => {"changed": false, "ping": "pong"
}

三、Ansible 配置解读 

3.1 Ansible 配置路径 

  • /etc/ansible/ansible.cfg:主配置文件,配置 ansible 工作特性;
  • /etc/ansible/hosts:配置主机清单文件;
  • /etc/ansible/roles/:存放 ansible 角色的目录。

3.2 Ansible 主配置文件 

        ansible 的主配置文件存在 /etc/anible/ansible.cfg ,其中大部分的配置内容无需进行修改,下面是对于该文件重点内容的解读:

······
[defaults]# some basic default values...#inventory      = /etc/ansible/hosts                    # 指定 Ansible 使用的主机清单文件的路径。
#library        = /usr/share/my_modules/                # 指定 Ansible 模块库的路径。
#module_utils   = /usr/share/my_module_utils/           # 指定 Ansible 模块工具库的路径
#remote_tmp     = ~/.ansible/tmp                        # 指定远程主机上临时文件的路径。
#local_tmp      = ~/.ansible/tmp                        # 指定本地主机上临时文件的路径
#plugin_filters_cfg = /etc/ansible/plugin_filters.yml   # 指定插件过滤器配置文件的路径。
#forks          = 5                                     # 指定同时在多少个主机上并行执行任务。
#poll_interval  = 15                                    # 设置在使用 async 任务时,轮询任务结果的时间间隔。默认为 15 秒。
#sudo_user      = root                                  # 在远程主机上以指定用户身份执行任务
#ask_sudo_pass = True                                   # 如果设置为 True,Ansible 在执行任务时会要求输入 sudo 密码
#ask_pass      = True                                   # 如果设置为 True,Ansible 在执行任务时会要求输入远程用户的密码
#transport      = smart                                 # 指定连接被控制节点的方式。smart 表示智能选择
#remote_port    = 22                                    # 指定连接远程主机时使用的 SSH 端口
#module_lang    = C                                     # 指定 Ansible 模块的语言
#module_set_locale = False                              # 如果设置为 False,在执行任务时不会设置模块的本地化
#host_key_checking = False                              # 这是用于控制是否进行主机密钥检查的配置项(建议去掉注释)
#log_path = /var/log/ansible.log                        # 这个配置项用于指定 Ansible 日志文件的路径(建议去掉注释开启日志)

3.3 Ansible 配置优先级 

Ansible 的配置文件可以存放在任何位置,但配置文件有读取顺序,查找顺序如下:

  1. 最先查找 $ANSIBLE_CONFIG 变量
  2. 其次查找当前目录下 ansible.cfg
  3. 然后查找用户家目录下的 .ansible.cfg
  4. 最后查找 /etc/ansible/ansible.cfg

通过命令行操作演示,验证结论:

# 优先读取 $ANSIBLE_CONFIG 变量
[root@tidb ~]# ansible --version
ansible 2.9.27config file = /etc/ansible/ansible.cfg
······
[root@tidb ~]# export ANSIBLE_CONFIG=/tmp/ansible.cfg
[root@tidb ~]# touch /tmp/ansible.cfg
[root@tidb ~]# ansible --version
ansible 2.9.27config file = /tmp/ansible.cfg
······# 读取当前目录下的 ansible.cfg(推荐)
[root@tidb ~]# unset ANSIBLE_CONFIG
[root@tidb ~]# ansible --version
ansible 2.9.27config file = /etc/ansible/ansible.cfg
······
[root@tidb ~]# mkdir project1
[root@tidb ~]# cd project1/
[root@tidb ~/project1]# touch ansible.cfg
[root@tidb ~/project1]# ansible --version
ansible 2.9.27config file = /root/project1/ansible.cfg
······
[root@tidb ~/project1]# cd ..
[root@tidb ~]# ansible --version
ansible 2.9.27config file = /etc/ansible/ansible.cfg
······# 读取当前用户家目录下的 .ansible.cfg
[root@tidb ~]# touch ~/.ansible.cfg
[root@tidb ~]# ansible --version
ansible 2.9.27config file = /root/.ansible.cfg
·····
[root@tidb ~]# cd project1/
[root@tidb ~/project1]# ansible --version
ansible 2.9.27config file = /root/project1/ansible.cfg
······[root@tidb ~]# rm -rf .ansible.cfg 
[root@tidb ~]# ansible --version
ansible 2.9.27config file = /etc/ansible/ansible.cfg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring系列一:spring的安装与使用

文章目录 💞 官方资料🍊Spring5下载🍊文档介绍 💞Spring5🍊内容介绍🍊重要概念 💞快速入门🍊Spring操作演示🍊类加载路径🍊Debug配置🍊Spring容器…

《Docker资源限制和调度策略:性能优化与资源管理,打造高效稳定的容器环境》

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

ubuntu qt 环境变量配置

ubuntu设置qt环境变量 qt 安装路径为:/home/ljn/Qt5.12 包含bin等目录的路经:/home/ljn/Qt5.14.2/5.14.2/gcc_64 环境变量配置 打开配置文件: sudo gedit /etc/profile在底部添加: export PATH"/home/ljn/Qt5.14.2/Tool…

【Nodejs】Puppeteer\爬虫实践

puppeteer 文档:puppeteer.js中文文档|puppeteerjs中文网|puppeteer爬虫教程 Puppeteer本身依赖6.4以上的Node,但是为了异步超级好用的async/await,推荐使用7.6版本以上的Node。另外headless Chrome本身对服务器依赖的库的版本要求比较高,c…

高速数据采集专家-FMC140【产品手册】

FMC140是一款具有缓冲模拟输入的低功耗、12位、双通道(5.2GSPS/通道)、单通道10.4GSPS、射频采样ADC模块,该板卡为FMC标准,符合VITA57.1规范,该模块可以作为一个理想的IO单元耦合至FPGA前端,8通道的JESD204…

enum枚举/union共用体

//联合体——共用体 // 所有成员共用同一块空间(地址) // 共用体占用的内存至少是最大成员的大小,单位 -字节 // 同一时刻只能用一个成员 // 当最大成员不是最大对齐数的整数倍,就要对齐到最大对齐数的整数倍 // union un { …

【jenkins】idea+jenkins+docker+dockerfile+compose流水线部署java应用

目录 整体架构 环境准备 安装docker以及docker-compose jenkins安裝 maven安装 portainer面板安装 sonarqube安装 在项目中增加dockerfile和compose.yml脚本 Dockerfile脚本内容 compose.yml脚本内容 jenkins安装必要插件 jenkins增加流水线任务 增加pipeline任务j…

iptables 防火墙

防火墙:隔离功能 部署在网络边缘或者主机边缘,在工作中,防火墙的主要作用,决定哪些数据可以被外网使用,以及哪些数据可以进入内网访问 主要工作在网络层 安全技术 1.入侵检测系统:检测出威胁&#xff0…

RISCV -3 RV32I/RV64I基本整型指令集

RISCV -3 RV32I/RV64I基本整型指令集 1 RV32I Base Integer Instruction Set1.1 Programmers’ Model for Base Integer ISA1.2 Base Instruction Formats1.3 Immediate Encoding Variants1.4 Integer Computational Instructions1.4.1 Integer Register-Immediate Instruction…

Java的集合类:List、Set、Map

在 Java 中,集合类是一组有序或无序的数据元素的集合。Java 集合类可用于存储和操作各种数据类型的元素,如整数、字符串、对象等。集合类是动态的,可以在运行时根据需要调整其大小。 Java 集合类可以分为三类: List - 有序集合&…

前端常用UI框架

前言: 作为一个前端码农,不仅要熟练使用原生技术,现在更需要掌握的是技术框架和ui框架,因为框架可以帮助我们快速的开发项目,并且能够保证界面的兼容和美观,下面是一些常用的前端ui框架,供大家参…

Windows 2012 R2 编辑ini文本遇到的编码问题

在编辑服务端配置文件时,发现对于ini文本文件: 需注意点一:如果另存为UTF-8保存的实际上格式是UTF-8-BOM编码格式; 但是两种格式是存在差异的: 因此造成在使用C#调用系统DLL读取文件时并未报错,但是当使用…

ChatGPT是否能够进行对话历史的回顾和追踪?

ChatGPT是一种强大的预训练语言模型,具有丰富的语言理解和生成能力。在情感识别和情感生成方面,ChatGPT可以发挥重要作用。 1. **情感识别**: 情感识别是指通过对文本进行分析和理解,确定文本所表达的情感类别,如喜欢…

[德语学习]冠词、代词

定冠词 格阳性 m阴性 f中性 n复数 Pl.第一格 Nderdiedasdie第二格 G第三格 Ddemderdemden第四格 Adendiedasdie 不定冠词 格阳性 m阴性 f中性 n复数 Pl.第一格 Neineineein-第二格 G-第三格 Deinemeinereinem-第四格 Aeineneineein- 人称代词 单数 格我你他/她/它尊称第一…

MySQL 数据库约束

目录 一、数据库约束 1、约束类型 二、NULL 约束 三、unique 约束 四、default 约束 五、primary key 约束 自增主键 六、foreign key 外键约束 七、check 约束 一、数据库约束 我们使用数据库来存储数据,一般是希望这里存储的数据是靠谱的,…

浅谈 Spring IOC 和 DI 以及 Spring 整合 Mybatis 的十四 个注解

IOC 和 DI IOC 控制反转Bean的创建@Component的三个衍生注解Bean作用范围Bean创建时机Bean获取3中常见报错及解决方案DI 依赖注入@Autowired注解两个常见问题多个实现类---2种解决方案关于报错排查步骤管理第三方Bean@Bean 注解配置类优化Spring整合Mybatis整合思想整合实现持久…

【梦辛工作室】IF判断优化、责任链模式 IfChain

大家好哇,我是梦辛工作室的灵,在最近的开发中,有许多需要判断的分支处理,且处理内容较多且复杂,代码就容易越写越复杂,导致后期无法继续更新跌打,然后基于这个环境,我用责任链模式写…

Stable Diffusion在各种显卡上的加速方式测试,最高可以提速211.2%

Stable Diffusion是一种基于扩散模型的图像生成技术,能够从文本生成高质量的图像,适用于CG,插图和高分辨率壁纸等领域。 但是它计算过程复杂,使得它的生成速度较慢。所以研究人员就创造了各种提高其速度的方式,比如Xf…

计算机视觉(二)图像特征提取

文章目录 颜色特征量化颜色直方图适用颜色空间:RGB、HSV等颜色空间操作 几何特征边缘 Edge边缘定义边缘提取 基于关键点的特征描述子引入几何特征:关键点几何特征:Harris角点FAST角点检测几何特征:斑点局部特征:SIFT预…

JavaScript 事件监听

语法:元素对象.addEventListener("事件类型",要执行的函数) 事件监听三要素: 事件源:哪个dom元素被触发了,要获取dom元素事件类型:用什么方式触发,eg:鼠标单击click、鼠标经过mouseover登事件调…