ansible自动化运维实战--script、unarchive和shell模块(6)

文章目录

一、script模块

1.1、功能

Ansible 的 script 模块允许你在远程主机上运行本地的脚本文件,其提供了一种便捷的方式来执行自定义脚本以实现特定的自动化任务。

1.2、常用参数

  • chdir:可选参数,用于指定在远程主机上执行脚本时的工作目录。例如,若脚本依赖于特定目录下的文件,可通过该参数指定目录。
  • creates:可选参数,指定一个文件路径。如果该文件在远程主机上已经存在,脚本将不会执行。这可以避免重复执行某些耗时或有副作用的脚本。
  • removes:可选参数,指定一个文件路径。如果该文件在远程主机上不存在,脚本将不会执行。
  • executable:可选参数,用于指定执行脚本的解释器。例如,若脚本是 Python 脚本,可指定 executable: /usr/bin/python3。

1.3、举例

首先在ansible主机中创建一个脚本文件

bash 复制代码
vim van.sh

#脚本文件中的内容
date > /tmp/time.txt
  • 创建script服务
bash 复制代码
ansible webserves -m script -a "/root/van.sh"

在任何主机中查看文件:

二、unarchive模块

2.1、功能

Ansible 的 unarchive 模块用于在远程主机上解压缩归档文件,如 .tar、.tar.gz、.zip 等。

2.2、常用参数

  • src:必选参数,指定要解压缩的归档文件的路径。该路径可以是本地控制节点上的文件路径,也可以是远程主机上的文件路径。如果文件位于本地,需要结合 copy 参数使用。
  • dest:必选参数,指定解压缩文件的目标目录,即归档文件内容将被解压到这个目录下。
  • copy:布尔类型参数,默认值为 true。当设置为 true 时,Ansible 会先将本地的归档文件复制到远程主机,然后再进行解压缩操作;当设置为 false 时,假定归档文件已经存在于远程主机上,直接在远程主机上进行解压缩。
  • creates:可选参数,指定一个文件或目录路径。如果该文件或目录在远程主机上已经存在,解压缩操作将不会执行,可避免重复解压。
  • owner:可选参数,用于指定解压缩后的文件和目录的所有者。
  • group:可选参数,用于指定解压缩后的文件和目录的所属组。
  • mode:可选参数,用于指定解压缩后的文件和目录的权限,例如 mode: '0755'。

2.3、举例

在ansible主机中操作:

bash 复制代码
#压塑etc目录为tigerhhzz02.tar压缩文件
tar -Pzcvf tigerhhzz02.tar /root/tiger-test/

把tigerhhzz.tar压缩包解压到主机组中的每台机子中

bash 复制代码
ansible webserves -m unarchive -a 'src=/root/tigerhhzz02.tar dest=/home'

查看组中的任意一台机子的home目录下:

三、shell模块

3.1、功能

shell模块能让你在远程主机上执行任意 shell 命令,实现系统配置、软件安装、文件操作等多种自动化任务。与command模块不同,shell模块会通过 shell 环境(如/bin/sh)来执行命令,这意味着它支持 shell 的一些特性,像管道、重定向等。

3.2、常用参数

  • chdir:指定在远程主机上执行命令时的工作目录。在执行依赖特定路径的命令时很有用。
  • creates:指定一个文件路径,如果该文件在远程主机上已经存在,命令将不会执行,避免重复操作。
  • removes:指定一个文件路径,如果该文件在远程主机上不存在,命令将不会执行。
  • executable:指定执行命令的 shell 解释器,默认是/bin/sh,你可以根据需要指定其他解释器,如/bin/bash。

3.3、举例

查看组中每个主机的主机名:

bash 复制代码
ansible webserves -m shell -a "hostname" -o

批量安装vsftpd服务到组中每个主机:

bash 复制代码
ansible webserves -m shell -a "yum install -f vsftpd" -o

并开启vsftpd服务:

bash 复制代码
ansible webserves -m shell -a "systemctl start vsftpd" -o

生活可能不像你想象的那么好,但是也不会像你想象的那么糟。


相关推荐
AI智域边界 - Alvin Cho1 小时前
Bloomberg、LSEG 与 MCP 缺口:为什么尚未发布完整的 MCP 服务器,以及多智能体系统如何解決这问题
运维·服务器
_OP_CHEN2 小时前
Linux网络编程:(七)Vim 编辑器完全指南:从入门到精通的全方位实战教程
linux·运维·服务器·编辑器·vim·linux生态·linux软件
Maple_land2 小时前
第1篇:Linux工具复盘上篇:yum与vim
linux·运维·服务器·c++·centos
shizhan_cloud2 小时前
Linux 硬盘分区管理
linux·运维
蓁蓁啊3 小时前
Ubuntu 虚拟机文件传输到 Windows的一种好玩的办法
linux·运维·windows·单片机·ubuntu
liao__ran3 小时前
ClickHouse CPU 排查快速参考指南
运维·服务器·clickhouse
liao__ran3 小时前
ClickHouse CPU 排查详细指南
运维·clickhouse
曦樂~4 小时前
【Docker】Dockerfile自定义镜像
运维·docker·容器
拾心214 小时前
【云运维】Kubernetes安装(基于 Docker + Calico)
运维·docker·kubernetes
q***51894 小时前
离线安装 Nginx
运维·数据库·nginx