【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.27
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python 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.27
  config 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.27
  config file = /tmp/ansible.cfg
······

# 读取当前目录下的 ansible.cfg(推荐)
[root@tidb ~]# unset ANSIBLE_CONFIG
[root@tidb ~]# ansible --version
ansible 2.9.27
  config 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.27
  config file = /root/project1/ansible.cfg
······
[root@tidb ~/project1]# cd ..
[root@tidb ~]# ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
······

# 读取当前用户家目录下的 .ansible.cfg
[root@tidb ~]# touch ~/.ansible.cfg
[root@tidb ~]# ansible --version
ansible 2.9.27
  config file = /root/.ansible.cfg
·····
[root@tidb ~]# cd project1/
[root@tidb ~/project1]# ansible --version
ansible 2.9.27
  config file = /root/project1/ansible.cfg
······

[root@tidb ~]# rm -rf .ansible.cfg 
[root@tidb ~]# ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【stable diffusion】保姆级入门课程04-Stable diffusion(SD)图生图-局部重绘的用法

目录 0.本章素材 1.什么是局部重绘 2.局部重绘和涂鸦有什么不同 3.操作界面讲解 3.1.蒙版模糊 3.2.蒙版模式 3.3.蒙版蒙住的内容 3.4.重绘区域 4.局部重绘的应用(面部修复) 5.课后训练 0.本章素材 chilloutmix模型(真人模型)百度地址&#xf…

Shedskin 使用

Shedskin是一个编译器工具,可以将Python代码编译为C语言。先说结论吧,这玩意现在就只是个玩具,因为使用ShedSkin编译的程序不能自由使用Python标准库,目前只支持大约17个常用模块: bisect collections ConfigParser c…

位运算修行手册

*明明自觉学会了不少知识,可真正开始做题时,却还是出现了“一支笔,一双手,一道力扣(Leetcode)做一宿”的窘境?你是否也有过这样的经历,题型不算很难,看题解也能弄明白&am…

htmlCSS-----背景样式

目录 前言: 背景样式 1.背景颜色 background-color 2.背景图片 background-image 背景的权重比较 代码示例: 前言: 很久没写文章了,会不会想我呢!今天我们开始学习html和CSS的背景样式以及文字样式&#xff…

python用selenium模拟谷歌浏览器点页面

1、cmd安装selenium,输入pip install selenium 2、模拟点击热搜第一条进去,连接如下 https://weibo.com/newlogin?tabtypeweibo&gid102803&openLoginLayer0&urlhttps%3A%2F%2Fweibo.com%2F 3、查看谷歌版本 4、并去下面下载对应版本的web…

原神盲盒风格:AI绘画Stable Diffusion原神人物公仔实操:核心tag+lora模型汇总

本教程收集于:AIGC从入门到精通教程汇总 在这篇文章中,我们将深入探讨原神盲盒的艺术风格,以及如何运用AI绘画技术(Stable Diffusion)——来创造原神角色公仔。我们将通过实践操作让读者更好地理解这种技术&#xff0…

应用层协议:httphttps,如何进行安全握手?

目录 应用层协议序列化与反序列化JSON网络版本计算器URLurlencode和urldecode HTTP协议简单认识HTTP协议HTTP协议格式HTTP的一些方法HTTP状态码Http的特征cookieConnection HTTPSHTTPS是什么加密与解密常见的加密方式对称加密非对称加密 什么是数据摘要什么是证书HTTPS如何安全…

pytorch工具——pytorch中的autograd

