Ansible检查文件是否存在的方法介绍Ansible 是一种基础设施即代码工具,它允许单个控制节点监视和管理大量远程主机(服务器)。
Ansible 使用 playbook 定义远程主机要执行的各种任务,包括检查文件和文件夹是否存在。
本教程介绍如何使用 Ansible 中的模块stat
检查远程主机上是否存在文件和文件夹,包括相关的Ansible检查文件是否存在示例。
先决条件
- 访问命令行/终端窗口
- 安装和配置 Ansible(请参阅我们的在 Windows上安装 Ansible和在 Ubuntu上安装 Ansible的指南)
stat
模块。该
stat
模块的目的是检索有关文件和文件夹的事实并将它们记录在寄存器中。stat 模块使用以下语法:---
- name: Playbook name
hosts: alltasks:
- name: Task name
stat:
path: [
path to the file or directory you want to check]
register: register_name...
其中:
stat:
声明我们正在使用 stat 模块。path:
声明我们要检查的文件或文件夹的路径。register:
提供 stat 模块保存文件和文件夹详细信息的寄存器的名称。
exists
。将此值与debug
模块相结合,你可以显示一条消息,详细说明文件或文件夹是否存在:- name: Task name
debug:
msg: "The file or directory exists"
when: register_name.stat.exists
文章图片
1. 在示例Playbook中,第一个任务(检查文件是否存在)使用该
stat
模块检索有关test.txt
位于远程主机上/home/example_folder 中的文件的事实。它将这些事实记录在一个名为 的寄存器中file_data
。【Ansible如何检查文件是否存在(操作步骤指南)】2. 第二个任务(如果文件存在则报告)使用该
debug
模块显示一条消息。它检查file_data
寄存器并使用该exists
值作为显示消息的条件。如果exists
值为true,则模块显示消息“文件或目录存在”。3. 第三个任务(报告丢失的文件)执行相同的操作,但如果值为false则显示消息“文件或目录不存在”。
exist
运行 playbook 提供以下输出:
文章图片
输出告诉我们该文件实际上不存在。
Ansible检查文件是否存在示例:如果你还想检查有问题的文件是否是常规文件而不是文件夹,请将
isreg
值添加到debug
模块条件中:- name: Task name
debug:
msg: "The file or directory exists"
when: register_name.stat.exists and register_name.stat.isreg
注意:市场上有许多基础设施即代码 (IaC) 工具。Ansible、Terraform、Puppet和Pulumi都是流行的 IaC 工具。
检查 Ansible 中是否存在目录使用 Ansible 检查目录是否存在与检查文件是否存在完全相同。唯一的区别是你使用该
isdir
值来确认指定目录的路径:- name: Task name
debug:
msg: "The file or directory exists"
when: register_name.stat.exists and register_name.stat.isdir
根据文件和文件夹是否存在运行 Ansible 任务Ansible如何检查文件是否存在?有时你想根据某些文件或文件夹是否存在来运行或跳过Playbook中的任务。
例如,如果你有一个旨在在每个远程主机上创建文件的Playbook,你希望跳过文件已经存在的那些主机以避免创建重复项。
Ansible检查文件是否存在的方法:为此,请使用
stat
模块检索到的文件详细信息和when
参数来为运行任务创建条件:---
- name: Playbook name
hosts: alltasks:
- name: Task name
stat:
path: [
path to the file or directory you want to check]
register: register_name- name: Task name 2
file:
path: [
path to the file you want to create]
state: touch
when: not register_name.stat.exists...
文章图片
1. 在上面的Ansible检查文件是否存在示例中,第一个任务(检查文件是否存在)使用该
stat
模块来检索test.txt
位于远程主机上example_folder中的文件的详细信息。2. 第二个任务(如果文件不存在则创建一个文件)首先检查
exists
寄存器中的值。如果值为true,则跳过任务并结束Playbook。如果值为false,则执行任务并创建一个名为test.txt
.结论遵循本教程后,你应该具备使用 Ansible
stat
模块的工作知识。你可以使用此模块检索到的信息来检查文件和文件夹是否存在,甚至可以决定是执行还是跳过任务。推荐阅读
- 如何添加、更新或删除Helm存储库(详细操作指南)
- 最佳Python IDE和代码编辑器合集(区别和优缺点)
- 什么是Git上游以及如何设置上游分支(详细解析)
- 如何使用Helm回滚更改(使用不同方式实现)
- 如何创建Helm Chart(详细操作分布指南)
- 如何安装和使用Flask(创建简单的应用程序)
- 如何在Helm Chart中使用环境变量(示例分布指南)
- 安装系统 一键win10重装系统图文图文详细教程
- 一键重装win10专业版图文图文详细教程