我正在一堆不需要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)启动它,并且每次运行之间不更改代码(因此设法使用广告资源变量来做到这一点。
我会
答案 0 :(得分:0)
您可以结合使用 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
答案 1 :(得分:0)
对于任何想知道的人,您也可以通过命令行使用以下内容进行设置:
start = Text
_ "whitespace"
= [ \t\n\r]*
Text
= _ body:Element? _ {
return {
type: "Text",
body: body || [],
}
}
Element
= _ title:Title _ id:Id _ type:Type _ description:Description _ {
return {
id: id,
title: title,
type: type,
description: description,
}
}
Type
= "[" type: $[^\]]* "]" {
return type;
}
Id
= '{' id: $[^}]* '}' {
return id;
}
Title
= s:$[^.]* '.' _ {return s}
Description
= "(" description: $[^)]* ")" {
return description;
}
发现here