如何在Ansible中创建文件?不同方式详细指南

2021年11月20日17:49:35 发表评论 2,542 次浏览

介绍

Ansible 是一个基础设施即代码工具,它允许你使用单个中央位置(Ansible 控制节点)来监视和控制大量远程服务器(主机)。

使用 Ansible 设置远程主机可以执行的许多任务,包括创建新文件和目录。

Ansible如何创建文件本教程涵盖了使用 Ansible 在远程主机上创建文件的不同方式。

先决条件

  • 一个运行 Ubuntu 20.04 的系统
  • 访问命令行/终端窗口
  • 安装和配置 Ansible(请参阅我们的在 Windows上安装 Ansible或在 Ubuntu上安装 Ansible的指南)

创建 Ansible Playbook

如何在Ansible中创建文件?Ansible playbook是你希望远程主机执行的任务列表。它们可以保存和重复使用,使你能够自动化复杂的流程。

你要向远程主机发出的每个命令(包括创建文件和文件夹)都是你必须包含在Playbook中的任务。执行 playbook 后,远程主机将执行其中定义的所有任务。

注意:在本教程中,我们使用 Nano 编辑器将命令添加到我们的Playbook中。你还可以使用任何其他Linux 文本编辑器。

Ansible创建文件的方法:要创建 Ansible playbook,请使用以下命令:

sudo nano /etc/ansible/playbook.yaml

此命令在 Ansible 安装文件夹中创建一个名为“playbook”的 .yaml 文件。我们将使用playbook.yaml文件中的任务在我们的远程主机上创建文件和文件夹。

使用Ansible 的试运行 功能,用户可以在不更改服务器的情况下执行Playbook。它使用内置的检查模式在执行前验证Playbook是否存在错误。

创建空文件

Ansible如何创建文件?创建空文件的最快方法是使用 Ansible 的file模块。

将以下配置添加到你的 Ansible Playbook中:

---

- hosts: all
  tasks:
  - name: Creating an empty file
    file:
      path: "/your path"
      state: touch
如何在Ansible中创建文件?不同方式详细指南

上面的文件包含以下组件:

  • hosts定义要在 Ansible 清单文件中的哪些远程主机上执行任务。All 表示每台主机都接收命令,但你也可以输入主机类别或单个主机的名称。
  • tasks:通知远程主机需要执行任务。
  • name:让你定义任务的名称。名称仅供参考,对任务本身没有影响。
  • file: 使用 Ansible 的文件模块来创建一个新文件。
  • path:定义远程主机硬盘上新文件的路径。
  • state: 类似于touch Ubuntu 终端中的命令,输入touch 会在你选择的位置创建一个空文件。

要执行Playbook,请使用:

ansible-playbook /etc/ansible/playbook.yaml
如何在Ansible中创建文件?不同方式详细指南

创建包含内容的文件

如何在Ansible中创建文件?如果要新建一个有内容的文件,可以先用上面的方法创建一个空文件,然后用blockinfileorlineinfile模块插入内容。

更快的方法是使用copy模块。即使此模块用于将文件从控制节点复制到远程主机,你也可以包含content参数以立即将内容添加到空文件中。

Ansible创建文件的方法 - 在你的Playbook中使用此配置:

---

- hosts: all
  tasks:
  - name: Creating a file with content
    copy:
      dest: "/your path"
      content: |
        line 01
        line 02

在文件中,我们使用了:

  • copy: 使用 Ansible 的复制模块。
  • dest:定义新文件的路径。
  • content: 此参数将添加line 01line 02作为新文件的内容。

创建多个文件

Ansible如何创建文件?你可以使用 Ansible playbook 中的单个任务创建多个文件。

使用以下配置创建多个文件:

---

- hosts: all
  tasks:
  - name: Create multiple files
    file: 
      path: "{{ item }}"
      state: touch
    with_items:
    - test01.txt
    - test02.txt
    - test03.txt
    - test04.txt

在上面的配置文件中,我们定义了:

  • path:该"{{ item }}"值意味着 Ansible 将为每个相应的文件创建一个单独的路径。默认情况下,这些文件位于远程主机的 Home 文件夹中。使用 定义不同的路径/your_folder_path/"{{ item }}"
  • with_items: 此参数用于启动要创建的文件列表。列出任意数量的文件。在我们的示例中,我们创建了一个名为test的四个文件的列表。

创建目录

如何在Ansible中创建文件?创建新目录使用与创建空文件时相同的配置。唯一的区别是在state参数下,你输入directory 的值是:

---

- hosts: all
  tasks:
  - name: Creating a new directory
    file:
      path: "/your path"
      state: directory

删除文件

Ansible playbook 还可以删除现有文件。为此,请将state参数设置为absent

---

- hosts: all
  tasks:
  - name: Removing a file
    file:
      path: "/your path"
      state: absent

如果文件已被删除,则此命令不执行任何操作。

设置文件权限

Ansible如何创建文件?通过上述所有示例,你还可以设置新文件和文件夹的权限。为此,你需要使用该mode参数。

Ansible创建文件的方法 - 有两种方法可以做到这一点:

  • 使用八进制模式格式:你可以使用八进制数,如 0644 或 0777。不要忘记前导 0,因为忽略它会导致意外结果。
  • 使用符号模式格式:你可以使用u=rwxg=rx, or等值o=rx,其中u代表ownerg代表groupo代表others。该权限被定义为r用于读取w用于写入,并x执行

例如,你可以使用八进制值 0755,同时定义所有者:

---

- hosts: all
  tasks:
  - name: Create a new file with permissions
    file:
      path: "/your path"
      state: touch
      mode: 0755
      owner: test

你还可以使用与 0755 等效的符号:

---

- hosts: all
  tasks:
  - name: Create a new file with permissions
    file:
      path: "/your path"
      state: touch
      mode: u=rwx,g=rx,o=rx
      owner: test

结论

如何在Ansible中创建文件?遵循本教程后,你应该了解设置 Ansible playbook 并使用它们在远程主机上创建新文件和目录的基础知识。

你可以从这里通过添加更多任务和创建复杂的Playbook来构建,这将使添加大量文件变得快速而轻松。Playbook 可用于定义远程主机要执行的各种任务,包括检查文件和文件夹是否存在。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: