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

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


相关推荐
欧阳潇瑞38 分钟前
ubuntu磁盘挂载
linux·运维·服务器
四岁爱上了她1 小时前
CentOS更换yum源
linux·运维·centos
再学一丢丢1 小时前
LVS+Keepalived+dns高可用项目架构
运维·服务器
web守墓人2 小时前
【gpt生成-总览】怎样才算开发了一门编程语言,需要通过什么测试
运维·服务器·gpt
Yawesh_best2 小时前
Immich图库本地部署与远程管理:打造你的专属照片云服务
运维
vx_33076231722 小时前
vos3000外呼系统怎么给普通用户开通播放下载录音权限?
运维·服务器·人工智能·ai·媒体
小小坦克手2 小时前
实验不能停:docker 部署支持用户名的redis容器
运维·数据库·redis
想学好C++的oMen2 小时前
Linux环境变量
linux·运维
await 4043 小时前
Dell戴尔服务器 PowerEdge R750xs + window server2012r2 || 2016
运维·服务器
阿7_QuQ4 小时前
Mac屏幕共享怎么使用?
运维·服务器·macos