关于Ansible的模块②

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


接《关于Ansible的模块 ①-CSDN博客》,继续学习和梳理Ansible的常用文件类模块

1. copy模块

从当前机器上复制文件到远程节点上,并且设置合理的文件权限。

参数含义
src指定要copy的文件源路径
dest指定copy文件的目标路径,必须有
content当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,与src二者必选一
force当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,可加force参数表示是否强制覆盖文件,可选值有yes和no。默认值为yes,表示覆盖;如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。
backup当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机。
owner指定文件拷贝到远程主机后的属主,但是目标主机上必须已存在该用户。
group指定文件拷贝到远程主机后的属组,但是目标主机上必须已存在该组。
mode指定文件拷贝到目标主机后的权限,如果想将权限设置为"rw-r--r--",则可以使用mode=0644表示(必须以0开始),如果想要在user对应的权限位上添加执行权限,则可以使用mode=u+x表示

copy模块在复制文件的时候会先比较一下文件的checksum,如果相同则不会复制,返回状态为SUCCESS;如果不同才会复制,返回状态为changed。

例如下面的例子,ansible主机和被管理主机的/tmp下都存在testsre.txt这个文件,但是里面的内容不完全一样,也是会复制成功,且不会改变被管理主机上testsre.txt这个文件原本的文件权限。

1)复制文件并修改文件权限(前提是目标服务器必须有对应的user和group):

2)复制前备份原文件

如果两个文件不同,且需要备份原文件,则加上backup=yes:

ansible all -m copy -a "src=/tmp/testsre.txt dest=/tmp/testsre.txt backup=yes"

执行结果:

2. template模块

如果复制的是静态文件,那么用copy模块就可以了。如果在复制的同时需要根据实际情况修改部分内容,则需要用到template模块。比如将带有参数的配置文件传递到目标地址等。

参数含义
srcAnsible 控制器上 Jinja2 格式模板的路径。这可以是相对路径或绝对路径。文件必须使用 utf-8 编码,但可以使用 output_encoding 来控制输出模板的编码
dest在远程计算机上呈现模板的位置
backup创建一个包含时间戳信息的备份文件,以便在您以某种方式错误地破坏它时可以恢复原始文件
owner文件或目录的所有者
group文件或目录的组所有者
mode文件或目录的权限

1)一个简单的文件推送与系统变量获取

[root@test101 templates]# cat test.conf.j2  #创建一个.j2文件
my ip is {{ ansible_host }}
[root@test101 templates]# #将test.conf.j2推送到目标主机,生成/tmp/ip文件
[root@test101 templates]# ansible all -m template -a "src=test.conf.j2  dest=/tmp/ip"

2)将远程主机的hostname写入其/tmp/hostname文件(这个文件原本不存在):

在ansible主机创建如下文件:

[root@test101 test]# tree 
.
├── hostname.yml
└── templates└── test.j21 directory, 2 files
[root@test101 test]# 
[root@test101 test]# cat hostname.yml 
---
- name: Write hostnamehosts: alltasks:- name: write hostname using jinja2ansible.builtin.template:src: templates/test.j2dest: /tmp/hostname
[root@test101 test]# 
[root@test101 test]# cat templates/test.j2 
My name is {{ ansible_facts['hostname'] }}
[root@test101 test]#

执行yaml文件:

3. file模块

fle 模块可以用来设置远程主机上的文件、软链接(symlinks)和文件夹的权限,也可以用来创建和删除它们。

参数含义
path指定远程服务器的路径,也可以写成‘dest’,‘name’
state

指定操作,可以将值设定为:

directory:创建目录;

touch:创建文件;

link:创建软连接;

hard:创建硬连接;

absent:删除目录文件或链接

mode文件复制到远程并设定权限,默认file=644,directory=755
owner文件复制到远程并设定属主,默认为root
group文件复制到远程并设定属组,默认为root
recurese递归修改

1)改变文件权限

mode 参数既可以直接赋值数字权限(必须以0开头),还可以用来增加和删除权:

#将目标主机/tmp/test目录的权限设置为sre:sre,权限改为777
ansible all -m file -a "path=/tmp/test state=directory mode=0777 owner=sre group=sre"

