ansible(第二天)

news2024/9/20 10:37:24

第二章:模块介绍

1.Ansible的三个命令模块

command

shell

raw

应尽量避免使用这三个模块来执行命令,因为其他模块大部分都是幂等性的,可以自动进行更改跟踪。 command、shell、raw不具备幂等性。注: 幂等性:简单来讲,就是输入相同,输出相同,无论多少 次比如说,确认接口,如果传入订单号,返回确认OK,如果已经确认过了,再次调用确认接口,返回如 果还是确认OK,那么这个接口就是满足幂等性.

1.1command shell raw script区别

command、shell模块:

相同点:要求受管主机上安装Python。

不同点:command可以在受管主机上执行shell命令,但是不支持环境变量和操作符(例如 '|', '', '&')

shell模块调用的/bin/sh指令执行。

raw模块:

不需要受管主机上安装Python,直接使用远程shell运行命令,通常用于无法安装Python的系统(例如 网络设备等)。

1.2command模块参数 键=值

 free_form参数 :必须参数,指定需要远程执行的命令。需要说明一点,free_form 参数与其他参数 (如果想要使用一个参数,那么则需要为这个参数赋值,也就是name=value模式)并不相同。比如, 当我们想要在远程主机上执行 ls 命令时,我们并不需要写成”free_form=ls” ,这样写反而是错误的,因 为并没有任何参数的名字是 free_form,当我们想要在远程主机中执行 ls 命令时,直接写成 ls 即可。因 为 command 模块的作用是执行命令,所以,任何一个可以在远程主机上执行的命令都可以被称为 free_form

列出指定目录下的文件

 

 1.3shell模块

让远程主机在shell进程下执行命令,从而支持shell的特性,如管道等。与command模块几乎相同,但 在执行命令的时候使用的是/bin/sh。

 切换目录,执行命令并保持输出

[root@centos7 ~]# ansible test -m shell -a "sh test.sh > result chdir=/root" 172.20.21.120 | SUCCESS | rc=0 >>

[root@centos7 ~]# ansible test -m shell -a "cat result chdir=/root" 172.20.21.120 | SUCCESS | rc=0 >>

1.4script模块

 

 1.5raw模块

raw模块主要用于执行一些低级的,脏的SSH命令,而不是通过command模块。

raw模块只适用于下列两种场景,第一种情况是在较老的(Python 2.4和之前的版本)主机上, 另一种情况是对任何没有安装Python的设备(如路由器)。 在任何其他情况下,使用shell或 command模块更为合适。

就像script模块一样,raw模块不需要远程系统上的python

 2.文件操作模块

2.1file模块 ansible-doc file -s

file模块可以帮助我们完成一些对文件的基本操作,比如,创建文件或目录、删除文件或目录、修改文件 权限等

path参数 :必须参数,用于指定要操作的文件或目录,在之前版本的ansible中,使用dest参数或 者name参数指定要操作的文件或目录,为了兼容之前的版本,使用dest或name也可以。

state参数 :Path=“路径” state= touch|directory|link|hard|absent

此参数非常灵活,此参数对应的值需要根据情况设定,比如,当我们需要在远程主机中创建一个目 录的时候,我们需要使用path参数指定对应的目录路径,假设,我想要在远程主机上创 建/testdir/a/b目录,那么我则需要设置path=/testdir/a/b,但是,我们无法从"/testdir/a/b"这个 路径看出b是一个文件还是一个目录,ansible也同样无法单单从一个字符串就知道你要创建文件还 是目录,所以,我们需要通过state参数进行说明

src参数 :当state设置为link或者hard时,表示我们想要创建一个软链或者硬链,所以,我们必须 指明软链或硬链链接的哪个文件,通过src参数即可指定链接源。

