首页 > 解决方案 > 如何从库存中获取组主机

问题描述

我正在尝试在多台服务器上构建 rsync 类型的备份。我想在我的笔记本电脑上本地为每台服务器创建一个备份目录,然后备份它们。如果该目录不存在,请创建它。
我首先在本地调用 playbook,以便可以在本地创建目录,然后将 playbook 更改为备份组。问题是我不知道如何填充备份组中的主机名。当我在下面运行剧本时,唯一创建的目录是 localhost。我需要为备份组中的每个主机创建一个本地目录并进行备份。使这项工作最简单的方法是什么?

- hosts: localhost
  become: yes
  #strategy: free

  pre_tasks:

  vars:
   - backupDir: "/Users/user1/Desktop/Fusion/backups/{{ inventory_hostname }}/"

  roles:

  tasks:

  - name: Check if Backup Folder Exisits.
    stat:
      path: "{{ backupDir }}"
    register: my_folder

  - name: "Ansible Create directory if not exists"
    file:
      path: "{{ backupDir }}"
      state: directory
    when: my_folder.stat.exists == false

- hosts: backup
  tasks:

  - name: Rsync Directories from Remote to Local
    synchronize:
      mode: pull
      src: "{{ item }}"
      dest: "{{ backupDir }}/{{ansible_date_time.date}}.back"
    with_items:
      - "/home/user1/"
      - "/var/www/html/"
      - "/root/"
    when: my_folder.stat.exists

  handlers:

标签: ansible

解决方案


在您的清单文件中,您可以创建与您正在调用的主机相关联的组。

[localhost]
127.0.0.1

[backup]
host1
host2
host3

推荐阅读