执行效果:

还可以通过如下方式修改权限:

ansible all -m file -a "path=/tmp/test state=directory mode="u=rw,g=r,o=r" owner=sre group=sre"
ansible all -m file -a "path=/tmp/test state=directory mode="u+x,o+wr" owner=sre group=sre"

2)创建文件软链接

注意,这里的src和dest参数的含义和copy不一样。file模块里操作的都是远程节点上的文件。

ansible all -m file -a "src=/tmp/test dest=/tmp/test1 state=link"

若加上owner和group字段,则会创建一个软连接并修改源文件的属主信息:

3)创建一个新文件

创建一个文件并指定属主和权限:

ansible all -m file -a 'path=/tmp/test/sre.txt state=touch mode=0400 owner=sre group=sre'

4)创建一个目录

创建一个指定了owner和group,并设置了权限的目录

ansible all -m file -a 'path=/tmp/sre state=directory mode=0400 owner=sre group=sre

5)删除文件

ansible all -m file -a "path=/tmp/test1  state=absent"

未完待续......

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

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

相关文章

SQLite3进行数据库各项常用操作

目录 前言1、SQLite介绍2、通过SQLite创建一个数据库文件3、往数据库文件中插入数据4、数据库文件信息查询5、修改数据库中的内容6、删除数据库中的内容 前言 本文是通过轻量化数据库管理工具SQLite进行的基础操作和一些功能实现。 1、SQLite介绍 SQLite是一个广泛使用的嵌入…

C语言内存函数(超详解)

乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 点击主页:optimistic_chen和专栏:c语言, 创作不易,大佬们点赞鼓…

SQL,group by分组后分别计算组内不同值的数量

SQL,group by分组后分别计算组内不同值的数量 如现有一张购物表shopping 先要求小明和小红分别买了多少笔和多少橡皮,形成以下格式 SELECT name,COUNT(*) FROM shopping GROUP BY name;SELECT name AS 姓名,SUM( CASE WHEN cargo 笔 THEN 1 ELSE 0 END)…

MyBatis 参数重复打印的bug

现象 最近有个需求,需要在mybatis对数据库进行写入操作的时候,根据条件对对象中的某个值进行置空,然后再进行写入,这样数据库中的值就会为空了。 根据网上查看的资料,选择在 StatementHandler 类执行 update 的时候进…

一文带您了解如何进行ADCDAC精度测试

作者介绍 一、前言 ADC(模数转换器)和DAC(数模转换器)是电子设备中至关重要的组件,它们负责将模拟信号转换为数字信号,或者将数字信号转换为模拟信号。这些转换器的存在形式主要有两种:一种是作…

c语言-static

static作用&#xff1a;修饰变量和函数 修饰局部变量-静态局部变量 static未修饰局部变量 #include <stdio.h>void print() {int a 0;a;printf("%d ", a); }int main() {int i 0;for (i 0; i < 10; i){print();}return 0; }运行结果 static修饰局部变…

vulnhub靶场之driftingblues-4

一.环境搭建 1.靶场描述 get flags difficulty: easy about vm: tested and exported from virtualbox. dhcp and nested vtx/amdv enabled. you can contact me by email for troubleshooting or questions. This works better with VirtualBox rather than VMware. 2.靶场…

[SpringCloud] Feign Client 的创建 (二) (五)

文章目录 1.自动配置FeignAutoConfiguration2.生成 Feign Client2.1 从Feign Client子容器获取组件2.2 Feign Client子容器的创建2.3 构建Feign Client实例 1.自动配置FeignAutoConfiguration spring-cloud-starter-openfeign 包含了 spring-cloud-openfeign-core FeignAutoCo…

QT_day5:使用定时器实现闹钟

1、 程序代码&#xff1a; widget.h&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime>//时间类 #include <QTimer>//时间事件类 #include <QTextToSpeech>//文本转语音类 QT_BEGIN_NAMESPACE namespace Ui { cla…

Python读取PDF文字转txt,解决分栏识别问题,能读两栏