force参数 : 当state=link的时候,可配合此参数强制创建链接文件,当force=yes时,表示强制创 建链接文件,不过强制创建链接文件分为两种情况,情况一:当你要创建的链接文件指向的源文件 并不存在时,使用此参数,可以先强制创建出链接文件。情况二:当你要创建链接文件的目录中已 经存在与链接文件同名的文件时,将force设置为yes,回将同名文件覆盖为链接文件,相当于删除 同名文件,创建链接文件。情况三:当你要创建链接文件的目录中已经存在与链接文件同名的文 件,并且链接文件指向的源文件也不存在,这时会强制替换同名文件为链接文件。

owner参数 :用于指定被操作文件的属主,属主对应的用户必须在远程主机中存在,否则会报 错。

group参数 :用于指定被操作文件的属组,属组对应的组必须在远程主机中存在,否则会报错。

mode参数:用于指定被操作文件的权限,比如,如果想要将文件权限设置为"rw-r-x---",则可以 使用mode=650进行设置,或者使用mode=0650,效果也是相同的,如果你想要设置特殊权限, 比如为二进制文件设置suid,则可以使用mode=4700,很方便吧。 recurse参数:当要操作的文件为目录,将recurse设置为yes,可以递归的修改目录中文件的属 性。 -R

setype: httpd_content_t

示例: 创建文件

1.在test70主机上创建一个名为testfile的文件,如果testfile文件已经存在,则会更新文件的时间戳,与 touch命令的作用相同。

ansible test70 -m file -a "path=/testdir/testfile state=touch"

2.在test70主机上创建一个名为testdir的目录,如果testdir目录已经存在,则不进行任何操作。

ansible test70 -m file -a "path=/testdir/testdir state=directory"

创建链接文件 src

3.在test70上为testfile文件创建软链接文件,软链接名为linkfile,执行下面命令的时候,testfile已经存 在。

ansible test70 -m file -a "path=/testdir/linkfile state=link

src=/testdir/testfile"

4.在test70上为testfile文件创建硬链接文件,硬链接名为hardfile,执行下面命令的时候,testfile已经 存在。

ansible test70 -m file -a "path=/testdir/hardfile state=hard

src=/testdir/testfile"

5.在创建链接文件时,如果源文件不存在,或者链接文件与其他文件同名时,强制覆盖同名文件或者创 建链接文件,参考上述force参数的解释。

ansible test70 -m file -a "path=/testdir/linkfile state=link src=sourcefile

force=yes"

删除 6.删除远程机器上的指定文件或目录

ansible test70 -m file -a "path=/testdir/testdir state=absent"

更改属主属组 7.在创建文件或目录的时候指定属主,或者修改远程主机上的文件或目录的属主。

ansible test70 -m file -a "path=/testdir/abc state=touch owner=zsy"

ansible test70 -m file -a "path=/testdir/abc owner=zsy"

ansible test70 -m file -a "path=/testdir/abc state=directory owner=zsy"

8.在创建文件或目录的时候指定属组,或者修改远程主机上的文件或目录的属组。

ansible test70 -m file -a "path=/testdir/abb state=touch group=zsy"

ansible test70 -m file -a "path=/testdir/abb group=zsy"

ansible test70 -m file -a "path=/testdir/abb state=directory group=zsy"

更改权限 9.在创建文件或目录的时候指定权限,或者修改远程主机上的文件或目录的权限。

 10当操作远程主机中的目录时,同时递归的将目录中的文件的属主属组都设置为zsy。

ansible test70 -m file -a "path=/testdir/abd state=directory owner=zsy group=zsy recurse=yes"

2.2.copy模块

copy模块

见名知义,copy模块的作用就是拷贝文件,它与fetch模块类似,不过,fetch模块是从远程主机中拉取 文件到ansible主机,而copy模块是将ansible主机上的文件拷贝到远程主机中。

 复制(覆盖)

1.将ansible主机中/testdir/copytest文件复制到远程主机的/opt目录下,注意,如果copytest文件已经 存在于远程主机的/opt目录中,并且远程主机中的copytest与ansible主机中copytest文件内容不同,那 么使用如下命令时,远程主机中的copytest文件将被覆盖。

ansible test70 -m copy -a "src=/testdir/copytest dest=/opt/"

