Ansible自动化运维(二) ad-hoc 模式 模块详解

Ansible自动化运维这部分我将会分为五个部分来为大家讲解

(一)介绍、无密钥登录、安装部署、设置主机清单

(二)Ansible 中的 ad-hoc 模式 模块详解(15)个

(三)Playbook 模式详解

(四)jinja2 模板 Roles角色详解

(五)运维实战

相关标题以及链接
Ansible自动化运维(一)介绍、无密钥登录、安装部署_ansible自动化运维免费版本-优快云博客
Ansible自动化运维(二) ad-hoc 模式 模块详解_ansible ad-hoc-优快云博客
Ansible自动化运维(三)playbook剧本详解-优快云博客
Jinja2模板、Roles角色详解-优快云博客
Ansible自动化运维(五) 运维实战-优快云博客

目录

Ansible中的 ad-hoc 模式

Ansible模块基本使用

1、Ansible帮助命令

2、ad-hoc 模式执行流程

3、Ansible中常见的返回值

4、常用模块

常用模块的用法(15个)

1、command模块

2、shell模块

3、ping模块

4、raw模块

5、script模块

6、yum模块

7、copy模块

8、file 模块

9、service模块

10、user/group模块

11、unarchive模块

12、get_url模块

13、setup模块

14、rsync模块

15、template模块


Ansible中的 ad-hoc 模式

Ad-hoc模式的使用场景:

查看某个进程的信息
拷贝日志到本地

一、Ansible模块基本使用

An-hoc模式的命令格式:

ansible 主机组名称 -m 模块 -a “具体命令”
常用选项:
-m 指定要使用的模块,不指定默认使用command模块 
-a 指定要执行的具体命令
-i  指定自定义的主机清单配置文件 
-f  一次返回几个结果

1、Ansible帮助命令

ansible-doc 		#帮助命令 
ansible-doc -l   	#列出所以的模块
ansible-doc 模块名   #查看模块的详细信息
ansible-doc 模块名 -s  #查看模块的选项使用说明

2、ad-hoc 模式执行流程

模块执行的工作流程

1.主控端命令行执行命令;
2.将模块拷贝到受控端;
3.按照模块定义的操作在受控端执行;
4.返回信息,删除受控端模块;

说明:

ansible模块可以使用的前提是:主控端与受控端python版本一致,

并且Ansible的模块是幂等执行的

Ansible执行命令的返回值颜色:

屎黄色:执行命令成功,并且做了修改;
草帽绿:执行命令成功,只查看信息,没有修改
玫瑰红:执行失败,报错
葡萄紫:表示对命令发错的操作有警告信息

比如一篇章,最开始的主机清单配置规则中,返回的结果就是绿色的,表示只查看,并不会做修改。

3、Ansible中常见的返回值

返回值

返回值含义

changed

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

failed

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

msg

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

rc

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

stdout

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

stderr

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

backup_file

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

results

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

4、常用模块

远程命令相关

1. command  	# 默认使用模块,用于远程执命令,不支持管道
2. shell   		# 远程执行命令,支持管道 
3. raw    		# ssh登录,再执行
4. script   	# 远程执行本地脚本
5. yum			# 远程安装
6. copy			# 推送文件
7. file			# 对文件操作
8. service		# 控制启动关闭服务
9. systemd   	# 控制启动关闭服务
10. mount		# 挂载与卸载模块
11. user/group	# 用于管理的用户创建与删除
12. unarchive	# 解压缩模块
13. get_url		# 下载文件,类似于curl
14. setup		# 获取主机信息
15. git			# git命令模块
16. sysctl      # 控制内核

二、常用模块的用法(15个)

首先我们先查看分组

cat /etc/ansible/hosts

注:因为分组设置的太多了,所以下面我只把要每一部分要查看的分组的内容部分给大家看

1、command模块

1、作用:用于远程执行命令,不支持管道

优点:

command 模块非常适合那些不需要复杂 shell 功能的简单命令执行场景。更加安全

缺点:

不够灵活,不支持管道

2、用法:

ansible 主机组名称 -m command -a “具体命令”
ansible 主机组名称 -a “具体命令”
# 默认为command模块

3、案例:

[root@server ~]# cat /etc/ansible/hosts
[node4]
host1
Host2

