【问题标题】:Dynamicly set HTTP_PROXY in an ansible playbook在 ansible playbook 中动态设置 HTTP_PROXY
【发布时间】:2018-12-03 10:12:14
【问题描述】:

我在一堆不需要 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)并且不更改每次运行之间的代码(所以设法使用库存变量来做到这一点)。

我愿意

【问题讨论】:

  • 您能举个例子吗?谁以及何时需要 http_proxy 以及用于什么目的?如果你的问题更精确一点会很棒。

标签: proxy ansible http-proxy


【解决方案1】:

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

---
- 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

【讨论】:

  • 您好,我会测试您的解决方案。谢谢!
  • 不客气。如果这是解决方案,请给我一个赞成票。 :-)
【解决方案2】:

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

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

如发现here

【讨论】:

    猜你喜欢
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    相关资源
    最近更新 更多