搜索了一下&#xff0c;大致有这些库能将PDF转txt 1. PyPDF/PyPDF2&#xff08;截止2024.03.28这两个已经合并成了一个&#xff09;pypdf PyPI 2. pdfplumber GitHub - jsvine/pdfplumber: Plumb a PDF for detailed information about each char, rectangle, line, et cete…

R语言使用dietaryindex包计算NHANES数据多种营养指数(2)

健康饮食指数 (HEI) 是评估一组食物是否符合美国人膳食指南 (DGA) 的指标。Dietindex包提供用户友好的简化方法&#xff0c;将饮食摄入数据标准化为基于指数的饮食模式&#xff0c;从而能够评估流行病学和临床研究中对这些模式的遵守情况&#xff0c;从而促进精准营养。 该软件…

Notepad++:格式化json字符串(带转义)

目录 一、效果呈现 二、去除json字符串转义 三、格式化json字符串 一、效果呈现 格式化前 带字符串转义&#xff0c;带unicode编码字符 格式化后 二、去除json字符串转义 方法&#xff1a;采用Notepad的普通替换 第一&#xff1a;\"替换为" 第二&#xff1a;\\…

科技下乡:数字乡村改变乡村生活方式

在科技飞速发展的时代&#xff0c;数字化、信息化浪潮正以前所未有的速度席卷全球。在这场科技革命中&#xff0c;乡村不再是滞后的代名词&#xff0c;而是成为了数字乡村建设的热土。科技下乡&#xff0c;让数字乡村成为了改变乡村生活方式的重要力量。 一、科技下乡&#xf…

什么是量子计算?

什么是量子计算&#xff1f; 量子计算机仍处于起步阶段&#xff0c;正在影响已经在经典计算机上运行的新一代模拟&#xff0c;现在使用 NVIDIA cuQuantum SDK 进行加速。 在史蒂夫乔布斯 (Steve Jobs) 推出可以放入口袋的计算机之前 27 年&#xff0c;物理学家保罗贝尼奥夫 (P…

什么是JPA,JPA的概念

什么是JPA JPA&#xff08;Java Persistence API&#xff0c;Java持久化API&#xff09;&#xff0c;定义了对象-关系映射&#xff08;ORM&#xff09;以及实体对象持久化的标准接口,它是一套标准,具体的实现要根据不同的厂商来提供,就跟JDBC类型 持久化单元 持久化单元是运行…

【A-013】基于SSH的共享单车管理系统/共享单车出租系统

【A-013】基于SSH的共享单车管理系统/共享单车出租系统 开发环境&#xff1a; Eclipse/MyEclipse、Tomcat8、Jdk1.8 数据库&#xff1a; MySQL 适用于&#xff1a; 课程设计&#xff0c;毕业设计&#xff0c;学习等等 系统介绍&#xff1a; 基于SSH开发的共享单车管理系统/…

基于JavaSpringmvc+myabtis+html的鲜花商城系统设计和实现

基于JavaSpringmvcmyabtishtml的鲜花商城系统设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末…

leecode 331 |验证二叉树的前序序列化 | gdb 调试找bug

计算的本质是数据的计算 数据的计算需要采用格式化的存储&#xff0c; 规则的数据结果&#xff0c;可以快速的按照指定要求存储数据 这里就不得不说二叉树了&#xff0c;二叉树应用场景真的很多 本题讲的是&#xff0c;验证二叉树的前序序列化 换言之&#xff0c;不采用建立树的…

Redis怎么测?这篇文章写的太全了

Redis是一个高性能、内存数据库和缓存系统&#xff0c;在开发和生产环境中被广泛应用。本文将介绍如何进行有效的Redis软件测试&#xff0c;以确保其稳定性、高性能和可靠性。 Redis作为一种非关系型数据库和缓存系统&#xff0c;被广泛用于支持高流量、低延迟的应用。为了保证…

算法学习——LeetCode力扣动态规划篇9(1035. 不相交的线、53. 最大子数组和、392. 判断子序列、115. 不同的子序列)

算法学习——LeetCode力扣动态规划篇9 1035. 不相交的线 1035. 不相交的线 - 力扣&#xff08;LeetCode&#xff09; 描述 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在&#xff0c;可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线&#x…