检查 node4 组里的所有主机 /etc/yum.repos.d/ 文件中的内容

ansible node4 -m command -a "ls /etc/yum.repos.d/"

因为我之前安装过nginx,mariadb mariadb-server。所以这里就直接检查状态了,大家也可以自己试一试自己动手安装nginx,看看能不能和下面一样可以检查它的运行状态吧

ansible node1 -m command -a "systemctl status nginx"

注:紫色信息意味着在Ansible的组名中发现了无效字符。这通常不会影响命令的执行结果,文档前后都已经做完更改,正常你们不会出现

2、shell模块

1、作用:远程执行命令,支持管道

优点:

shell 模块非常适合那些需要利用 shell 功能的任务。支持管道。

缺点:

安全性较低,在一些不需要shell功能的情况,推荐使用 command 模块,以提高安全性和效率。

2、用法:

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

3、案例:

[root@server ~]# cat /etc/ansible/hosts
[node1]
host1
[node4]
host1
host2

使用管道的方法来查看 nginx 、mariadb 的进程 

注:command模块不支持用管道哦

ansible node1 -m shell -a "ps aux | grep nginx"

ansible node4 -m shell -a "ps aux | grep mariadb"

大家可以先试试用 command 模块来为其他节点主机下载这两个服务,来进行测试

3、ping模块

1、作用:用于测试与远程主机的连接

优点:

可以快速验证远程主机的可达性

多次执行不会对系统产生影响。

适用于多种操作系统和环境。

缺点:

仅用于测试连接,无法执行其他任务。

如果 SSH 配置有问题,可能会导致误报。

只能告诉你连接是否成功,不能提供更多关于主机状态的信息。

2、用法:

ansible 主机组名称 -m ping

3、案例

[root@server ~]# cat /etc/ansible/hosts
[node4]
host1
host2

# 接下来我们试试 ping 组名为 node4 的组
[root@server ~]# ansible node4 -m ping

4、raw模块

1、作用:ssh登录,再执行

优点:

raw 模块更加简单和轻量级,因为它不依赖于 Python,并且可以在没有 Python 环境的情况下运行。这使得 raw 模块特别适合用于初始化系统或当目标机器缺少 Python 解释器时的情况。

缺点:

 raw 模块不支持复杂的参数传递,不像其他模块那样提供了丰富的功能选项,如幂等性控制、错误处理等。不支持复杂的参数传递和错误处理,可能不如其他模块可靠。

2、用法:

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

3、案例:

[root@server ~]# cat /etc/ansible/hosts
[node4]
host1
host2
[root@server ~]# ansible node4 -m raw -a "ls /etc/yum.repos.d"

5、script模块

1、作用:远程执行本地脚本

优点:

可以执行复杂的脚本逻辑,包括循环、条件判断等。可以在本地编写和测试脚本,然后通过 Ansible 在远程主机上部署。可以通过环境变量或其他方式传递参数给脚本,使脚本更加灵活。

缺点:直接执行脚本可能会带来安全风险,特别是如果脚本包含敏感操作或接受外部输入。

不像一些其他Ansible模块那样提供内置的幂等性支持,可能需要手动处理。相比于单个Ansible任务,整个脚本作为一个整体执行可能更难以调试。

2、用法:

ansible 主机组名称 -m script -a "your_script_file"

在这个命令中,将主机组名称替换为您的目标主机名或组名,并将your_script_file替换为您要在目标主机上执行的脚本文件的本地路径。

3、案例:

创建脚本文件 a.sh

再去执行命令,我们先简单的写一个小脚本

[root@server ~]# cat /etc/ansible/hosts
[node4]
host1
host2

[root@server ~]# vi a.sh
[root@server ~]# cat a.sh
#!/bin/bash
install_nginx() {
     yum -y install epel-release
     yum -y install nginx
     systemctl start nginx
     systemctl status nginx
}
install_nginx
[root@server ~]# ansible node3 -m script -a "a.sh"

太长了,就不全截下来了,反正成功了。

      这将在目标主机上执行a.sh脚本文件。
      请注意,script模块会将脚本文件传输到目标主机,然后在目标主机上执行它。因此,确保脚本文件在控制节点上可用,并且具有可执行权限(使用chmod +x命令添加执行权限)。
      与raw模块不同,script模块允许您在目标主机上执行本地脚本文件,而不需要手动传输脚本内容。这对于执行复杂的本地操作非常有用。