复制(不覆盖)

2.将ansible主机中/testdir/copytest文件复制到远程主机的/opt目录中时,如果远程主机中已经存 在/opt/copytest文件,并且文件内容与ansible主机中的copytest文件的内容不一致,则不执行拷贝操 作,远程主机中的/opt/copytest文件内容不会被改变。

ansible test70 -m copy -a "src=/testdir/copytest dest=/opt/ force=no"

创建文件编辑内容

3.在远程主机的/opt目录下生成文件test,test文件中有两行文本,第一行文本为aaa,第二行为bbb, 当使用content指定文件内容时,dest参数对应的值必须是一个文件,而不能是一个路径。

ansible test70 -m copy -a 'content="aaa\nbbb\n" dest=/opt/test'

文件存在备份源文件在复制

4.将ansible主机中/testdir/copytest文件复制到远程主机的/opt目录中时,如果远程主机中已经存 在/opt/copytest文件,并且文件内容与ansible主机中的copytest文件的内容不一致,会执行拷贝操作, 但是在执行拷贝操作之前,会将远程主机中的原文件重命名,以作备份,然后再进行拷贝操作。

ansible test70 -m copy -a "src=/testdir/copytest dest=/opt/ backup=yes"

复制文件指定文件属主属组权限

5.拷贝文件时,指定文件的属主,需要注意,远程主机上必须存在对应的用户。

ansible test70 -m copy -a "src=/testdir/copytest dest=/opt/ owner=zsy"

6.拷贝文件时,指定文件的属组,需要注意,远程主机上必须存在对应的组。

ansible test70 -m copy -a "src=/testdir/copytest dest=/opt/ group=zsy"

7.拷贝文件时,指定文件的权限

ansible test70 -m copy -a "src=/testdir/copytest dest=/opt/ mode=0640"

2.3fetch 模块

拉取远程主机的文件,并以主机IP地址或者主机名为目录,并保留了原来的目录结构 常用选项:

dest 目标地址

src 源

flat yes 不按照src的目录来创建目录,flat为no就在当前路径创建和src一样的目录路径

示例: 从被管理节点上拷贝文件到控制节点!

 flat=yes 不采用默认的文件级结构

[root@master ~]# ansible node3.kongd.com -m fetch -a 'src=/etc/hosts

dest=/opt/hosts flat=yes'

2.4 synchronize 模块

synchronize 基于rsync命令批量同步文件做这个模块的时候,必须保证远程服务器上有rsync这个命令 常用选项:

 [root@master ~]# ansible all -m yum -a 'name=rsync state=present' 如果没有rsync先安装 1、将node

1 节点的/etc/hosts 目录拉取到主控节点的/tmp 目录下

 2.5 blockinfile模块

blockinfile模块可以帮助我们在指定的文件中插入"一段文本",这段文本是被标记过的,换句话说就是, 我们在这段文本上做了记号,以便在以后的操作中可以通过"标记"找到这段文本,然后修改或者删除它.

参数:

 1.将/etc/rc.d/rc.local文件复制到/testdir目录中,以做测试假如,我们想要在test70主机中 的/testdir/rc.local文件尾部插入如下两行

systemctl start mariadb

systemctl start httpd

 2.我们也可以自定义标记,但是自定义的标记仍然要"成对出现",需要有开始标记和结束标记

 3.当文本块标记已存在,但再次编辑内容会覆盖原标记中的内容

 4.删除对应标记文本块

 5.将文本块插入到文档的开头,可以使用insertbefore参数,将其值设置为BOF,BOF表示Begin Of File

ansible test70 -m blockinfile -a 'path=/testdir/rc.local block="####blockinfile test####" marker="#{mark} test" insertbefore=BOF'

6.如果使用如下命令,表示将文本块插入到文档的结尾,与默认操作相同,将insertafter参数设置为EOF 表示End Of File

#ansible test70 -m blockinfile -a 'path=/testdir/rc.local block="####blockinfile test####" marker="#{mark} test" insertafter=EOF'

