如何在Ansible剧本中动态更改主机

问题描述 投票:0回答:1

我需要在Ansible剧本中动态更改主机

下面是我的示例剧本

---
- name: Deployment Playbook  
  hosts:  “{{Servers}}”
  tasks:
    - name: deployment   
      shell: "deploy.sh {{DEPLOY_NAME}}"  

在上面的游戏中,我需要根据DEPLOY_NAME更改服务器

示例

如果{{DEPLOY_NAME}} = APP

THEN {{Servers}} = 172.17.65.17

如果{{DEPLOY_NAME}} = SCRIPT

THEN {{Servers}} = 172.17.65.66

[以前,我们将此作为AWX的清单传递给我们。但是现在我们需要在剧本上进行处理。

所以请在这个问题上帮助我

ansible devops ansible-2.x ansible-awx
1个回答
0
投票

我认为您无法做到。我认为这可能对您有用,而是改为执行此操作:

---
- name: Deployment Playbook  
  hosts:  localhost
  tasks:
    - name: deployment   
      shell: ssh root@{{ item.server }} deploy.sh {{ item.app }}
      loop:
        - { server: 'server1', app: 'app_1' }
        - { server: 'server1', app: 'app_1' }

您甚至可以通过使用“ awx中的清单”,将其加载为包含该列表的“ vars_files”,来改善此状况。因此,您的最终循环将遍历该列表。像这样:

---
- name: Deployment Playbook  
  hosts:  localhost

  vars_files:
    - your_list_file.yml

  tasks:
    - name: deployment   
      shell: ssh root@{{ item.server }} deploy.sh {{ item.app }}
      loop: "{{ your_list_variable }}"
© www.soinside.com 2019 - 2024. All rights reserved.