6、yum模块

1、作用:可以在远程主机上安装、升级、卸载和查询软件包。

优点:

可以管理单个或多个软件包,并且支持多种状态(安装、卸载、最新)。
语法简单,易于理解和使用。yum 模块支持幂等性操作,即多次运行相同的任务不会导致不同的结果。
提供了丰富的参数选项,如更新缓存、启用/禁用仓库、GPG 检查等。

2、用法:

ansible 主机组名称 -m yum -a "name=包名 state=安装/卸载/更新"

name=软件包的名,多个软件包逗号隔开
state= installed/present安装
removed/absent卸载 
lastest 更新
installed列出已安装的包

3、案例:

[root@server ~]# cat /etc/ansible/hosts
[node1]
host1

# 卸载 nginx
[root@server ~]# ansible node1 -m yum -a "name=nginx state=removed"

# 把 nginx 下载回来

[root@server ~]# ansible node1 -m yum -a "name=nginx state=installed"

7、copy模块

1、作用:将文件从控制节点复制到远程主机。如果目标文件已经存在且内容不同,可以自动更新目标文件。

优点:

copy 模块非常直观,易于理解和使用。
只需要指定源文件路径和目标文件路径即可。
可以设置文件的所有者、组、权限等属性。
支持备份功能,可以在修改之前保留旧版本。
可以复制文本文件、二进制文件、目录等。

缺点:

对于大型文件或大量文件,传输时间可能会比较长。
对于非常大的文件,使用 copy 模块可能不是最佳选择。在这种情况下,可以考虑使用 rsync 模块,它支持增量传输,更高效。
copy 模块主要用于静态文件,如果你需要动态生成文件内容,可能需要结合其他模块如 template 模块。

2、用法:

ansible 主机组名称 -m copy -a "src=文件路径及文件 dest=目录文件路径"

推送文件模块
src= 源文件路径
dest= 目标文件路径
content= 指定文件内容,只有目标文件;如果文件不存在会创建
owner= 指定属主
group= 指定属组
mode= 指定权限

3、案例

[root@server ~]# cat /etc/ansible/hosts
[node2]
Host2

[root@server ~]# ansible node2 -m copy -a "src=/etc/yum.repos.d/rzc.repo dest=/etc/opt/"
# 这条命令的意思是将主机里的rzc.repo文件复制到host2远程主机/etc/opt/目录下,

接下来我们利用command模块知识点进行查看。

ansible node2 -m command -a "ls /etc/opt"

这里也是可以成功查看到rzc.repo文件中的内容

ansible node2 -m command -a "cat /etc/opt/rzc.repo"

8、file 模块

1、作用:对文件操作

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

优点:

1.file 模块非常直观,易于理解和使用。
2.可以设置文件或目录的所有者、组、权限等属性。
3.如果文件或目录已经存在并且属性与预期一致,则不会进行任何操作,从而避免不必要的更改。
4.适用于各种文件和目录管理任务,从简单的文件创建到复杂的目录结构管理。

缺点:

1.对于大量文件或复杂目录结构,处理时间可能会较长。对于这种情况,可以考虑使用其他工具如 rsync 或 find 命令结合 Ansible 的 shell 或 command 模块。
2.file 模块主要用于管理文件和目录属性,而不是传输大文件。对于大文件传输,建议使用 copy 或 synchronize 模块。
3.对于更复杂的文件操作(如编辑文件内容、合并文件等),可能需要结合其他模块如 lineinfile 或 template。

2、用法:

path 指定路径             mode 指定权限
src 源文件路径            state 指定文件的状态
recurse 递归授权          directory   在远端创建目录
owner 指定属主            touch  在远端创建文件
group 指定属组            link  创建软连接
hard  创建硬连接          absent  表示删除文件或目录
ansible 主机组名称 -m file -a "操作内容"

3、案例

[root@server ~]# cat /etc/ansible/hosts
[node1]
host1

#执行:
# 创建一个目录
ansible node1 -m file -a "path=/home/cs state=directory"

# 创建一个文件
ansible node1 -m file -a "path=/home/cs/cs.sh state=touch"

