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

news2024/11/25 9:54:08

目录

一、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

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

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

相关文章

PHP后台登录功能单账号登录限制

PHP后台登录功能单账号登录限制 单账号登陆是什么第一步创建数据表第二步创建登录页面test2.html第三步创建登录提交test2.php第四步访问后台首页第五步演示 单账号登陆是什么 一个用户只能登录一个账号通常被称为单账号登录限制或单用户单账号限制。这意味着每个用户只能使用…

TCP通信 -- 接收并反馈(全)

TCP通信整体过程: 1.【服务端】启动,创建ServerSocket对象,等待连接。2.【客户端】启动,创建Socket对象,请求连接。3.【服务端】接收连接,调用accept方法,并返回一个Socket对象。4.【客户端】Socket对象,获取OutputStr…

JVM之内存与垃圾回收篇3

文章目录 8 垃圾回收8.1 基本理论8.1.1 对象的finalization机制8.1.2 理解System.gc8.1.3 内存溢出和内存泄漏8.1.4 Stop The World8.1.5 安全点和安全区域8.1.6 Java中的引用 8.2 垃圾回收算法8.2.1 引用计数法8.2.2 可达性分析8.2.2.1 使用MAT查看GC Roots8.2.2.2 使用JProfi…

【docker,typeorm】docker时区与本地时区的不同步【已解决】

前言 我使用账号登陆vuecms.cn网站,查看登陆日志,发现所有时间全部少8个小时。懵逼树上懵逼果,懵逼树下你和我… 我的开源网站后端是基于nestjs,数据库使用typeorm进行连接操作 原因分析: 原因一: docker环境与本地环…

结构型设计模式之适配器模式【设计模式系列】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everythi…

Type [unknown] not present(主要问题是jar冲突)

解决方案:1选择pom.xml 2鼠标移动到打开的pom.xml点击右键选择maven 显示图 3ctrl鼠标左键移动找到红线 可以看到引入冲突 4按照实际需求对pom.xml的引入进行增删或者版本升级降级,直到以下图标中没有红线冲突即可

SQL注入 三范式

学习目标 了解三范式的要求 1. 什么是范式 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 实际上家用电器都有…

香农极限是如何影响光纤容量的

1 引言 上世纪末,DWDM技术开始在干线通信中使用并迅速普及。虽然当时DWDM系统的容量只有402.5G,但实验室中DWDM支持的波道数甚至超过了1000波,单波道速率也飙到了惊人的160G(超1000波和单波160G是两个独立事件)。人们普…

docker快速搭建并使用Zabbix

docker搭建并使用Zabbix 0 zabbix基础知识 zabbix-server zabbix 的server 端,负责接收agent发送过来的监控数据,并且提供zabbix的所有核心功能。database 用于存储监控数据和配置信息的数据库,目前常用的有mysql和postgresql两种数据库。za…

【AutoSAR应用软件设计】

AutoSAR总体架构 是本文讲解内容。 接口类型 AUTOSAR接口 –SWCs和/或BSW模块交换的信息–独立于实施/网络/硬件–端口接口 标准化AUTOSAR接口 –AUTOSAR接口–标准化的语法和语义–标准化端口接口 标准化接口 –标准化API–通常为特定编程语言(“C”&#x…

火狐浏览器鼠标点击页面区域文字时,出现光标的问题

点击一些资源卡片和查看别的页面时,发现点击非输入框的地方,出现了光标,误以为光标处可以填写东西,就试着敲了几次键盘,发现没有任何反应;然后就叫开发那个页面的同事过去看看;那个同事按F12各种…

如何监控Linux和Oracle数据库运行状态

背景: 在生产环境中,一般可能会发生服务器宕机或者数据库宕机的情况,如何准确的把握找准”生产事故“的具体发生时间,其实有很多方法,可以借助第三方的监控软件或者其他收费软件。 但是本人就是穷逼一个,不可能买或者使用盗版的三方软件。所有设计了以下流程检测Linux和…

16_LinuxINPUT子系统

目录 input子系统简 input驱动编写流程 注册input_dev 上报输入事件 input_event结构体 按键input驱动程序编写 编写测试APP 运行测试 input子系统简 按键、鼠标、键盘、触摸屏等都属于输入(input)设备,Linux内核为此专门做了一个叫做input子系统的框架来处理输入事件。…

node中间件-express框架

文章目录 前置 Express安装1. 基本使用2. 中间件2.1 中间件应用 3. 中间件的注册方式3.1 普通中间件的注册3.2 path匹配中间件3.3 method与路径匹配3.4 案列中间件匹配与执行方法 4. 中间件request数据解析4.1 解析request body中间件4.2 urlencoded解析 5. 第三方中间件5.1 mo…

CHI协议保序之Comp保序

一致性系统中,需要 memroy model 使用 multi-copy atomicity; 一致性系统中,使用三种保序方式; Completion response □ Comp 响应 表示当前的请求,己经达到了 POC/POS, POC/POS 将保证其命令的执行顺序和接收的顺序是一致的&…

Python(三十三)分支结构——嵌套if的使用

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

Android Studio下载

目录 确定版本下载地址 确定版本 如果是入职工作,先和同事确定好版本。因为每个项目使用的gradle插件版本,是在根目录的build.gralde文件中统一定义的,这个文件在添加第三方库(例如GreenDao,Arouter等)或者…

SpringBoot项目的创建

等待maven下载完成 删除无用文件 此时我们就创建成功了

Shiro权限绕过漏洞(CVE-2020-1957,CVE-2020-11989、CVE-2020-13933)

一、Apache Shiro Apache Shiro 是一个强大且易用的Java安全框架,能够用于身份验证、授权、加密和会话管理。 二、Shiro漏洞指纹(部分) 1、在请求包的cookie中有remember字段赋任意值 2、返回包中存在set-Cookie:remeberMedeleteMe 三、受…

通过宝塔面板将vue项目放到阿里云服务器(两个vue项目)

前提条件: 端口提前开放所需环境安装好(Nginx node…)以及打包好的vue文件(dist) 第一步:上传文件到自定义目录 第二步:在首页找到Nginx软件并配置 第三步:配置具体的配置 这里说…