ansible自动化运维(二)ad-hoc模式

目录

Ansible模块(ad-hoc模式)

1.command模块:远程执行命令

2.shell 模块:远程执行命令,支持管道,重定向

3.Raw模块:先登录,再执行,最后退出

4.Script模块:远程执行脚本

5.cron 模块:远程定义任务计划

6.User模块:管理用户的模块

7.Group模块:管理用户组

8.Copy模块:指定本地文件复制到远程主机

9.Fetch模块:从远程主机获取文件

10.File模块:设置文件属性

11.Service/systemd模块:控制服务运行状态

12.yum模块:远程安装软件

13.Mount模块:管理设备下载和caish卸载

14.Unarchive模块:解压缩模块

15.Archive模块:打包压缩

16.Get_url模块:下载文件

17.Replace模块:类似于sed命令

18.Setup模块:获取主机信息


Ansible模块(ad-hoc模式)

Ansible帮助命令

ansible –help   #查询更多的参数命令

ansible-doc           #帮助命令

ansible-doc -l      #列出所以的模块

ansible-doc 模块名   #查看模块的详细信息

ansible-doc 模块名 -s  #查看模块的选项使用说明

sible中常见的返回值

返回值

返回值含义

changed

几乎所有的Ansible模块都会返回该变量,表示模块是否对远程主机执行了修改操作

failed

如果模块未能执行完成,将返回failed为true

msg

模块执行失败的原因,常见的错误如ssh连接失败

rc

与命令行工具相关的模块会返回rc,表示执行Linux命令的状态码

stdout

与rc类似,返回的是标准输出的结果

stderr

与rc类似,返回的是标准错误的结果

backup_file

所有存在backup选项的模块,用来返回备份文件的路径

results

应用在playbook中存在循环的情况,返回多个结果

模块的格式:

# 默认为command模块

ansible 主机 / 组名称 -m 模块 -a “具体命令”

ansible 主机 / 组名称 -a “具体命令”

1.command模块:远程执行命令

在远程主机执行命令,不支持管道,重定向等shell的特性。【默认模块】

常用的参数:(command和shell可用)

  • chdir:在远程主机上运行命令前提前进入目录
  • creates:判断指定文件或目录是否存在,如果存在,不执行后面的操作
  • removes:判断指定文件或目录是否存在,如果存在,执行后面的操作

正常用法:4c2af5b7d1124e13b509ad7c86bcdc73.png

切换到指定目录在执行命令

[root@web01 ~]# ansible web02 -m command -a "chdir=/home ls"

192.168.143.162 | CHANGED | rc=0 >>

456.txt

b06bf1611f724256a46b65cc3fb04173.png

判断指定文件或目录是否存在,如果存在,该怎么办

执行命令:

6b70ea74b6b74d0da21ee56397a6c013.png

不执行命令:

f49414e9ac9148ee847f6b061b714cc0.png

参数可结合使用

7fb84a215573407db88ea3bbc5e86688.png

与shell的区别,对管道及重定向等shell命令支持与否

89f6d760578647b085475a5a76e49ec2.png

2.shell 模块:远程执行命令,支持管道,重定向

输出信息到shell.txt

[root@web01 ~]# ansible web02 -m shell -a "echo "这是shell命令" >shell.txt"

192.168.143.162 | CHANGED | rc=0 >>

验证:

6a3434c970be4958889b8e02dece6fe8.png

Shell使用removes参数

cac2e28031b14ba79990af3d9946e943.png

3.Raw模块:先登录,再执行,最后退出

它是支持一些shell命令的,因为它的本质就是ssh登录后再执行命令

输出信息到raw.sh文件中

[root@web01 ~]# ansible web02 -m raw -a "echo "这是raw模块" >raw.sh

3bcc84f119b14aa6924fd816f431ab52.pnge4f1ede8c25549c08cd34bdb5b60666f.png

4.Script模块:远程执行脚本

格式:

ansible 本地主机  -m script -a "script_file"

script_file填写你的目标主机脚本路径

