Linux:Ansible的常用模块

模块帮助

ansible-doc -l

列出ansible的模块

ansible-doc 模块名称

# 查看指定模块的教程

ansible-doc command

查看command模块的教程

退出教程时候建议不要使用ctrl+c  停止,某些shell工具会出现错误


command

ansible默认的模块,执行命令,注意:shell中的"<", ">", "|", ";", "&","$"等特殊字符不能在command模块中使用,如果需要使用,则用shell模块 

ansible web1 -a "pwd"

# 可以加-m command 或者 不加意思都是一样的 

 上面执行的命令默认是在root下执行

# chdir  先切换工作目录,再执行后面的命令,一般情况下在编译时候使用

ansible web1 -m command -a "chdir=/tmp pwd"

切换执行命令的目录,执行命令

# creates  如果creates的文件存在,则不执行后面的操作

ansible web1 -a "creates=/tmp1 echo "没有/tmp1""

# removes  和creates相反,如果removes的文件存在,才执行后面的操作

ansible web1 -a "removes=/tmp echo "有/tmp""

 


shell

 专门用来执行shell命令的模块,和command模块一样,参数基本一样,都有chdir,creates,removes等参数

ansible web1 -m shell -a "chdir=/tmp pwd"
ansible web1 -m shell -a "cd /tmp && touch 123123 && ls"

script

用于在被管理机器上面执行shell脚本的模块,脚本无需在被管理机器上面存在,就是脚本在控制机上,直接运行到被管理主机上。

 

这个是脚本内容

ansible web1 -m script -a "/root/123.sh"


file

用于对文件的处理,创建,删除,权限控制等

path     #要管理的文件路径

recurse  #递归

state:

     directory  #创建目录,如果目标不存在则创建目录及其子目录

     touch      #创建文件,如果文件存在,则修改文件 属性

     absent     #删除文件或目录

     mode       #设置文件或目录权限

     owner      #设置文件或目录属主信息

     group      #设置文件或目录属组信息

     link       #创建软连接,需要和src配合使用

     hard       #创建硬连接,需要和src配合使用

# 创建目录 

ansible web1 -m file -a 'path=/tmp/test1 state=directory'

 # 创建文件

ansible web1 -m file -a 'path=/tmp/test2 state=touch'

# 建立软链接(src表示源文件,path表示目标文件) 

ansible web1 -m file -a 'src=/tmp/test1 path=/tmp/test3 state=link'

 # 删除文件        

ansible web1 -m file -a 'path=/tmp/test2 state=absent'

# 创建文件时同时设置权限等信息         

ansible web1 -m file -a 'path=/tmp/test4 state=directory mode=775 owner=root group=root'


copy

用于管理端复制文件到远程主机,并可以设置权限,属组,属主等

也就是将本地传到被管理端上

src      #需要copy的文件的源路径

dest     #需要copy的文件的目标路径

backup   #对copy的文件进行备份

content  #直接在远程主机被管理文件中添加内容,会覆盖原文件内容

mode     #对copy到远端的文件设置权限

owner    #对copy到远端的文件设置属主

group    #对copy到远端文件设置属组

# 复制文件到远程主机并改名 

ansible web1 -m copy -a 'src=./123.sh dest=/root/aa.sh'

# 复制文件到远程主机,并备份远程文件,安装时间信息备份文件(当更新文件内容后,重新copy时用到)

ansible web1 -m copy -a 'dest=/tmp/a.sh src=/root/ansible_test.sh backup=yes'

 # 直接在远程主机a.sh中添加内容

ansible web1 -m copy -a 'content="#!/bin/bash\n echo `uptime`" dest=/root/a.sh'

 # 复制文件到远程主机,并设置权限及属主与属组

ansible web1 -m copy -a 'dest=/tmp/passwd src=/etc/passwd mode=700 owner=root group=root'


fetch

用于从被管理机器上面拉取文件,拉取下来的内容会保留目录结构,一般情况用在收集被管理机器的日志文件等

# 从被管理机器上拉取cron日志文件,默认会已管理节点地址创建一个目录,并存放在内

ansible web1 -m fetch -a 'dest=/tmp src=/var/log/cron' 

 


user

用于对系统用户的管理,用户的创建、删除、家目录、属组等设置

name        #指定用户的名字

home        #指定用户的家目录

