Linux基础 - Ansible 服务实现自动化运维

目录

零. 简介

一. 安装

二. 模块介绍

三. 基本使用


零. 简介

Ansible 是一款极其强大且简单易用的开源 IT 自动化工具。

它的主要特点和优势包括:

  1. 无代理架构:Ansible 不需要在被管理的节点上安装代理程序,而是通过 SSH 协议与目标节点进行通信,这大大降低了部署和维护的复杂性。
  2. 简单的配置语言:使用 YAML 格式的配置文件,语法简洁易懂,易于学习和编写。
  3. 强大的模块库:提供了丰富的内置模块,涵盖了系统管理、应用部署、配置管理等众多领域,能够满足各种常见的自动化需求。
  4. 可扩展性:支持自定义模块和插件的开发,以满足特定的业务需求。
  5. 幂等性操作:Ansible 的操作具有幂等性,即多次执行相同的任务,其结果始终一致,不会产生意外的副作用。
  6. 跨平台支持:可以管理多种操作系统,包括 Linux、Windows、Unix 等。

Ansible 通常用于自动化服务器配置、应用部署、软件安装、系统更新、用户管理等一系列重复性的运维任务,能够显著提高工作效率,减少人为错误,保障系统的一致性和稳定性。

一. 安装

以下是在 Linux 系统上安装 Ansible 的一般步骤:

  1. 安装依赖(在基于 Red Hat 的系统上,如 CentOS 或 RHEL):
   sudo yum install epel-release
   sudo yum update

在基于 Debian 的系统上,如 Ubuntu:

   sudo apt-get update
   sudo apt-get install software-properties-common
   sudo apt-add-repository --yes --update ppa:ansible/ansible

安装 Ansible:

  • 在基于 Red Hat 的系统上:
     sudo yum install ansible
  • 在基于 Debian 的系统上:
     sudo apt-get install ansible

安装完成后,您可以通过以下命令验证 Ansible 是否安装成功:

ansible --version

这将显示 Ansible 的版本信息,表明安装成功。