再web01,web02主机上编写脚本

c2f59305da7943fbbdcc18804a64979f.png

38e8217f1f4047e5b1dc87b27fa84ff0.png

执行web02主机上的脚本

8ea8a8b342c64e46b369876e15fbf48a.png

可以看出不能执行远程服务器的脚本

执行本地主机web01的脚本

cb94654d806546f9b373fc61f36b143c.png

5.cron 模块:远程定义任务计划

其中有两种状态(state):present表示添加(可以省略),absent表示移除。

Cron模块常用的参数:

  • minute/hour/day/month/weekday:分/时/日/月/周
  • job:任务计划要执行的命令
  • name:任务计划的名称
  • user:指定计划任务属于哪个用户,默认是root用户
  • state

                present:创建

                absent:删除

(不写执行时间,默认就是每分钟一次;不写name默认为None)

主题为test,输出hello

[root@web01 ~]# ansible web02 -m cron -a "job='/bin/echo hello' name='test'  "

7e1648ef6801445890dd8fb838049199.png

查看设置的定时任务

a00d105ece2f42458641112a54ea357e.png

6.User模块:管理用户的模块

user用于管理用户的创建与删除,相当于useradd,userdel,usermod;

常用的参数:

name:用户名,必选参数

state=present|absent:创建账号或者删除账号,present表示创建,absent表示删除

system=yes/no:是否为系统账号

uid:用户uid

group:用户基本组

groups: 用户所属附加组

shell:默认使用的shell

create_home=yse/no: 是否创建家目录

password:用户的密码,建议使用加密后的字符串

remove=yes/no:是否删除用户的家目录

user模块更多参数可使用ansible -doc user查看

用户名要用引号包裹,创建用户test01,不删除家目录

[root@web01 ~]# ansible web02 -m user -a "name="test01" remove=no"

003d3e8385184d05b2d3fc58c790da21.png

ca6a6045694242cf8be2814345dc2e97.png

7.Group模块:管理用户组

group模块用于管理用户组的,相当于groupadd,groupdel等。

User模块的参数同样适用于group

设置用户组为mysql,组id为1001,设为系统用户组

[root@web01 ~]# ansible web02 -m group -a "name=mysql gid=1001 system=yes"

4e77687f02034b6cb4ff3f026d8b8c93.png

94ddad63a0d34889804426e07a37376e.png

8.Copy模块:指定本地文件复制到远程主机

常用参数:

src= 本地文件路径(可根据当前位置决定使用相对路径还是绝对路径)

dest= 目标文件路径(只能使用绝对路径)

content= 指定文件内容,写入到目标文件;如果文件不存在会创建

owner= 指定属主

group= 指定组

mode= 指定权限

copy 模块的更多使用可使用ansible-doc copy查看。

复制本地文件222.sh到远程服务器的root下

[root@web01 ~]# touch 222.sh

[root@web01 ~]# ansible web02 -m copy -a "src=222.sh dest=/root/"

fe1b0bbe37a1499b839c50738ac914f3.png

3e2027b6df9048b68967107d33edf5d8.png

将123写入远程服务器的1.txt文件中

[root@web01 ~]# ansible web02 -m copy -a "content="123" dest=/root/1.txt

061774d7446f4584a19974b67e28d074.png

62833e8bbbba4c76b21cedd3bc05c050.png

9.Fetch模块:从远程主机获取文件

一般用于收集远程主机上的配置文件、日志文件等数据进行备份或检查

常用参数:

src:指定远程主机上要获取的文件的路径。(必需参数)

dest:指定在本地主机保存文件的目标目录,目录不存在会自行创建。(必须参数)

flat:这是一个可选参数。默认值为no。当flat设置为yes时,文件将直接保存到dest指定的文件下;当flat设置为no时,文件将按照远程主机的主机名 / IP地址和文件路径结构保存在dest目录下。

在远程主机web02上创建fetch.sh文件

91e74379c7724bd49455751f80c2a38f.png

把远程主机的fetch.sh传到本地fetch目录下