7.使用如下命令表示使用正则表达式匹配行,将文本块插入到 "以#!/bin/bash开头的行 " 之后

ansible test70 -m blockinfile -a 'path=/testdir/rc.local block="####blockinfile test####" marker="#{mark} test reg" insertafter="^#!/bin/bash" '

8.使用backup参数,可以在操作修改文件之前,对文件进行备份,备份的文件会在原文件名的基础上添 加时间戳

ansible test70 -m blockinfile -a 'path=/testdir/rc.local marker="#{mark} test" state=absent backup=yes'

9. 使用create参数,如果指定的文件不存在,则创建它,示例如下

ansible test70 -m blockinfile -a 'path=/testdir/test block="test" marker="#{mark} test" create=yes'

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

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

相关文章

【2 - 随机森林 - 案例部分:随机森林在乳腺癌数据上的调参】菜菜sklearn机器学习

课程地址:《菜菜的机器学习sklearn课堂》_哔哩哔哩_bilibili 第一期:sklearn入门 & 决策树在sklearn中的实现第二期:随机森林在sklearn中的实现第三期:sklearn中的数据预处理和特征工程第四期:sklearn中的降维算法…

vue3笔记案例——Suspense使用之骨架屏

文章目录skeleton组件sync组件Suspense使用skeleton组件 示例图 代码 <template><div class"sk"><div class"sk-2"><div class"sk-2-1"></div><div></div></div><hr><div class&qu…

亚马逊云科技 Build On -轻松搭建咖啡点单系统

【前言】 1、什么是Build On&#xff1f; Build On是亚马逊团队基于亚马逊云服务开发&#xff0c;打造的一系列可快速上手的实操性活动。通过通俗易懂的场景案例、简单快捷的开发路径&#xff0c;参与者可快速理解目标任务涉及的相关知识&#xff0c;同时对亚马逊云服务具备一…

【回答问题】ChatGPT上线了!推荐30个以上比较好的意图识别模型

【回答问题】ChatGPT上线了&#xff01;推荐30个以上比较好的意图识别github源码&#xff1f; 好的&#xff0c;这里列出 30 个相对比较优秀的意图识别 GitHub 源码&#xff1a; DeepPavlov Rasa Snips spaCy OpenAI GPT OpenAI DialogFlow ChatterBot Botpress Amazon Lex M…

ArcGIS基础实验操作100例--实验41提取道路面中心线

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验41 提取道路面中心线 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1…

2022,我遭遇的那些小事

前言 2022&#xff0c;总感觉一晃眼就过去了&#xff0c;不知不觉自己坚持更文已经一周年了。回顾这一周年&#xff0c;无论是在技术成长上还是职业发展上&#xff0c;都有了许多新的体会。 裁员风波 还记得是四、五月份的一个上午&#xff0c;原本还在紧张的加班赶项目&…

educoder数据结构与算法 队列 第2关 实现一个链接存储的队列

本文已收录于专栏 &#x1f332;《educoder数据结构与算法_大耳朵宋宋的博客-CSDN博客》&#x1f332; 目录 任务描述 相关知识 编程要求 测试说明 AC_Code 任务描述 本关任务&#xff1a;实现 step2/CLnkQueue.cpp 中的CLQ_IsEmpty、CLQ_Length、CLQ_In和CLQ_Out四个操…

论文阅读和复现:去除PPG运动伪影的IEEE论文

论文阅读和代码复现&#xff1a; 《Combining Nonlinear Adaptive Filtering and Signal Decomposition for Motion Artifact Removal in Wearable Photoplethysmography》 基本介绍&#xff1a; 由于手腕运动造成的噪声&#xff1a;运动伪影&#xff0c;使得PPG方法的心率监…

shell-流程控制之条件判断

1、判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。 补充&#xff1a;20G20971520kb [rootcotenos day06]# pwd /root/shell/day06 [rootcotenos day06]# vim free_men.sh #!/bin/bash f…

spring boot启动环境的配置与更改(dev,local,pro)包含单元测试环境

