在 ansible playbook 中动态设置 HTTP_PROXY

Syl*_*aux 3 proxy http-proxy ansible

我正在一堆不需要 http_proxy 的服务器和其他需要它的服务器上运行剧本(在不同的运行中)。

我已经阅读了https://docs.ansible.com/ansible/latest/user_guide/playbooks_environment.html但它并没有真正回答这个问题......

这是一个例子:

- hosts: all tasks: - name: install vi become: true apt: name: vi state: present

我想在没有代理的情况下使用一组服务器(假设 server01-atlanta)启动它,并在另一个运行中使用一组服务器(假设 server01-berlin)使用代理启动它,并且不更改每次运行之间的代码(因此设​​法用库存变量来做)。

我会

小智 6

您可以使用group_vars / host_vars结合环境变量来解决这个问题。她是一个基于 ansible 文档中的代码的简单示例。

---
- hosts: all
  vars:
    proxy: # default empty
  tasks:    
    - apt: name=cobbler state=installed
      environment:
        http_proxy: "{{ proxy }}"
Run Code Online (Sandbox Code Playgroud)

这就是您为每个任务定义环境变量的方式。您也可以为此使用正常的 ansible 变量。文档中还有一个包含代理设置和变量的示例。请参阅:https : //docs.ansible.com/ansible/latest/user_guide/playbooks_environment.html

在您的清单中,您可以为每个主机或组定义代理变量:

atlanta:
  hosts:
    host1:
    host2:
  vars:
    proxy: proxy.atlanta.example.com
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅库存文档:https : //docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#host-variables