📜  ansible 删除目录 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:59:19.531000             🧑  作者: Mango

Ansible 删除目录

在使用 Ansible 进行自动化部署时,有时需要删除指定的目录。Ansible 提供了一个方便的模块 file 来进行文件和目录的操作,包括删除目录。

删除目录

可以使用 file 模块的 state=absent 参数来删除目录,示例如下:

- name: 删除目录
  file:
    path: /path/to/directory
    state: absent

在上面的示例中,将删除路径为 /path/to/directory 的目录。

忽略不存在的目录

如果要删除的目录不存在,可以使用 force=True 参数来忽略删除失败的错误。示例如下:

- name: 删除目录(不存在)
  file:
    path: /path/to/nonexistent/directory
    state: absent
    force: yes

在上面的示例中,如果 /path/to/nonexistent/directory 目录不存在,将忽略删除失败的错误。

Inventory 变量

如果要删除多台主机上的目录,可以在 Inventory 文件中定义变量,示例如下:

[web_servers]
server1.example.com
server2.example.com
server3.example.com

[web_servers:vars]
ansible_user=deploy
website_root=/var/www/html

在上面的示例中,定义了 website_root 变量,可以在 playbook 中进行使用:

- name: 删除 web 服务器上的目录
  hosts: web_servers
  become: yes
  tasks:
  - name: 删除目录
    file:
      path: "{{ website_root }}/mywebsite"
      state: absent
      force: yes

在上面的示例中,将在 web_servers 组中的主机上删除 /var/www/html/mywebsite 目录。

总结

Ansible 提供了方便的 file 模块来进行文件和目录的操作,包括删除目录。可以使用 state=absent 参数来删除目录,如果要忽略不存在的目录可以使用 force=True 参数。定义 Inventory 中的变量可以方便地在 playbook 中进行使用。