介绍
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
上面的文件包含以下组件:
hosts
:定义要在 Ansible 清单文件中的哪些远程主机上执行任务。All 表示每台主机都接收命令,但你也可以输入主机类别或单个主机的名称。tasks
:通知远程主机需要执行任务。name
:让你定义任务的名称。名称仅供参考,对任务本身没有影响。file
: 使用 Ansible 的文件模块来创建一个新文件。path
:定义远程主机硬盘上新文件的路径。state
: 类似于touch
Ubuntu 终端中的命令,输入touch
会在你选择的位置创建一个空文件。
要执行Playbook,请使用:
ansible-playbook /etc/ansible/playbook.yaml
创建包含内容的文件
如何在Ansible中创建文件?如果要新建一个有内容的文件,可以先用上面的方法创建一个空文件,然后用blockinfile
orlineinfile
模块插入内容。
更快的方法是使用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 01
和line 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=rwx
,g=rx
, or等值o=rx
,其中u
代表owner,g
代表group,o
代表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 可用于定义远程主机要执行的各种任务,包括检查文件和文件夹是否存在。