我的剧本和存货很少,我需要从2个不同的位置运行它们。
一个需要一个主持人,另一个不需要。
我已经在清单中定义了Jumphost,但是当尝试在本地的Playbook上运行该剧本时(不需要JumpHost)将会失败。
有没有一种方法可以根据主机名加载与SSH相关的var?
答案 0 :(得分:-1)
如果您只需要在本地主机上运行内容,则可以执行特定任务:
尝试local_action。例如:
- name: copy file
local_action:
module: copy
src: stfile
dest: /path/to/testfile
或者您可以使用proxy_to:
- name: copy a file
delegate_to: localhost
copy:
src: testfile
dest: /path/to/testfile
编辑:好的,看来我误解了您的问题。您的问题似乎是您是在两个不同的主机上运行剧本,一个运行正常,一个运行失败,因此您需要一些逻辑来根据主机选择不同的变量?
您可以使用when条件将逻辑包括在任务中:
- name: get ansible hostname
local_action:
module: shell
cmd: hostname
register: hostname_output
- shell: echo '{{variablefornonjumpbox}}'
when: hostname_output.stdout.find('jumpbox') != -1"
如果您需要基于主机名更改SSH目标和详细信息,则可以使用特殊变量,例如本页底部的变量: https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html
希望这会有所帮助。如果没有,我将需要澄清所使用的变量和看到的错误。