# 将/home/test/lifeng.sh软连接到/home/cs/下
ansible node1 -m file -a "src=/home/test/lifeng.sh path=/home/cs/lifeng_link.sh state=link"

# 创建一个文件并给予root用户和执行权限
ansible node1 -m file -a "path=/home/cs/lv.sh state=touch mode=777 owner=root group=root"

9、service模块

1、作用:控制启动关闭服务

优点:

非常直观,易于理解和使用,只需要指定服务名称和服务状态即可。
如果服务已经处于所需状态,则不会进行任何操作,从而避免不必要的更改。
service 模块支持多种操作系统和服务管理系统(如 systemd, upstart, init.d 等)。

缺点:

service 模块依赖于目标主机上的服务管理器(如 systemd, upstart, init.d 等)。如果这些服务管理器未安装或配置不正确,任务可能会失败。
对于更复杂的任务(如配置服务的具体参数、处理服务依赖关系等),可能需要结合其他模块或直接使用 shell 或 command 模块来执行特定的命令。

2、用法:

name:要管理的服务名称。
state:服务的状态,可选值包括:
started:启动服务。
stopped:停止服务。
restarted:重启服务。
reloaded:重新加载服务配置。
status:检查服务状态。
enabled:是否启用服务的自启动(开机启动),可选值为 yes 或 no。
ansible 主机组名称 -m service -a "name=服务名称 state=服务操作 enabled=是否设置开机自启"

3、案例

[root@server ~]# cat /etc/ansible/hosts
[node3]
host3

先在 host3 节点上安装一个 nginx 服务,来进行接下来的测试

 ansible node3 -m yum -a "name=nginx state=present"

启动 nginx 服务

ansible node3 -m service -a "name=nginx state=started"

停止 nginx 服务

ansible node3 -m service -a "name=nginx state=stopped"

重启 nginx 服务

ansible node3 -m service -a "name=nginx state=restarted"

设置 nginx 服务开机自启

ansible node3 -m service -a "name=nginx enabled=yes"

检查 nginx 服务运行状态

ansible node3 -m command -a "systemctl status nginx"

10、user/group模块

1、作用:用于管理的用户创建与删除

user用于管理用户的创建与删除,相当于useradd,userdel,usermod;
group模块用于管理用户组的,相当于groupadd,groupdel等。

2、用法

ansible 主机组名称 -m user -a "操作内容"
ansible 主机组名称 -m group -a "操作内容"
name(必需):指定用户的用户名。
state:       指定用户账户的状态。可以是以下之一:
present:     创建用户(默认值)。
absent:      删除用户。
locked:      锁定用户账户。
unlocked:    解锁用户账户。
password:    仅更改用户的密码。
uid:         指定用户的用户ID(UID)
gid:         指定用户的用户ID(GID)
group:       指定用户的初始主组。
groups:      指定用户所属的其他组。
home:        指定用户的家目录路径。
shell:       指定用户的登录 shell。
password:    指定用户的密码(已加密的密码)。
append:      如果为 yes,则添加用户到组而不是替换(默认为 no)。
remove:      如果为 yes,则删除用户的家目录和邮箱文件(默认为 no)。
move_home:        如果为 yes,则在更改用户的主目录时移动用户的文件(默认为 no)。
create_home:      如果为 yes,则创建用户的主目录(默认为 yes)。
update_password:  如果为 always,则始终更新密码(默认为 on_create)。

3、案例

[root@server ~]# cat /etc/ansible/hosts
[node1]
host1

在host1主机上创建用户,使用 user 模块创建一个名为 lifeng 的新用户

ansible node1 -m user -a "name=lifeng state=present"

查看一下:

ansible node1 -m command -a "tail -3 /etc/passwd"

删除这个名为 lifeng 的用户

ansible node1 -m user -a "name=lifeng state=absent"

再次进行检查

ansible node1 -m command -a "tail -3 /etc/passwd"

这里可以看到,已经成功将 lifeng 用户删除

接下来让我们继续:

创建组,使用 group 模块创建一个名为 mygroup 的新组:

ansible node1 -m group -a "name=mygroup state=present"

查看一下是否添加进去

ansible node1 -m command -a "tail -3 /etc/group"

删除这个名为 mygroup 的组