uid         #指定用户的uid

group       #指定用户的用户组

groups      #指定用户的附加组

password    #指定用户的密码

shell       #指定用户的登录shell

create_home #是否创建用户家目录,默认是yes

remove      #删除用户时,指定是否删除家目录

state:

      absent    #删除用户

# 创建用户名指定家目录,指定uid及组 

ansible web1 -m user -a 'name=mysql home=/opt/mysql uid=1002 group=root'

 # 创建用户,不创建家目录,并且不能登录

ansible web1 -m user -a 'name=apache shell=/bin/nologin uid=1003 create_home=no'

# 删除用户

ansible web1 -m user -a 'name=apache state=absent'

 # 删除用户并删除家目录

ansible web1 -m user -a 'name=mysql state=absent remove=yes'


group

 用于创建组,当创建用户时如果需要指定组,组不存在的话就可以通过group先创建组

 # 创建组

ansible web1 -m group -a 'name=www'

 # 创建组并指定gid

ansible web1 -m group -a 'name=www1 gid=1005'

 # 删除组

ansible web1 -m group -a 'name=www1 state=absent'


yum_repository

yum_repository 模块可以帮助我们管理远程主机上的 yum 仓库
常用参数
name参数:必须参数,用于指定要操作的唯一的仓库ID,也就是”.repo”配置文件中每个仓库对应的”中括号”内的仓库ID。
baseurl参数:此参数用于设置 yum 仓库的 baseurl。
description参数:此参数用于设置仓库的注释信息,也就是”.repo”配置文件中每个仓库对应的”name字段”对应的内容。
file参数:此参数用于设置仓库的配置文件名称,即设置”.repo”配置文件的文件名前缀,在不使用此参数的情况下,默认以 name 参数的仓库ID作为”.repo”配置文件的文件名前缀,同一个”.repo” 配置文件中可以存在多个 yum 源。
enabled参数:此参数用于设置是否激活对应的 yum 源,此参数默认值为 yes,表示启用对应的 yum 源,设置为 no 表示不启用对应的 yum 源。
gpgcheck参数:此参数用于设置是否开启 rpm 包验证功能,默认值为 no,表示不启用包验证,设置为 yes 表示开启包验证功能
gpgcakey参数:当 gpgcheck 参数设置为 yes 时,需要使用此参数指定验证包所需的公钥。
state参数:默认值为 present,当值设置为 absent 时,表示删除对应的 yum 源。
  1. 在 主机上设置ID为 aliEpel 的 yum 源,仓库配置文件路径为 /etc/yum.repos.d/dgf.repo
ansible all -m yum_repository -a 'name=local  description="local" baseurl=file:///mnt enabled=1 gpgcheck=no file=dgf'

mount

用于挂载镜像等 

 ansible  all -m mount  -a "src=/dev/cdrom path=/mnt  fstype=iso9660 state=present"   

#添加开机自动挂载文件,但是不会立即挂载

ansible webserver -m mount -a "src=/dev/sr0 path=/mnt fstype=iso9660 state=mounted"   

#立即挂载 

yum

用于对软件包的管理,下载、安装、卸载、升级等操作

name            #指定要操作的软件包名字

download_dir    #指定下载软件包的存放路径,需要配合download_only一起使用

download_only   #只下载软件包,而不进行安装,和yum --downloadonly一样

list:

    installed   #列出所有已安装的软件包

    updates     #列出所有可以更新的软件包

    repos       #列出所有的yum仓库

state:  

    installed, present   #安装软件包(两者任选其一都可以)

    removed, absent      #卸载软件包

    latest      #安装最新软件包

# 列出所有已安装的软件包

ansible all -m yum -a 'list=installed'

# 列出所有可更新的软件包         

ansible all -m yum -a 'list=repos'

 #列出所有的yum仓库

ansible all -m yum -a 'list=repos'

 #安装软件包

ansible all -m yum -a 'name=lrzsz state=installed'

 #卸载软件包

ansible all -m yum -a 'name=lrzsz state=removed'

#安装包组,类似yum groupinstall 'Development Tools'

ansible all -m yum -a 'name="@Development Tools" state=installed'


Service  

服务模块,用于对服务进行管理,服务的启动、关闭、开机自启等

name       #指定需要管理的服务名

enabled    #指定是否开机自启动

