AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 831864
Accepted
cytopia
cytopia
Asked: 2017-02-11 09:19:46 +0800 CST2017-02-11 09:19:46 +0800 CST 2017-02-11 09:19:46 +0800 CST

Ansible:将配置复制到当前和其他主机

  • 772

这是一个棘手的理论问题,甚至是解释本身。

我Bacula这里以(服务器备份软件)为例说明一下。

Bacula 有一个服务器和一个客户端组件。添加新客户端需要服务器和客户端上的配置文件。所以我想在我的角色中做的是:

Bacula 服务器角色:

  1. 在一台主机上设置 bacula 服务器
  2. [对于每个客户端] 将服务器的客户端配置文件复制到服务器
  3. [对于每个客户端] 将客户端的客户端配置文件复制到客户端

现在我遇到的问题是host_varsand group_vars。我希望能够让我的所有[debian]主机(这是一个组)使用这个角色。所以我的剧本看起来像这样:

- hosts: debian
  roles:
    - bacula
  tags:
    - bacula

因此,当触发此角色时,它应该执行以下操作:

  1. 一台主机显然必须是服务器,因此如果在服务器主机上播放,这台主机将获得完整的 bacula 服务器配置。
  2. 如果此角色应用于所有其他客户端,则应发生以下情况:
    1. (当前主机debian-client):将配置复制到debian-client
    2. (当前主机debian-client):将配置复制到debian-server

知道我该怎么做吗?


对我来说这真的很难解释,所以如果上述任何内容不清楚,请告诉我,以便我更清楚。

更新:

感谢@Konstantin Suvorovdelegate_to回答:https ://docs.ansible.com/ansible/playbooks_delegation.html#delegation

bacula ansible
  • 1 1 个回答
  • 485 Views

1 个回答

  • Voted
  1. Best Answer
    Konstantin Suvorov
    2017-02-11T11:49:23+08:002017-02-11T11:49:23+08:00

    像这样的东西,例如:

    存货:

    [debian]
    host1
    host2
    host3 bacula_role=server
    host4
    host5
    

    玩:

    - hosts: debian
      vars:
        bacula_server: "{{ (ansible_play_hosts | map('extract',hostvars) | selectattr('bacula_role','defined') | selectattr('bacula_role','equalto','server') | first).inventory_hostname }}"
      tasks:
        - debug: msg="Install server"
          when: inventory_hostname == bacula_server
    
          # client block
        - block:
            - debug: msg="Template server-side client config"
              delegate_to: bacula_server
    
            - debug: msg="Template client config"
    
          when: inventory_hostname != bacula_server
          # end of block
    

    用一些真实的模块(例如/ )替换debug语句,如果没有存在的主机,则添加一些错误处理。apttemplatebacula_role=server

    如果您有许多任务要安装服务器/客户端,您可以将它们拆分为bacula_server.yml和bacula_client.yml不when包含语句,但将它们包含在:

    - include: "bacula_{{ bacula_role | default('client') }}.yml"
    
    • 2

相关问题

  • Bareos 备份所有文件,尽管有自定义文件集

  • Amanda、Bacula、BackupPC 哪个有可靠的 windows 客户端?

  • 如何在 Bacula 服务器中强制所有卷进入附加模式?

  • 将linux备份到ftp服务器

  • Bacula 胶带更换

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve