如何在ansible所在的服务器上创建目录运行

How to create directories on the server where ansible is running

我是 Ansible 的新手,我正在尝试创建一个 Ansible Playbook,它将目录从不同主机备份到控制服务器(这是调用 Ansible 的同一台机器)。

我想先在 控制服务器 上创建目录,然后进行同步 (ansible.posix.synchronize) 或复制 (ansible.builtin.copy, ansible.builtin.fetch) 命令将所有主机的所有目录复制到控制服务器。

创建本地目录:

- name: Create local directory
  ansible.builtin.file:
    path: /path/to/new/directory
    state: directory
  register: local_dir
  delegate_to: localhost

有关 ansible.builtin.file 模块的详细信息,请参阅 ansible.builtin.file – Manage files and file properties

路径可以是相对路径也可以是绝对路径。

在 Ansible 控制器上执行此操作的关键是最后一行 (delegate_to: localhost)。

有关详细信息,请参阅 Delegation, Rolling Updates, and Local Actions


从远程复制数据到本地机器,使用ansible.posix.synchronize模块。

详情见ansible.posix.synchronize – A wrapper around rsync to make common tasks in your playbooks quick and easy

默认情况下,它会从本地复制到远程(默认mode: push),但您可以使用mode: pull来反转它。

注意:您需要先在本地创建基本目录(dest: "{{ local_dir.path }}"),但是synchronize模块会在其下创建必要的目录(标准 rsync(1) 功能)。


最后,我将在下方列出我遇到的 Ansible 介绍视频和其他资源。星级是我个人对资源的看法。请记住,在过去的 2-3 年中,Ansible 发生了很多变化。

希望您喜欢学习 Ansible。我当然有!