state:     #指定服务状态

    started    #启动服务

    stopped    #停止服务

    restarted  #重启服务

    reloaded   #重载服务

# 启动服务,并设置开机自启动  

ansible all -m service -a 'name=crond state=started enabled=yes'

# 查看模块参数


pip

 #用于安装python中的包

# 使用pip时,需要保证被管理机器上有python-pip软件包 

 ansible all -m yum -a 'name=python-pip'

# 安装pip包

ansible all -m pip -a 'name=flask'


cron

用于指定计划任务,和crontab -e一样

job     #指定需要执行的任务

minute   #分钟

hour     #小时

day      #天

month    #月

weekday  #周

name     #对计划任务进行描述

state:

    absent   #删除计划任务

# 创建一个计划任务,并描述是干嘛用的 

ansible all -m cron -a "name='测试的计划任务' minute=* hour=* day=* month=* weekday=* job='/bin/bash /root/test.sh'"

 

# 创建一个没有带描述的计划任务 

ansible all -m cron -a "job='/bin/sh /root/test.sh'"

 # 删除计划任务

ansible all -m cron -a "name='测试的计划任务' job='/bin/bash /root/test.sh' state=absent"


setup

用于获取系统信息的一个模块

# 查看系统所有信息

setup

 # filter 对系统信息进行过滤

ansible all -m setup -a 'filter=ansible_all_ipv4_addresses'

 # 常用的过滤选项

ansible_all_ipv4_addresses         所有的ipv4地址

ansible_all_ipv6_addresses         所有的ipv6地址

ansible_architecture               系统的架构

ansible_date_time                  系统时间

ansible_default_ipv4               系统的默认ipv4地址

ansible_distribution               系统名称

ansible_distribution_file_variety  系统的家族

ansible_distribution_major_version 系统的版本

ansible_domain                     系统所在的域

ansible_fqdn                       系统的主机名

ansible_hostname                   系统的主机名,简写

ansible_os_family                  系统的家族

ansible_processor_cores            cpu的核数

ansible_processor_count            cpu的颗数

ansible_processor_vcpus            cpu的个数


find

find 模块可以帮助我们在被管理主机中查找符合条件的文件,就像 find 命令一样。

在主机的 /opt目录中查找文件内容中包含 abc 字符串的文件,隐藏文件会被忽略,不会进行递归查找。 

ansible all -m find -a 'paths=/opt contains=".*abc.*"'

 在 主机的 /opt目录以及其子目录中查找文件内容中包含 abc 字符串的文件,隐藏文件会被忽略。

ansible all -m find -a 'paths=/opt contains=".*abc.*" recurse=yes '

在主机的 /opt目录中查找以 .sh 结尾的文件,包括隐藏文件,但是不包括目录或其他文件类型,不会进行递归查找。

ansible all -m find -a 'paths=/opt patterns="*.sh" hidden=yes'

 在主机的 /opt 目录中查找以 .sh 结尾的,包括隐藏文件,包括所有文件类型,比如文件、目录、或者软链接,但是不会进行递归查找。

ansible all -m find -a 'paths=/opt patterns="*.sh" file_type=any hidden=yes'

在主机的 /opt 目录中查找以 .sh 结尾的文件,只不过 patterns 对应的表达式为正则表达式,查找范围包括隐藏文件,包括所有文件类型,但是不会进行递归查找,不会对 /opt 目录的子目录进行查找。

ansible all -m find -a 'paths=/opt patterns=".*\.sh" use_regex=yes file_type=any hidden=yes'

 在 主机的 /opt目录中以及其子目录中查找 mtime 在1天以内的文件,不包含隐藏文件,不包含目录或软链接文件等文件类型。

ansible all -m find -a "paths=/opt patterns=*.sh get_checksum=yes hidden=yes recurse=yes"

ansible all -m find -a "paths=/opt age=-1d recurse=yes"
在主机的/opt目录中以及其子目录中查找大于 2g 的文件,不包含隐藏文件,不包含目录或软链接文件等文件类型。
ansible all -m find -a "paths=/opt size=2g recurse=yes"

 在主机的 /opt 目录中以及其子目录中查找以 .sh 结尾的文件,并且返回符合条件文件的 sha1 校验码,包括隐藏文件。

         


replace