ansible node1 -m group -a "name=mygroup state=absent"

进行检查

ansible node1 -m command -a "tail -3 /etc/group"

这里可以看到,已经成功将 mygroup 这个组删除掉

将 lifeng 用户和 mygroup 组重新进行创建

ansible node1 -m user -a "name=lifeng state=present"
ansible node1 -m group -a "name=mygroup state=present"

添加用户到组,使用 user 模块将用户 lifeng 添加到组 mygroup:

ansible node1 -m user -a "name=lifeng group=mygroup append=yes"

ansible node1 -m command -a "tail -3 /etc/passwd"

这一行表示用户 lifeng 的信息:

lifeng:用户名
x:密码字段(实际密码存储在 /etc/shadow 中)
1000:用户 ID (UID)
1001:主要组 ID (GID)
空:用户全名或注释
/home/lifeng:家目录
/bin/bash:默认 shell

你也可以进一步验证用户 lifeng 是否属于 mygroup 组:

ansible node1 -m command -a "id lifeng"

用户创建成功:用户 lifeng 已经被成功创建。
主要组设置成功:用户 lifeng 的主要组已经被设置为 mygroup。
家目录和 shell 设置:用户 lifeng 的家目录是 /home/lifeng,默认 shell 是 /bin/bash。

11、unarchive模块

1、作用:解压缩模块(两种方法)

将ansible主机上的压缩包在本地解压缩后传到远程主机上,
这种情况下,copy=yes.本地解压缩,解压缩位置不是默认的目录,
没找到或传完删了后传到远程主机

将远程主机上的某个压缩包解压缩到指定路径下。
这种情况下,需要设置copy=no远程主机上面的操作,不涉及ansible服务端

优点:

非常直观,易于理解和使用。只需要指定源文件路径和目标目录即可。
可以使用 creates 参数来避免重复解压。
如果目标目录已经存在且内容相同,则不会进行任何操作,从而避免不必要的更改。
可以处理控制节点上的本地文件或远程主机上的文件。
与其他 Ansible 模块和任务无缝集成,可以轻松地将解压操作纳入到更大的自动化流程中

缺点:

有依赖性,解压操作依赖于目标主机上安装的相应工具(如 unzip, tar 等)。
如果这些工具未安装或版本不兼容,任务将会失败。需要确保目标主机上有正确的工具。

对于大型归档文件或复杂的归档结构,解压时间可能会比较长。
解压操作通常需要管理员权限,特别是在设置文件的所有者和权限时。
如果没有足够的权限,任务将会失败。

默认情况下,unarchive 模块会覆盖目标目录中的现有文件。
虽然可以通过 creates 参数来避免这种情况,但如果不小心配置,可能会导致数据丢失。

2、用法

ansible 主机组名称 -m unarchive -a "src=源路径 dest=目标路径 其他参数"

tar、.tar.gz、.tar.bz2、.zip等都支持

copy:        默认为no,当copy=yes,
              那么拷贝的文件是从ansible主机复制到远程主机上而不是在原地解压缩
              如果设置为copy=no,
              那么会在远程主机上寻找src源文件;
src:         源路径
              可以是ansible主机上的路径,也可以是远程主机上的路径,
              如果是远程主机上的路径,则需要设置copy=no
dest:        指定了解压缩后文件的目标目录
mode:        设置解压缩后的文件权限,可以使用数字或符号模式,例如 "0644" 或 "u=rw,go=r"。
list_files:  默认值为no,如果设置为yes,解压同时,返回压缩包的文件列表
remote_src:  如果设置为 yes,则表示 src 参数是远程主机上的路径。
extra_opts:   允许您指定解压缩命令的额外选项。这对于一些特定格式的存档文件非常有用。
creates:    如果指定了此选项,只有在 creates 中指定的文件或目录不存在时,才会执行解压缩操作。
owner:        设置解压缩后文件的所有者。
group:        设置解压缩后文件的所属组。

3、案例

[root@server ~]# cat /etc/ansible/hosts
[node1]
host1

[root@server ~]# ansible node1 -m unarchive -a "src=/root/wordpress-6.7.1-zh_CN.zip dest=/root/hhh"

这里的意思是:我们将已经上传好的wordpress-6.7.1-zh_CN.zip包复制到host1主机/root/hhh目录里并且进行解压