二. 模块介绍

  1. command 模块:在远程主机执行命令,这是 Ansible 的默认模块,可忽略 -m 选项。但它不支持 $varname<>|;& 等,也不支持管道符、重定向符号,并且不具有幂等性。
    • 基本格式:ansible <组名/ip> (-m command) -a '命令'
    • 常用参数:
      • chdir:在远程主机上运行命令前,提前进入指定目录。
      • creates:判断指定文件是否存在,如果存在,不执行后面的操作。
      • removes:判断指定文件是否存在,如果存在,执行后面的操作。
    • 示例:
      • 指定组或 IP 执行命令:ansible 192.168.2.102 -a 'date' 或 ansible webservers -a 'date'
      • 使用 chdir 参数:ansible all -m command -a "chdir=/home ls./"
      • 使用 creates 参数:ansible all -m command -a "creates=/opt/test.txt ls./"
      • 使用 removes 参数:ansible all -m command -a "removes=/opt/test.txt ls./"
  2. shell 模块:和 command 模块类似,用于在远程主机执行命令,相当于调用远程主机的 shell 进程,然后在该 shell 下打开一个子 shell 运行命令。此模块支持管道符号等功能,但也不具有幂等性。
    • 基本格式:ansible <组/ip/all> -m shell -a '命令'
  3. cron 模块:用于管理远程主机上的定时任务。
    • 常用参数:
      • minute:分钟字段,取值范围 0-59。
      • hour:小时字段,取值范围 0-23。
      • day:日期字段,取值范围 1-31。
      • month:月份字段,取值范围 1-12。
      • weekday:星期字段,取值范围 0-6(0 表示星期日)。
      • job:要执行的任务或命令。
      • name:定时任务的名称。
      • state:状态,可选值为 present(添加或更新定时任务)、absent(删除定时任务)。
    • 示例:添加一个每天凌晨 2 点执行的备份任务,任务名为 daily_backup :ansible hosts -m cron -a "minute=0 hour=2 job='/usr/local/bin/backup.sh' name=daily_backup state=present"
  4. user 模块:用于管理远程主机上的用户。
    • 常用参数:
      • name:用户名。
      • password:用户密码(需加密)。
      • state:状态,可选值为 present(创建或确保用户存在)、absent(删除用户)。
      • system:是否为系统用户。
      • uid:用户 ID。
      • group:用户所属的主组。
      • groups:用户所属的附加组列表。
    • 示例:创建一个名为 testuser 的用户,密码为 pass123 ,主组为 users ,附加组为 admins :ansible hosts -m user -a "name=testuser password='$6$salt$encrypted_password' state=present group=users groups=admins"
  5. group 模块:用于管理远程主机上的用户组。
    • 常用参数:
      • name:组名。
      • state:状态,可选值为 present(创建或确保组存在)、absent(删除组)。
      • gid:组 ID。
    • 示例:创建一个名为 testgroup 的组:ansible hosts -m group -a "name=testgroup state=present"
  6. copy 模块:用于将本地文件复制到远程主机。
    • 常用参数:
      • src:本地源文件路径。
      • dest:远程目标文件路径。
      • backup:在覆盖之前,是否将源文件备份,备份文件包含时间信息,可选值为 yes 或 no 。
      • content:用于替代 src,可以直接设定指定文件的值。
    • 示例:将本地的 /etc/hosts 文件复制到远程主机的 /tmp/hosts 位置:ansible hosts -m copy -a "src=/etc/hosts dest=/tmp/hosts"
  7. file 模块:用于设置文件的属性。
    • 常用参数:
      • path:文件或目录的路径。
      • state:状态,可选值包括 directory(创建目录)、file(创建文件)、link(创建符号链接)、hard(创建硬链接)、absent(删除文件或目录)。
      • owner:文件或目录的所有者。
      • group:文件或目录的所属组。
      • mode:文件或目录的权限,例如 0644 。
    • 示例:创建一个目录:ansible hosts -m file -a "path=/tmp/testdir state=directory"
  8. hostname 模块:用于设置远程主机的主机名。
    • 示例:将远程主机的主机名设置为 new_hostname :ansible hosts -m hostname -a "name=new_hostname"
  9. ping 模块:用于测试与远程主机的连通性。
    • 示例:ansible hosts -m ping
  10. yum/apt 模块:用于在基于 Yum(如 CentOS、RedHat)或 Apt(如 Debian、Ubuntu)的系统上安装、更新或删除软件包。
    • 常用参数:
      • name:软件包名称。
      • state:状态,可选值为 present(安装)、latest(安装最新版本)、absent(删除)。
    • 示例:使用 Yum 安装 Nginx:ansible hosts -m yum -a "name=nginx state=present"
  11. service/systemd 模块:用于管理远程主机上的服务。
    • 常用参数:
      • name:服务名称。
      • state:状态,可选值为 started(启动服务)、stopped(停止服务)、restarted(重启服务)、reloaded(重新加载服务配置)。
    • 示例:启动 Nginx 服务:ansible hosts -m service -a "name=nginx state=started"
  12. script 模块:用于在远程主机上执行本地的脚本。
    • 示例:执行本地的 /path/to/local_script.sh 脚本:ansible hosts -m script -a "/path/to/local_script.sh"
  13. mount 模块:用于管理远程主机上的挂载点。
    • 常用参数:
      • name:挂载点路径。
      • src:设备或文件系统的源路径。
      • opts:挂载选项。
      • state:状态,可选值为 mounted(挂载)、unmounted(卸载)。
    • 示例:挂载一个设备到 /mnt/data :ansible hosts -m mount -a "name=/mnt/data src=/dev/sdb1 opts=defaults state=mounted"
  14. archive 模块:用于创建归档文件(如 tar 包)。
    • 常用参数:
      • path:要归档的文件或目录路径。
      • dest:归档文件的目标路径。
      • format:归档格式,如 tar 、zip 等。
    • 示例:将 /data 目录打包成 /tmp/data.tar :ansible hosts -m archive -a "path=/data dest=/tmp/data.tar format=tar"
  15. unarchive 模块:用于解压归档文件。
    • 常用参数与 archive 模块类似,需要指定 src 为归档文件的路径,以及解压的 dest 目录。
    • 示例:解压 /tmp/data.tar 到 /opt 目录:ansible hosts -m unarchive -a "src=/tmp/data.tar dest=/opt"
  16. replace 模块:用于在文件中替换字符串。

三. 基本使用