[root@web01 ~]# ansible web02 -m fetch -a "src=fetch.sh dest=fetch"

  ce8f48ec54c64ab3b120038884171acb.png

可以看到没有使用flat参数默认为no,文件会以ip地址+文件的形式保存到dest所给目录下。

设置flat=yes时,dest参数只能为文件,不能为目录,执行的操作是将src文件内容,写入dest文件中。

[root@web01 ~]#rm -rf fetch

[root@web01 ~]# ansible web02 -m fetch -a "src=fetch.sh dest=fetch flat=yes"

e3240d4ab049429cafa8ebcfb441b6fb.png

10.File模块:设置文件属性

对文件操作,创建文件或目录、删除文件或目录、修改文件权限

常用参数:

path :定义需要操作的文件或目录(必须参数)

src :本地文件路径

recurse :递归授权

owner :指定属主

group :指定属组

mode :指定权限

state :指定对文件的操作(必须参数)

  directory :在远端创建目录

  touch:在远端创建文件

  link :创建软连接

  hard :创建硬连接

  absent :表示删除文件或目录

参数path指定路径必须存在

d223d0e8282a466a887eb22b22099f77.png

11.Service/systemd模块:控制服务运行状态

常用参数:

name 定义要启动服务的名称

state 指定服务状态

  started 启动服务(具有幂等性)

  stopped 停止服务(具有幂等性)

  restarted 重启服务

  reloaded 重载服务

enabled 开机自启

关闭防火墙服务

7511c5c6084e467985c5885344081b8c.png

0def39b64e3e47b2bf35050da5303650.png

12.yum模块:远程安装软件

name=软件包的名,多个软件包逗号隔开

state=installed/present安装、removed/absent卸载 、lastest 更新、如果已安装,installed列出已安装的包

安装httpd服务

87b0eaa47c1e462285defad4aa03aa52.png

可以看到,installed没有安装服务时,会安装,安装了会列出包

13.Mount模块:管理设备下载和caish卸载

src :指定挂载源

path:指定挂载点 (挂载点不存在会自动创建)

fstype:指定文件系统类型

opts:挂载参数,默认为defaults

dump:是否备份:0表示不进行备份

passno:文件系统检测:0表示不进行文件系统检测

state

  present  写入fstab,但实际没有挂载,需要重启服务器

  absent  取消临时挂载,并且删除fstab

  mounted  写入fstab,并且直接挂载了(常用)

  unmounted  临时取消挂载,但是没有删除fstab,重启服务器之后就会恢复(常用)

将镜像挂载到目录media下

2faee6deadfc4f19af7ce33ec3d08dea.png

8d1986085211437294292a0b155e2d2c.png

14.Unarchive模块:解压缩模块

它支持tar,tar.gz,tar.bz2,.zip等压缩包格式

常用参数:

src 源路径,可以是ansible主机上的路径,也可以是远程主机上的路径,如果是远程主机上的路径,则需要设置 remote_src=yes

dest: 指定了解压缩后文件的目标目录

mode: 设置解压缩后的文件权限,可以使用数字或符号模式,例如 "644" 或 "u=rw,go=r"。

list_files: 默认值为no,如果设置为yes,解压同时,返回压缩包的文件列表

remote_src:如果设置为 yes,则表示 src 参数是远程主机上的路径。

extra_opts: 允许您指定解压缩命令的额外选项。这对于一些特定格式的存档文件非常有用。

creates: 如果指定了此选项,只有在 creates 中指定的文件或目录不存在时,才会执行解压缩操作。

owner: 设置解压缩后文件的所有者。

group: 设置解压缩后文件的所属组。

这个模块有两种模式:

当参数copy=no(默认为no),为本地解压,本地指定目录接收;远程解压,远程目录接收。即不会出现本地文件传输到远程或远程文件被本地接收的情况

本地解压:

98822bf3c92645caada7a9f7e6c68d7a.png

远程主机解压:远程主机src路径必须写绝对路径

