在 ansible 剧本中动态设置 HTTP_PROXY

Dynamicly set HTTP_PROXY in an ansible playbook

我正在 运行 在一堆不需要 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)有代理并且没有改变每个 运行 之间的代码(因此设​​法用库存变量做到这一点)。

我愿意

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

---
- hosts: all
  vars:
    proxy: # default empty
  tasks:    
    - apt: name=cobbler state=installed
      environment:
        http_proxy: "{{ proxy }}"

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

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

atlanta:
  hosts:
    host1:
    host2:
  vars:
    proxy: proxy.atlanta.example.com

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

对于任何想知道的人,您也可以通过以下命令行进行设置:

ansible-playbook --extra-vars "http_proxy=$http_proxy" ...

已找到