以下是 Ansible 的基本使用步骤:

  1. 配置主机清单(Inventory):
    • 在 /etc/ansible/hosts 文件中添加要管理的主机信息,可以按照组来划分主机。例如:
     [webservers]
     server1
     server2

     [dbservers]
     db1
     db2
  1. 创建 Ansible 剧本(Playbook):
    • 使用 YAML 格式创建一个剧本文件,例如 deploy.yml 。以下是一个简单的示例,用于在目标主机上安装 Nginx 服务:
     ---
     - hosts: webservers
       tasks:
         - name: Install Nginx
           yum:
             name: nginx
             state: present
  1. 运行剧本:
    • 使用以下命令运行剧本:
     ansible-playbook deploy.yml

在运行命令后,Ansible 将连接到指定的主机,并按照剧本中的任务进行操作。

您还可以使用 Ansible 的模块进行各种其他操作,如文件管理、用户管理、服务管理等。可以通过 ansible-doc -l 查看可用的模块列表,通过 ansible-doc 模块名 查看特定模块的详细用法。

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

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

相关文章

网站被浏览器提示“不安全”的解决办法

在互联网时代&#xff0c;网站的安全性直接关系到用户体验和品牌形象。当用户访问网站时&#xff0c;如果浏览器出现“您与此网站之间建立的连接不安全”的警告&#xff0c;这不仅会吓跑潜在客户&#xff0c;还可能对网站的SEO排名造成等负面影响。 浏览器发出的“不安全”警告…

第二周:计算机网络概述(下)

一、计算机网络性能指标&#xff08;速率、带宽、延迟&#xff09; 1、速率 2、带宽 3、延迟/时延 前面讲分组交换的时候介绍了&#xff0c;有一种延迟叫“传输延迟”&#xff0c;即发送一个报文&#xff0c;从第一个分组的发送&#xff0c;到最后一个分组的发送完成的这段时…

[Microsoft Office]Word设置页码从第二页开始为1

目录 第一步&#xff1a;设置页码格式 第二步&#xff1a;设置“起始页码”为0 第三步&#xff1a;双击页码&#xff0c;出现“页脚”提示 第四步&#xff1a;选中“首页不同” 第一步&#xff1a;设置页码格式 第二步&#xff1a;设置“起始页码”为0 第三步&#xff1a;双…

设备调试上位机GUI

C Fast Qt C 前端 原来真的不需要在 design 上画来画去&#xff0c;有chat-gpt 那里不知道问哪里 全是组件拼起来的,不需要画,最后发现其实也是定式模式,跟着AI 学套路

python 分析nginx的error.log日志 然后写入到 mongodb当中 并且解决mongodb无法根据id删除数据的问题

废话不多说 直接上代码 import re import os import pymongo import uuid import bson def extract_unresolved_info(log_path):unresolved_info []with open(log_path, r) as file:log_text file.read()lines log_text.split("\n")for line in lines:# 这种属于主…

javaweb(四)——过滤器与监听器