6e3e9c2c67e34cabad3cfa1a7a3a37a8.png

efafd80e9b1d4fd487e22d30d1ff815e.png

当参数copy=yes,具有copy模块的属性,可以把文件传输到远程主机。

将本地解压后的文件传入远程主机的/home下

ansible web02 -m unarchive -a "src=openjdk-8u44-linux-x64.tar.gz dest=/home/  copy=yes"

cb0bd304b97f4fb18b13b20564ebabba.png

f68b1cadee7b4d7cb8797ac37178b58f.png

15.Archive模块:打包压缩

常用的参数:

path: (必须参数)远程主机上需要被打包压缩的源文件/目录

dest: 打包压缩后的包文件路径(包文件的父目录必须存在);如果包文件已存在,则会被覆盖

format: 指定压缩类型,包括: bz2、gz(默认)、tar、xz、zip

remove=yes / no: 是否删除源文件

将本地文件1.txt打包压缩为1.gz

d8c7cb213ea746ff912494792df58f1c.png

16.Get_url模块:下载文件

常用参数:

url (必需): 指定要下载文件的URL。

dest (必需): 指定文件将保存到本地目标主机上的目标路径。

force (可选): 如果设置为 yes,将强制下载文件,即使文件已经存在。默认为 no。

checksum (可选): 提供要下载文件的校验和,以确保文件完整性。

backup (可选): 如果设置为 yes,将在下载之前备份现有文件。默认为 no。

timeout (可选): 设置下载文件的超时时间(秒)。

url_username (可选): 如果目标URL需要身份验证,可以提供用户名。

url_password (可选): 如果目标URL需要身份验证,可以提供密码。

owner (可选): 设置下载后文件的所有者。

group (可选): 设置下载后文件的所属组。

mode (可选): 设置下载后文件的权限模式。

把文件下载到远程主机web02的root/下

[root@web01 ~]# ansible web02 -m get_url -a "url=https://blog.csdn.net/LCL_18?type=blog dest=/root"

5c040c2cfa9744d6b97db1a50430d5ad.png

17.Replace模块:类似于sed命令

主要的操作也是基于正则进行匹配和替换

常用参数:

path:(必须参数)指定要修改的文件

regexp:(必须参数),指定一个文本内容,也可以使用正则表达式

replace:替换regexp参数匹配到的字符串

backup=yes /no: 修改源文件前创建一个包含时间戳信息的备份文件

before:如果指定,则仅替换/删除此匹配之前的内容,可以和after参数结合使用

after:如果指定,则仅替换/删除此匹配之后的内容,可以和before参数结合使用

owner:修改文件用户名

group:修改文件组名

mode:修改文件权限

实现关闭selinux

[root@web01 ~]# ansible web01 -m replace -a "path=/etc/selinux/config regexp="SELINUX=e.*" replace="SELINUX=disabled" "

ff22341b68aa43bdae7bcc799e3c0b58.png

18.Setup模块:获取主机信息

facts 组件是用来收集节点信息的,使用 setup 模块可以获取这些信息

常用参数:

filter:对 setup 模块收集的系统信息进行筛选,只获取你指定的那些特定的信息子集

gather_subset:指定具体要收集哪些类别的系统信息以及排除哪些类别

gather_timeout :设定了收集系统信息的超时时间限制(以秒为单位)

 fact_path :指定 Ansible 查找自定义事实(Custom Facts)文件的本地路径。

一些facts组件的内置变量:

ansible_all_ipv4_addresses

ipv4的所有地址

ansible_all_ipv6_addresses

ipv6的所有地址

ansible_date_time

获取到控制节点时间

ansible_default_ipv4

默认的ipv4地址

ansible_distribution

系统

ansible_distribution_major_version

系统的大版本

ansible_distribution_version

系统的版本号

ansible_domain

系统所在的域

ansible_env

系统的环境变量

ansible_hostname

系统的主机名

ansible_fqdn

系统的全名

ansible_machine

系统的架构

ansible_memory_mb

系统的内存信息

ansible_os_family