文件类型介绍 properties 该文件是一种key-value的格式&#xff0c;配置文件的特点是&#xff0c;它的Key-Value一般都是String-String类型的&#xff0c;因此我们完全可以用Map<String, String>来表示它。 用Properties读取配置文件非常简单。Java默认配置文件以.pro…

elasticsearch 7.9.3知识归纳整理(二)之es基本原理及使用kibana操作es的常见命令

es基本原理及使用kibana操作es的常见命令 一、es的基本原理与基础概念 1.1 倒排索引 倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值&#xff0c;而是由属性值来确定记录…

【机器学习】机器学习中常用的损失函数一览

问题 机器学习中常用的损失函数总结 前言 我们经常听到损失函数、代价函数和目标函数这三种说法&#xff0c;这三种说法有什么联系和区别呢&#xff1f;这里明确下&#xff1a; 损失函数 Loss Function 通常是针对单个训练样本而言的&#xff0c;给定一个模型输出 y^\hat{y…

设计模式 - UML类图

1. 什么是 UML 统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言。它的特点是简单、统图形化、能表达软件设计中的动态与静态信息。L从目标系统的不同角度出发&#xff0c;定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图部署…

8种数据结构

快速介绍8种常用数据结构 数据结构是一种特殊的组织和存储数据的方式&#xff0c;可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。 几乎所有已开发的程序或软件系统都使用数据结构。此外&#xff0c;数据结构属于计算…

【回答问题】ChatGPT上线了!有哪些3D点云算法模型?3D点云算法模型实现代码?

有哪些3D点云算法模型&#xff1f; 3D点云算法的模型有很多种&#xff0c;以下是一些常见的算法模型&#xff1a; 归一化重心法&#xff08;Normalized point-to-point ICP&#xff09;&#xff1a;是一种常用的模型配准方法&#xff0c;用于将两个模型中的点匹配起来。 基于…

跨年晚会前夕,曹云金和前妻复合了

每到跨年晚会的时候&#xff0c;总会有大的新闻事件发生&#xff0c;比如说在今年跨年晚会前夕&#xff0c;主持人何炅的老父亲&#xff0c;就非常不幸地驾鹤西去了。话说主持人何炅&#xff0c;在父亲离开后坚强地主持节目&#xff0c;他泪眼婆娑的表情&#xff0c;也登上了各…

电子游戏销售之回归模型与数据可视化

电子游戏销售之回归模型与数据可视化 文章目录电子游戏销售之回归模型与数据可视化0、写在前面1、回归模型1.1 模型建立准备1.2 建立模型1.3 模型分析2、数据可视化3、参考资料0、写在前面 该篇文章的任务包括以下3个方面 检测与处理缺失值建立回归模型数据可视化 实验环境 Pyt…

我的2022年总结

我的2022年总结 行走于世&#xff0c;风大时要表现逆的风骨&#xff0c;风小时要表现顺的悠然。 我们可以转身&#xff0c;但是不必回头&#xff0c;即使有一天你发现自己走错了&#xff0c;你也应该转身大步朝着对的方向去&#xff0c;而不是回头埋怨自己错了。 一、旧事 …

INT201-Decision, Computation and Language(2)

文章目录5. Turing Machine5.1 TM Configuration5.2 TM Transitions5.3 TM Computation5.4 Language accepted by TM5.5 Decider5.6 Multi-tape TM5.6.1 Multi-tape TM equivalent to 1-tape TM5.7 Nondeterministic TM5.7.1 Address5.7.2 NTM equivalent to TM5.8 Enumerable …

【Linux操作系统】yum三板斧和yum源的配置

文章目录一.Linux下软件的生态二.yum三板斧1.yum简介2.list搜索软件包3.install下载并安装4.remove卸载软件三.windows/Linux下文件互传1.lrzsz的查看和下载安装2.rz上传3.sz下载四.Linux软件生态的本土化1.镜像简介2.Linux软件生态的本土化五.yum源的配置1.找到yum源配置文件并…