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'

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


相关推荐
Avan_菜菜16 小时前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB2 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode3 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220704 天前
如何搭建本地yum源(上)
运维
大树887 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠7 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质7 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工7 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智7 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_7 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化