系统的家族

ansible_pkg_mgr

系统的包管理工具

ansible_processor_cores

系统的cpu的核数(每颗)

ansible_processor_count

系统cpu的颗数

ansible_processor_vcpus

系统cpu的总个数=cpu的颗数*CPU的核数

ansible_python

系统上的python

查看主机web02的ipv4地址

[root@web01 ~]# ansible web02 -m setup -a "filter=ansible_all_ipv4_addresses"

e64c25b755ad4b738d15ecb0328a4596.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析级联操作与SQL完整性约束异常的解决方法

目录 前言1. 外键约束与级联操作概述1.1 什么是外键约束1.2 级联操作的实际应用场景 2. 错误分析:SQLIntegrityConstraintViolationException2.1 错误场景描述2.2 触发错误的根本原因 3. 解决方法及优化建议3.1 数据库级别的解决方案3.2 应用层的解决方案 4. 友好提…

windows平台使用C#创建系统服务

使用 C# 在 Windows 平台创建和管理系统服务 在 Windows 平台上,系统服务(Windows Service)是一种运行在后台、无需用户交互的应用程序。系统服务广泛应用于长期任务处理、网络监听、后台调度等场景。本文将详细介绍如何使用 C# 创建一个 Win…

Spring Cloud Alibaba 之 “Sentinel”

从网上下载好sentinel-dashboard-1.6.3.jar,然后执行 java -jar sentinel-dashboard-1.6.3.jar,执行成功之后在浏览器输入localhost:8080,Sentinel的登录名和密码都是sentinel,登陆成功之后看到只有一个首页。 接下来开始整合Spring Cloud Alibaba Sen…

web移动端、pc端获取浏览器指纹-fingerprintjs插件(类似mac地址)