replace 模块可以根据我们指定的正则表达式替换文件中的字符串,文件中所有被匹配到的字符串都会被替换。
常用参数
path参数 :必须参数,指定要操作的文件,2.3版本之前,只能使用 dest, destfile, name指定要操作的文件,2.4版本中,仍然可以使用这些参数名,这些参数名作为 path 参数的别名使用。
regexp参数 : 必须参数,指定一个 python 正则表达式,文件中与正则匹配的字符串将会被替换。
replace参数 : 指定最终要替换成的字符串。
backup参数 :是否在修改文件之前对文件进行备份,最好设置为yes。

把 主机中的 /opt/test 文件中的所有 ABC 替换成 abc。 

ansible all -m replace -a 'path=/opt/test regexp="ABC" replace=abc'

把 testA 主机中的 /opt/test文件中的所有 ABC 替换成 abc,但是在操作文件之前进行备份。
ansible all -m replace -a 'path=/opt/test regexp="ABC" replace=abc backup=yes'

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

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

相关文章

32单片机基础:TIM定时中断

STM32中功能最强大&#xff0c;结构最复杂的一个外设——定时器 因为定时器的内容很多&#xff0c;所以本大节总共分为4个部分&#xff0c;8小节。 第一部分&#xff1a;主要讲定时器基本的定时功能,也就是定一个时间&#xff0c;然后让定时器每隔这个时间产生一个中断&#…

CSS 的盒模型

CSS 的盒模型 在HTML里&#xff0c;每一个元素就相当于是一个矩形的 “盒子” &#xff0c;这个盒子由以下这几个部分构成&#xff1a;1.边框border&#xff0c;2.内容content&#xff0c;3.内边距padding&#xff0c;4.外边距margin 边框border 基础属性描述border-width粗…

如何运行github上的项目

为了讲明白这个过程&#xff0c;特意做了一个相当来说比较好读懂的原理图&#xff0c;希望和我一样初学的小伙伴也能很快上手哈&#x1f60a; 在Github中找到想要部署的项目&#xff0c;这里以BartoszJarocki/CV&#xff08;线上简历&#x1f4c4;&#xff09;项目为例 先从头…

Thread多线程(创建,方法,安全,通信,线程池,并发,并行,线程的生命周期)【全详解】

目录 1.多线程概述 2.多线程的创建 3.Thread的常用方法 4.线程安全 5.线程同步 6.线程通信 7.线程池 8.其它细节知识&#xff1a;并发、并行 9.其它细节知识&#xff1a;线程的生命周期 1.多线程概述 线程是什么&#xff1f; 线程(Thread)是一个程序内部的一条执行…

[AutoSar]BSW_Com04 从零开始创建DBC文件

目录 关键词平台说明一、前言二、软件获取和安装三、DBC的创建3.1 主体创建3.2 创建节点3.3 创建Attribute Definitions3.4 创建message&#xff08;帧&#xff09;3.5创建 signals3.6 创建value table3.7 调整signal 在message 中的位置3.8 一致性检查 关键词 嵌入式、C语言、…

Python 实现Excel自动化办公(中)

在上一篇文章的基础上进行一些特殊的处理&#xff0c;这里的特殊处理主要是涉及到了日期格式数据的处理&#xff08;上一篇文章大家估计也看到了日期数据的处理是不对的&#xff09;以及常用的聚合数据统计处理&#xff0c;可以有效的实现你的常用统计要求。代码如下&#xff1…