目录 关于torch.tensor关于tensor的操作关于梯度gradients 关于torch.tensor 关于tensor的操作 x1torch.ones(3,3) xtorch.ones(2,2,requires_gradTrue) print(x1,\n,x)yx2 print(y) print(x.grad_fn) print(y.grad_fn)zy*y*3 outz.mean() print(z,out)注意 atorch.randn(2,…

Zabbix监控

文章目录 Zabbix基本概念zabbix介绍zabbix特性zabbix结构 安装和配置Zabbix节点规划案例实施基础环境配置Zabbix安装安装和配置数据库启动zabbix服务 Zabbix界面(1)登录界面(2)中文界面(3)修改登录密码(4)添加被监控机器(5)图形乱码解决(6)发送告警到邮箱创建动作添加操作邮件发…

行为型模式 - 访问者模式

概述 定义: 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。 结构 访问者模式包含以下主要角色: 抽象访问者(Visitor)角色:定义了对每一个元素&…

通过自动化单元测试的形式守护系统架构

目录 0前言 1 背景 2 为什么选择 Archunit 3 Archunit 是什么 4 引入 Archunit 4.1 开始就是如此简单 4.2 如何组织架构规则 4.3 团队如何规范化 0前言 通过自动化单元测试的形式守护系统架构是一种有效的方式,可以确保系统在不断演进和修改的过程中保持稳…

关于Swift中闭包和OC中block对局部变量基本数据类型值的捕获

翻了很多文章,发现关于Swift闭包关于上下文变量捕获这块,都没有说的很详细,或者Swift2这样的老版本已经不适用了,问了GPT也是和自己实验的结果不一样,记录下来。 一:OC的block 首先,回顾一下O…

java本地socket服务端暴露至公网访问【内网穿透】

前言 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于恒川的日常汇报系列,大家有兴趣的可以看一看 📘相关专栏C语言初…

JavaScript中truthy(真值)或者Falsy(假值)

● 在JavaScript中,有五个值是falsy ○ 0 ○ ’ ’ ○ undefined ○ null ○ NaN 除此之外,任何不是空值的都是真值; 假值是什么意思呢?就是转换为布尔值都是false,反则就是true 例如: console.log(Boole…

[ 容器 ] Docker 的数据管理

目录 一、Docker 的数据管理1.1 数据卷2. 数据卷容器 二、 端口映射三、容器互联(使用centos镜像)四、Docker 镜像的创建1.基于现有镜像创建2.基于本地模板创建3.基于Dockerfile 创建3.1 联合文件系统(Unio…

【Matlab】基于遗传算法优化 BP 神经网络的时间序列预测(Excel可直接替换数据)

【Matlab】基于遗传算法优化 BP 神经网络的时间序列预测(Excel可直接替换数据) 1.模型原理2.文件结构3.Excel数据4.分块代码4.1 arithXover.m4.2 delta.m4.3 ga.m4.4 gabpEval.m4.5 initializega.m4.6 maxGenTerm.m4.7 nonUnifMutation.m4.8 normGeomSel…

【Linux从入门到精通】进程的控制(进程退出+进程等待)

本篇文章主要讲述的是进程的退出和进程等待。希望本篇文章的内容会对你有所帮助。 文章目录 一、fork创建子进程 1、1 在创建子进程中操作系统的作用 1、2 写时拷贝 二、进程终止 2、1 常见的进程退出 2、2 进程的退出码 2、2、1 运行结果正确实例 2、2、2 运行结果不正确实例…

怎样原生制作lis的CentOS容器镜像

本文介绍从一个空白的裸机CentOS自己构造检验允许的docker环境。来达到运行环境的高度定制,而不是只能依赖VS或者微软或者数据库厂商提供的镜像当做基础制作。更容易理解基础原理。最终输出产物为lisnew.tar,一个开箱即用的lis运行环境。 制作的整个过程…

1 快速构建mybatis项目

1.1 使用Maven的quickstart框架 注意是不出现w的quickstart&#xff1a; 1.2 加入依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</s…

AIGC分享交流平台、GPT-4、GPT实时联网、Claude

拥有无限畅谈的AI个人助理&#xff0c;提高效率和创造力&#xff0c;引领未来的智能生活&#xff1b; 不仅承载着最前沿的科技理念&#xff0c;更集成了对人工智能可能性的深度理解。 已支持基于GPT、Claude等主流大模型的对话内容生成、支持GPT联网查询实时信息&#xff1b;基…