【问题标题】:How to run Playbook for multiple servers/host in same environment如何在同一环境中为多个服务器/主机运行 Playbook
【发布时间】:2020-03-26 10:41:29
【问题描述】:

我正在编写一个 Ansible 剧本,我需要在我的 preprod 环境中运行它。现在在这个环境上部署有点棘手。有多个战争部署在多个服务器上。该环境由 4 个不同的应用程序和服务器组成,部署需要按顺序完成 -。 我也在考虑使用角色。例如,假设有 3 个任务复制发布、停止 tomcat、部署发布,那么将有三个单独的角色执行此活动。

cms-服务器 数据库服务器 前端服务器 api服务器。

我想了解如何为此建立库存?我正在使用 group_vars 为特定组定义一组变量。

有人可以帮忙吗?

【问题讨论】:

    标签: ansible ansible-inventory


    【解决方案1】:

    这样的东西对你有用吗?

    preprod:
      children: 
        cms-server: 
          hosts: 
            serv1
            serv2
        db-server:
          hosts:
            serv3
        front-server:
          hosts:
            serv4
        api-server:
            serv5
            serv6
    

    这里的“children”表示以下是子组。 “主机”用于子组内的主机。

    然后,您可以为每个组(将应用于该组内的任何主机)或 preprod 组拥有 groups_vars 文件,这可能允许您在将来为 prod 或 dev 环境复制此文件。

    如果您决定遵循这一点,我建议您重命名您的组名并在服务器上添加一个“s”。

    【讨论】:

    • 感谢您的快速回复,但我有一些疑问。我的主要 yml 如下所示,而我从命令行传递的 target_env 。现在这个目标环境可以是 preprod、prod 等。在 group_vars 中,我可以只拥有 preprod.yml 或 prod.yml 并且我在其中定义所有主机的所有变量。那会奏效吗?例如 - /group_vars/preprod.yml, /group_var/prod.yml 请提供您的看法--- # file: main.yml - name: Deploy Application to tomcat nodes hosts: '{{ target_env }}' roles: - role: repodownload tags: - repodownload -
    • 如果我正确理解您的问题,我会说它可能会起作用。解决这个问题的另一种方法是拥有 2 个剧本,用不同的主机(prod 和 preprod)调用相同的角色。我也看到了另一种选择,它是有一个带有两个主机块和角色调用的剧本,并添加一个when 条件,例如when 'preprod' in target_env docs.ansible.com/ansible/latest/user_guide/…
    • 嗨,布鲁诺,当条件可以提供帮助时。可能是我没有把它放在正确的方式。让我重新表述一下。我已经发布了另一个 - stackoverflow.com/questions/60884419/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多