(全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF

研究生英语读写教程基础级教师用书PDF 研究生英语读写教程提高级教师用书PDF pdf下载&#xff08;完整版下载&#xff09; &#xff08;1&#xff09;研究生英语读写教程基础级教师用书PDF &#xff08;2&#xff09;研究生英语读写教程基提高级教师用书PDF

抖音视频批量下载软件|视频评论采集工具

抖音视频评论采集软件是一款基于C#开发的高效、便捷的工具&#xff0c;旨在为用户提供全面的数据采集和分析服务。用户可以通过关键词搜索抓取视频数据&#xff0c;也可以通过分享链接进行单个视频的抓取和下载&#xff0c;从而轻松获取抖音视频评论数据。 批量视频提取模块&a…

HTTP 的 multipart 类型

上一篇文章讲到 http 的 MIME 类型 http MIME 类型 里有一个 multipart 多部分对象集合类型&#xff0c;这个类型 http 指南里有讲到&#xff1a;MIME 中的 multipart&#xff08;多部分&#xff09;电子邮件报文中包含多个报文&#xff0c;它们合在一起作为单一的复杂报文发送…

使用 Verilog 做一个可编程数字延迟定时器 LS7211-7212

今天的项目是在 Verilog HDL 中实现可编程数字延迟定时器。完整呈现了延迟定时器的 Verilog 代码。 所实现的数字延迟定时器是 CMOS IC LS7212&#xff0c;用于生成可编程延迟。延迟定时器的规格可以在这里轻松找到。基本上&#xff0c;延迟定时器有 4 种操作模式&#xff1a;…

Openharmony - HDF平台驱动之I2C驱动和测试程序

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 概述I2C平台驱动I2C平台驱动HDF框架I2C平台驱动的使用I2C应用开发接口说明代码目录i2ctest.cBUILD.gnbundle.json修改config.json文件…

Pytorch添加自定义算子之(5)-配置GPU形式的简单add自定义算子

参考:https://zhuanlan.zhihu.com/p/358778742 一、头文件 命名为:add2.h void launch_add2(float *c,const float *a,const float *b,int n);

ARMv8-AArch64 的异常处理模型详解之异常处理详解(同步异常和异步异常的分析和处理)

这里写目录标题 一&#xff0c;同步异常的分析1.1 同步异常分析-异常链接寄存器ELR1.2 同步异常分析-异常综合寄存器ESR&#xff0c;Exception Syndrome Register1.3 同步异常分析-错误地址寄存器FAR,Fault Address Register 二&#xff0c; 同步异常的处理示例 Synchronous ex…

langChain学习笔记(待续)

目录 IntroductionLLM的限制扩展理解&#xff1a;什么是机器学习扩展阅读&#xff1a;机器学习的流程 LangChain Introduction LLM的限制 大型语言模型&#xff0c;比如ChatGpt4&#xff0c;尽管已经非常强大&#xff0c;但是仍然存在一些限制&#xff1a; 知识更新&#xff…

尚硅谷webpack5笔记2

Loader 原理 loader 概念 帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块。 loader 执行顺序 分类pre: 前置 loadernormal: 普通 loaderinline: 内联 loaderpost: 后置 loader执行顺序4 类 loader 的执行优级为:pre > normal > inline > post 。相…

逆向案例二:关键字密文解密,自定义的加密解密。基于企名片科技的爬取。

import requests import execjsfor i in range(4):i i1url https://vipapi.qimingpian.cn/Activity/channelInformationByChannelNamedata {channel_name: 24新声,page: f{i},num: 20,unionid: W9wLD4rHIZrB3GLTUncmHgbZcEepR78xJa5Zit6XTMtata86DehdxDt/fDbcHeeJWqqIs6k…

软件测试笔记(二):软件测试流程

1 测试流程概述 软件测试流程包括&#xff1a; 测试计划&#xff1a;测试计划是指根据用户需求报告中关于功能要求和性能指标的规格说明书&#xff0c;定义相应的测试需求报告&#xff0c;使得随后所有的测试工作都围绕着测试需求来进行&#xff0c;同时适当选择测试内容&…

IDEA如何开启Dashboard

普通的面板 Run Dashboard面板 修改配置文件 找到项目的.idea文件夹 点击编辑workspace.xml文件 添加下方代码 <component name"RunDashboard"><option name"ruleStates"><list><RuleState><option name"name" valu…

【Linux】进程信号 --- 信号的产生 保存 捕捉递达

文章目录 信号的感知信号的结构描述 一、信号的产生1.通过键盘发送信号2.通过系统调用发送信号 二、信号的保存&#xff08;PCB内部的两张位图和一个函数指针数组&#xff09;理解三张数据结构表block pending haldler 三、通过代码编写 理解 信号的保存和递达1.信号集操作的库…

[极客大挑战 2019]LoveSQL1 题目分析与详解

一、题目简介&#xff1a; 二、通关思路&#xff1a; 1、首先查看页面源代码&#xff1a; 我们发现可以使用工具sqlmap来拿到flag&#xff0c;我们先尝试手动注入。 2、 打开靶机&#xff0c;映入眼帘的是登录界面&#xff0c;首先尝试万能密码能否破解。 username: 1 or 11…