ansible自动化运维实战--软件包管理模块、服务模块、文件模块和收集模块setup(4)

文章目录

一、软件包管理模块

1.1、功能

Ansible 提供了多种软件包管理模块,用于在不同的操作系统上安装、卸载、更新软件包。如yum模块用于 CentOS 等系统,apt模块用于 Ubuntu 等系统。

1.2、常用参数

  • name:要安装或管理的软件包名称,可以指定具体版本,如package_name=1.0.0。
  • state:取值为present(安装软件包)、absent(卸载软件包)、latest(安装最新版本的软件包)等。

1.3、示例

  • 安装httpd服务
bash 复制代码
ansible webserves -m yum -a 'name="httpd" state=latest'

使用 Ansible 工具在名为 webserves 的主机或主机组上执行一个任务,该任务是使用 yum 模块进行软件包管理操作;检查 httpd 软件包的当前安装状态:如果 httpd 未安装,Ansible 将使用 yum 安装该软件包的最新版本;如果 httpd 已安装,但不是最新版本,Ansible 将使用 yum 更新该软件包到最新版本。

命令组成部分

  • ansible:Ansible 的命令行工具,用于执行 Ansible 任务。
  • webserves:目标主机或主机组的名称,Ansible 将在这些主机上执行相应的任务。
  • -m yum:指定使用 yum 模块。yum 模块是 Ansible 中专门用于管理基于 Red Hat 系列操作系统(如 CentOS、RHEL)的软件包的模块。
  • -a 'name="httpd" state=latest':模块的参数部分,以键值对的形式给出。
  • name="httpd":指定要操作的软件包名称为 httpd,即 Apache HTTP Server 软件包。
  • state=latest:指定软件包的状态为 latest,这意味着 Ansible 将确保 httpd 软件包在远程主机上处于最新版本。如果 httpd 已经安装,但不是最新版本,Ansible 会自动更新它;如果尚未安装,Ansible 会安装最新版本。

检查host01机子,httpd服务已经安装完成:

查看帮助文档,可使用命令:

bash 复制代码
ansible-doc yum
  • 卸载httpd服务
bash 复制代码
ansible webserves -m yum -a 'name="httpd" state=absent'

二、服务模块

2.1、功能

在 Ansible 中,服务模块用于管理系统服务,例如启动、停止、重启服务,以及设置服务是否开机自启等操作。

2.2、服务模块常用参数

  • name:服务的名称,这是必需的参数,用于指定要操作的服务,例如 httpd、nginx、sshd 等。
  • state:服务的状态,常见的取值有:
    1. started:启动服务。
    2. stopped:停止服务。
    3. restarted:重启服务。
    4. reloaded:重新加载服务(适用于支持重新加载的服务,如 nginx 可以重新加载配置而无需完全重启)。
  • enabled:服务的开机自启设置,取值为 true 或 false。
    1. true:设置服务开机自启。
    2. false:取消服务开机自启。

2.3、示例

以下是几个使用服务模块的示例,以 httpd 服务为例:

bash 复制代码
ansible webserves -m service -a 'name="httpd" state=started'

该命令使用 Ansible 工具在 webserves 主机或主机组上执行一项服务管理任务。通过 service 模块,将 httpd 服务的状态设置为 started,即启动 httpd 服务。

  • 执行流程
  1. Ansible 接收到命令后,会首先识别出 webserves 主机或主机组,这些是要操作的目标。
  2. 然后使用 service 模块对这些目标主机进行服务管理操作。
  3. 根据提供的参数,查找名为 httpd 的服务。
  4. 最后将 httpd 服务的状态设置为 started,如果 httpd 服务尚未启动,Ansible 会启动它;如果已经启动,Ansible 会确保其处于启动状态(不会重复启动)。

三、文件与目录模块

3.1、file功能

用于设置文件或目录的属性,如权限、所有者、链接等,还可以创建或删除文件、目录、软链接。

3.2、常用参数

  • path:指定文件或目录的路径,这是必需的参数。
  • state:
    1. file:表示文件或目录必须存在,如果不存在则创建。
    2. directory:表示创建目录,如果目录不存在。
    3. link:创建软链接。
    4. hard:创建硬链接。
    5. absent:删除文件或目录。
  • mode:设置文件或目录的权限,例如 mode: '0644'。
  • owner:设置文件或目录的所有者,例如 owner: root。
  • group:设置文件或目录的所属组,例如 group: root。
  • src:当 state 为 link 或 hard 时,指定源文件的路径,用于创建链接。

3.3、示例

  • 创建文件

创建一个文件并设置权限777。

bash 复制代码
ansible webserves -m file -a 'path=/tmp/88.txt mode=777 state=touch'

检查host01主机,已经创建了88.txt文件:

bash 复制代码
ls /tmp/88.txt -l
  • 删除文件
bash 复制代码
ansible webserves -m file -a 'path=/tmp/88.txt mode=777 state=absent'
  • 创建目录
bash 复制代码
ansible webserves -m file -a 'path=/tmp/99 mode=777 state=directory'

查看host01主机中是否创建文件夹?

bash 复制代码
ls -l -d /tmp/99

四、收集模块-setup

4.1、setup功能

收集远程主机的系统信息,如主机名、IP 地址、操作系统版本、内存信息等。
主要功能

  • setup 模块会自动收集远程主机的各种系统信息,这些信息包括但不限于:
    1. 硬件信息:如 CPU 核心数、内存大小、磁盘信息、网络接口信息等。
    2. 操作系统信息:操作系统类型(如 RedHat、Debian、Ubuntu 等)、操作系统版本、内核版本等。
    3. 用户信息:当前登录用户、用户组等。
    4. 环境信息:环境变量、路径信息等。

4.2、示例

收集主机信息并存储为变量。

bash 复制代码
ansible host01 -m setup
#此命令输出信息很多
bash 复制代码
ansible host01 -m setup -a 'filter=ansible_all_ipv4_addresses'

世界上最短的路是回家的路,走起来总是那么愉悦;最熟悉的声音是浓浓的乡音,听起来总是那么亲切。


相关推荐
讯捷蓝达2 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
爱和冰阔落5 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisw055 小时前
基于神经网络的机器人导航系统的设计与执行!
神经网络·机器人·自动化
lisanmengmeng5 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
严肃小白兔6 小时前
Cloudflare 更新 API Token 管理:从最小权限到自动化凭据安全
网络·安全·自动化
Android系统攻城狮6 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹6 小时前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器
孙克旭_6 小时前
k8s基础组件与创建资源
运维·docker·容器·kubernetes
2601_968793146 小时前
Python Requests 轻量自动化:无需浏览器,实现真人级账号浏览模拟
开发语言·python·自动化
孙克旭_7 小时前
云原生基础之Containerd容器运行时
运维·云原生