文章目录 过滤器Filter基本概念滤波器的分类: 时域和频域表示滤波器类型1. 低通滤波器(Low-Pass Filter)2. 高通滤波器(High-Pass Filter)3. 带通滤波器(Band-Pass Filter)4. 带阻滤波器(Band-Stop Filter) 滤波器参数1. 通带频率(Passband Frequency)2. 截止频率(Cutoff Frequ…

独家首发 | Matlab实现SVM-Transformer多变量回归预测

独家首发 | Matlab实现SVM-Transformer多变量回归预测 目录 独家首发 | Matlab实现SVM-Transformer多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现SVM-Transformer多变量回归预测&#xff0c;SVM递归特征消除Transformer多输入单输出回归预测…

物联网工业级网关解决方案 工业4G路由器助力智慧生活

随着科技的飞速发展&#xff0c;无线通信技术正逐步改变我们的工作与生活。在这个智能互联的时代&#xff0c;一款高性能、稳定可靠的工业4G路由器成为了众多行业不可或缺的装备。工业4G路由器以其卓越的性能和多样化的功能&#xff0c;助力我们步入智慧新纪元。 一、快速转化&…

构建高效的数字风控系统:应对现代网络威胁的策略与实践

文章目录 构建高效的数字风控系统&#xff1a;应对现代网络威胁的策略与实践1. 数字风控基本概念1.1 数字风控&#xff08;数字化风控&#xff09;1.2 数字风控的原理1.3 常见应用场景 2. 数字风控的必要性3. 构建高效的数字风控系统3.1 顶层设计与规划3.2 数据基础建设3.3 风险…

【Python实战因果推断】12_线性回归的不合理效果2

目录 Adjusting with Regression Adjusting with Regression 为了了解回归的威力&#xff0c;让我带您回到最初的例子&#xff1a;估计信贷额度对违约的影响。银行数据通常是这样的&#xff0c;其中有很多列客户特征&#xff0c;这些特征可能表明客户的信贷价值&#xff0c;比…

【鸿蒙学习笔记】基础组件Progress:进度条组件

官方文档&#xff1a;Progress 目录标题 作用最全属性迭代追加进度赋值风格样式 作用 进度条组件 最全属性迭代追加 Progress({ value: 20, total: 100, type: ProgressType.Linear }).color(Color.Green)// 颜色.width(200)// 大小.height(50)// 高度.value(50)// 进度可更…

【RabbitMQ实战】Springboot 整合RabbitMQ组件,多种编码示例,带你实践 看完这一篇就够了

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、对RabbitMQ管理界面深入了解1、在这个界面里面我们可以做些什么&#xff1f; 二、编码练习&#xff08;1&#xff09;使用direct exchange(直连型交换机)&a…

【网络安全】修改Host文件实现域名解析

场景 开发一个网站或者服务&#xff0c;需要在本地测试时&#xff0c;可以将线上的域名指向本地开发环境的IP地址。从而模拟真实环境中的域名访问&#xff0c;方便调试和开发。 步骤 1、以管理员身份打开命令提示符 2、编辑hosts文件&#xff1a; 输入以下命令打开hosts文…

【Python数据分析及环境搭建】:教程详解1(第23天)

系列文章目录 Python进行数据分析的优势常用Python数据分析开源库介绍启动Jupyter服务Jupyter Notebook的使用 文章目录 系列文章目录前言学习目标1. Python进行数据分析的优势2. 常用Python数据分析开源库介绍2.1 NumPy2.2 Pandas2.3 Matplotlib2.4 Seaborn2.5 Sklearn2.6 Ju…

【PB案例学习笔记】-26制作一个带浮动图标的工具栏

写在前面 这是PB案例学习笔记系列文章的第26篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

怎样使用js技术实现Chrome投屏功能?

在Web前端技术中&#xff0c;直接控制浏览器窗口或标签页从主屏投屏到副屏&#xff08;如PPT的演讲者模式&#xff09;并不简单&#xff0c;而且直接控制浏览器窗口从主屏投屏到副屏的功能超出了Web标准的范畴&#xff0c;并且涉及到用户系统级别的设置和权限&#xff0c;因此不…

正确认识手机NFC,安全无风险

在数字化生活日益普及的今天&#xff0c;NFC&#xff08;近场通信&#xff09;技术以其独特的便捷性和高效性&#xff0c;逐渐成为了我们日常生活中不可或缺的一部分。然而&#xff0c;面对新技术的崛起&#xff0c;总有一些用户对于其安全性心存疑虑&#xff0c;尤其是关于“N…

(一)Docker基本介绍

部署项目的发展 传统部署适合需要最大性能和可靠性的场景&#xff0c;但在资源利用和管理方面有显著劣势。虚拟化部署提供了良好的资源利用率和隔离性&#xff0c;适用于需要灵活扩展和多租户环境的场景&#xff0c;但存在性能开销。容器部署在轻量级、可移植性和资源利用率方面…

JVM线上监控环境搭建Grafana+Prometheus+Micrometer

架构图 一: SpringBoot自带监控Actuator SpringBoot自带监控功能Actuator&#xff0c;可以帮助实现对程序内部运行情况监控&#xff0c;比如监控内存状况、CPU、Bean加载情况、配置属性、日志信息、线程情况等。 使用步骤&#xff1a; 1. 导入依赖坐标 <dependency><…

Omni3D目标检测

Omni3D是一个针对现实场景中的3D目标检测而构建的大型基准和模型体系。该项目旨在推动从单一图像中识别3D场景和物体的能力&#xff0c;这对于计算机视觉领域而言是一个长期的研究目标&#xff0c;并且在机器人、增强现实&#xff08;AR&#xff09;、虚拟现实&#xff08;VR&a…