【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…

【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…

【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…

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

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

MySQL 数据库约束

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

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

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

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

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

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

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

idea中Easy Code模版配置

首先找到模版位置 找到使用的模版,我用的是MybatisPlus-H,这是我新建的一个模版 controller.java.vm模版 ##导入宏定义 $!{define.vm}##设置表后缀(宏定义) #setTableSuffix("Controller")##保存文件(宏定义&#xff…

qemu搭建arm环境以及文件共享

几乎完全参照该文章 使用QEMU搭建ARM64实验环境 - 简书 ubuntu 14.04,linux3.16, busybox-1.31.0 arm-linux-gnueabi-gcc -v linux3.16以及busybox下载安装可参考链接 Ubuntu14.04安装qemu,运行linux-3.16gdb调试_qemu 安装 ubuntu 14_这个我…

【数学建模】相关是一个距离指标吗?

一、说明 本文探讨最平凡的数学模型--距离模型。我们知道,任何数学模型如果是个距离模型,那么它是:放心的、自动的、不加任意条件的指标项目。然而另一些度量参数不是距离空间,因此,使用起来必须外加若干条件&#xff…

一款好用的思维导图软件drawio

最近需要画思维导图,结果发现既然被人用来收费了。所以记录一下,免得大家上当。 首先说明,这个东东在github上是免费开源的,收费的是一些不法分子搞得。下面是收费版本得界面。 开源地址: https://github.com/jgraph…

JUC并发编程之CompletableFuture详解

目录 1.Future接口 1.1 Future介绍 1.1.1 FutureTask 1.1.2 代码示例 2. CompletableFuture 2.1 基本概念 2.2 代码示例 2.2.1 创建CompletableFuture 2.2.2 函数式接口(补充) 2.2.3 异步任务组合 1.Future接口 1.1 Future介绍 JUC并发编程中的…

二叉树题目:从根到叶的二进制数之和

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:从根到叶的二进制数之和 出处:1022. 从根到叶的二进制数之和 难度 3 级 题目描述 要求 给你二叉树…

Git标签管理(对版本打标签,起别名)

tag 理解标签创建标签git tag [name]git show [tagname] 操作标签删除标签git tag -d < tagname > 推送某个标签到远程git push origin < tagname > 理解标签 标签 tag &#xff0c;可以简单的理解为是对某次 commit 的⼀个标识&#xff0c;相当于起了⼀个别名。 …

C# winform子窗口向父窗口传值

这里我使用一个简单的方法。只需要在父窗口定义一个静态变量就行。 父窗体为Form1,子窗体为Form2。 public static int get_num0; 子窗体直接给get_num赋值即可。 Form1.get_num2; 这样父窗体就能获得get_num修改后这个值了