主要还是使用fingerprintjs插件 安装 npm install fingerprintjs/fingerprintjs引入(这里封装成公共js) import FingerprintJS from fingerprintjs/fingerprintjs;/*** 获取用户的浏览器指纹* returns visitorId 这是一个唯一标识符,可以被…

把用tab/空格 分割表示的文本转为json 脚本

比如如下文本: Timestamp : Sat Nov 16 18:28:46 2024 Driver Version : 560.35.03 CUDA Version : 12.560.35.03 Attached GPUs : 3 N/A …

常见Linux命令(详解)

文章目录 常见Linux命令文件目录类命令pwd 打印当前目录的绝对路径ls 列出目录内容cd 切换路径mkdir 建立目录rmdir 删除目录touch 创建空文件cp 复制文件或目录rm 移除文件或者目录mv 移动文件与目录或重命名cat 查看文件内容more 文件分屏查看器less 分屏显示文件内容head 显…

C语言:数组长度与数组排序

1、数组长度 在实际编程中,有时数组的长度不能提前确定,如果这个变化范围小,那么使用常量表达式定义一个足够大的数组就可以,如果这个变化范围很大,就可能会浪费内存,这时就可以使用变长数组。请看下面的代…

前端热门面试题目——React、Node

img 标签的 srcset 属性的作用 srcset 属性允许开发者为不同设备或分辨率提供多个图像选项&#xff0c;优化加载的图片以适应设备的屏幕大小和分辨率。这提高了性能和用户体验。 示例&#xff1a; <img src"default.jpg" srcset"small.jpg 480w, medium.j…

数据结构初阶1 时间复杂度和空间复杂度

本章重点 算法效率时间复杂度空间复杂度常见时间复杂度以及复杂度OJ练习 1.算法效率 1.1 如何衡量一个算法的好坏 如何衡量一个算法的好坏呢&#xff1f;比如对于以下斐波那契数列&#xff1a; long long Fib(int N) { if(N < 3) return 1;return Fib(N-1) Fib(N-2); }斐…

计算机网络复习4——网络层

两种服务之争 路由器在网络层、数据链路层、物理层 网际协议IP IP解决了异构网络互联问题 网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。 #网络层四个协议 网际协议IP ( Internet Protocol) 地址解析协议ARP(Address Resolution Protocol) 网际控制报文协议ICMP(…

【C语言】数学挑战(小Z和跳跳棋)

相信你是最棒哒&#xff01;&#xff01;&#xff01; 文章目录 一、重礼仪的贪心小Z 题目代码 二、跳跳棋 题目代码&#xff1a; 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可仅供参考 一、重礼仪的贪心小Z 问题描述 小Z最近在研究一种倒酒礼仪“步步…

qt QPrinter详解

1、概述 QPrinter类是Qt框架中用于打印输出的绘图设备。它表示打印出来的一系列页面&#xff0c;并提供了一组附加功能来管理特定于设备的特性&#xff0c;比如方向和分辨率。QPrinter可以生成PDF文档&#xff0c;也可以将内容发送到打印机进行实际打印。它继承自QPagedPaintD…

FPGA实战篇(按键控制LDE实验)

1.按键简介 按键开关是一种电子开关&#xff0c;属于电子元器件类。我们的开发板上有两种按键开关&#xff1a;第一种是本实验所使用的轻触式按键开关&#xff0c;简称轻触开关。使用时以向开关的操作方向施加压力使内部电路闭合接通&#xff0c;当撤销压力时开关断开&#xff…

2023年华数杯数学建模B题不透明制品最优配色方案设计解题全过程文档及程序

2023年华数杯全国大学生数学建模 B题 不透明制品最优配色方案设计 原题再现&#xff1a; 日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此&#xff0c;不透明制品的配色对其外观美观度和市场竞争力起着重要作用。然而&#xff0c;传统的人工配色存在一定的局限性…

大数据:新型生产要素与数字经济发展的强劲引擎

大数据&#xff1a;新型生产要素与数字经济发展的强劲引擎 随着信息技术的飞速发展&#xff0c;大数据已经成为一种全新的生产要素&#xff0c;与土地、劳动力、资本和技术并驾齐驱&#xff0c;共同推动数字经济的发展。这一变革不仅重塑了经济格局&#xff0c;更为诸如十堰市…

PortSwigger 原型污染

一、什么是原型污染 原型污染是一种 JavaScript 漏洞&#xff0c;它使攻击者能够向全局对象原型添加任意属性&#xff0c;然后这些属性可能被用户定义的对象继承。 二、JavaScript 原型和继承基础 1、原型 JavaScript 中的每个对象都链接到某种类型的另一个对象&#xff0c;称…

【实战攻略】如何从零开始快速实现深度学习新想法?——四步走战略

标题 【实战攻略】如何从零开始快速实现深度学习新想法&#xff1f;——四步走战略 【核心结论】 通过四步走战略&#xff0c;即找到baseline论文、深入baseline代码、搭建自己的pipeline、融入核心算法&#xff0c;新手也能快速实现深度学习新想法。 【通俗解释&#xff0…

Qml之基本控件

一.Qml常用控件 1.Text(显示普通文本和富文本) 1.1显示普通文本&#xff1a; Window { visible: true width: 320 height: 240 title: qsTr("Hello World") Text { text: "Hello World!" font.family: "Helvetica" font.pointSize: 24 color:…

威联通-004 安装photoview相册应用Docker镜像

文章目录 前言准备MariaDB 10phpMyAdminphotoview 安装步骤1.安装MariaDB 10和phpMyAdmin2.初始安装MariaDB 103.进入phpMyAdmin添加账户4.手动下载photoview的Docker库注意&#xff1a;安装 phpMyAdmin 报错5.配置photoview6.容器安装成功之后进入photoview注意&#xff1a;这…

ScratchLLMStepByStep:一步一步构建大语言模型教程

前言 在学习大语言模型的时候&#xff0c;总会遇到各种各样的名词&#xff0c;像自注意力、多头、因果、自回归、掩码、残差连接、归一化等等。这些名词会让学习者听的云里雾里&#xff0c;觉得门槛太高而放弃。 本教程将会带你从零开始&#xff0c;一步一步的去构建每一个组…