12、get_url模块

1、作用:下载文件到远程主机

优点:

1.使用简单直观,只需要提供几个参数即可完成文件下载任务。

2.支持多种协议,并可设置文件权限、所有者等属性。

缺点:

对于大文件或者带宽受限的情况,get_url 的效率可能不如直接使用命令行工具如 wget 或 curl,因为这些工具提供了更多的控制选项来优化下载过程。

2、用法

url (必需):           指定要下载文件的URL。这是一个必需参数。
dest (必需):          指定文件将保存到本地目标主机上的目标路径。这是一个必需参数。
force (可选):         如果设置为 yes,将强制下载文件,即使文件已经存在。默认为 no。
checksum (可选):      提供要下载文件的校验和,以确保文件完整性。
backup (可选):        如果设置为 yes,将在下载之前备份现有文件。默认为 no。
timeout (可选):       设置下载文件的超时时间(秒)。
url_username (可选):  如果目标URL需要身份验证,可以提供用户名。
url_password (可选):  如果目标URL需要身份验证,可以提供密码。
owner (可选):         设置下载后文件的所有者。
group (可选):         设置下载后文件的所属组。
mode (可选):          设置下载后文件的权限模式

3、案例

[root@server ~]# cat /etc/ansible/hosts
[node1]
host1
ansible node1 -m get_url -a "url=https://cn.wordpress.org/latest-zh_CN.zip dest=/opt/"

这条命令意思是:将主机里的word press文件下载到host1主机的/opt/目录下

现在我们来测试一下看看是否真的传进去了(这里我用的是command模块来进行操作的)

ansible node1 -m command -a "ls /opt/"

13、setup模块

1、作用:获取主机信息

setup 模块不仅是一个常见的模块,而且是一个特殊的模块。它用于获取目标主机的系统信息和事实(facts),并将这些信息返回到 Ansible Playbook 中,以供后续任务使用。setup 模块通常不需要额外的参数,因为它会自动获取系统信息。

2、用法:

ansible node1 -m setup
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

3、案例:

[root@server ~]# cat /etc/ansible/hosts
[node1]
host1

获取host1主机所有信息

ansible node1 -m setup

14、rsync模块

1、作用:高效地复制或同步文件(大量数据)

在Ansible中,rsync模块用于执行rsync命令来同步文件和目录。这使得可以在远程主机之间高效地复制或同步文件,同时支持增量更新、压缩传输以及多种其他选项以优化性能。
rsync特别适用于需要频繁同步大量数据的情况,因为它可以显著减少网络带宽的使用。

2、用法:

ansible 主机名组名称 -m rsync -a "src=源路径  dest=目标路径“
src:          源路径,可以是本地文件/目录或者是远程主机上的路径(如果指定了user@hostname:)。
dest:         目标路径,指定要将文件/目录同步到的位置。
archive:      开启归档模式,保持符号链接、权限、时间戳等属性,并递归处理目录。
delete:       删除目标上存在但源中不存在的文件。
compress:     启用压缩以减少传输量。
owner, group: 设置文件所有者和组。
mode:         设置文件权限。

注意:

确保目标主机已经安装了rsync工具。
当使用rsync进行远程同步时,确保有适当的权限访问远程位置。
如果你在使用SSH密钥认证之外的方式连接到远程主机,请确保适当配置了ansible_ssh_pass等变量或使用--ask-pass选项手动输入密码。
在生产环境中部署前,最好先在一个测试环境中验证你的命令

15、template模块

1、作用:用于将Jinja2模板文件处理成目标主机上的配置文件

Ansible的template模块用于将Jinja2模板文件处理成目标主机上的配置文件。这个模块非常有用,因为它允许你在部署过程中动态生成配置文件,从而实现更灵活和可维护的自动化流程。

2、用法:

ansible 主机组名称 -m template -a "src=模板文件的路径 dest=目标文件的路径"
src:           模板文件的路径(相对于控制节点)。
dest:          目标文件的路径(在远程主机上)。
owner, group:  设置文件所有者和组。
mode:          设置文件权限。
backup:        如果设置为yes,则在覆盖之前备份目标文件。
validate:      可以指定一个命令来验证模板生成的文件是否有效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值