在Ansible上设置环境变量

在Ansible上设置环境变量,ansible,ansible-playbook,Ansible,Ansible Playbook,我想从ansible剧本中设置(并保持)一个环境变量。我写道: # Set the JVM ram - name: Set the JVM ram environment: ES_HEAP_SIZE: 2g 然而,我得到: 错误:“任务”中缺少“操作”或“本地_操作”属性设置 JVM ram“ environment标记不是任务,而是可以应用于单个任务或全局应用的属性。根据需要,您只需在剧本顶部指定类似的内容: --- environment: ES_HEAP_SIZE:

我想从ansible剧本中设置(并保持)一个环境变量。我写道:

# Set the JVM ram
- name: Set the JVM ram
  environment:
    ES_HEAP_SIZE: 2g
然而,我得到:

错误:“任务”中缺少“操作”或“本地_操作”属性设置 JVM ram“


environment
标记不是任务,而是可以应用于单个任务或全局应用的属性。根据需要,您只需在剧本顶部指定类似的内容:

---

environment:
    ES_HEAP_SIZE: 2g

请注意,这与您指定的不同,因为
-name
指定单个任务的开始,上面的示例只是在顶层定义一个dict,ansible在处理任务之前将其解释并应用为环境变量。

您的想法是正确的。但是你错过了你的“行动”;每个任务都需要一个。如果您执行此操作(但仅限于此任务),您的
环境设置将起作用/适用:


elasticsearch被定义为系统服务。我不能那样发射,没关系。我只是把它作为一个示例命令。你一定有东西要跑。或者,您可以将任务设置为一个
lineinfle
,将其放入一个rc/environment文件中。
# Set the JVM ram
- name: Set the JVM ram
  command: ./bin/elasticsearch  # now using envvar instead of -Xmx10g -Xms10g 
  environment:
    ES_HEAP_SIZE: 2g
  # OR
  #environment: {ES_HEAP_SIZE: 2g}