我需要将shell
的输出输出到set_fact
中ansible
的变量中。并且此变量在同一playbook
中的某个位置被引用,但定位到另一组主机
但是我不确定该怎么做。
这是我的playbook
:
---
- hosts: kube-master
tasks:
- name: Print the value
become: true
shell: |
echo "hi"
set_fact:
banuka: <value-taken-from-above-shell-command>
- hosts: kube-minions
tasks:
- name: Print the variable
become: true
shell: |
echo {{banuka}}
但是我不知道这些:
1。如何将Shell命令输出输出到set_fact
中的变量并在某处引用
2。是否可以有多个主机(如以上剧本所示)
答案 0 :(得分:1)
我将通过以下方式进行操作:
---
- hosts: master01
tasks:
- name: Print the value
shell: |
echo "hi"
register: somevariablename
- name: set fact
set_fact:
myvar: "{{ somevariablename.stdout }}"
- hosts: kube-minions
tasks:
- name: Print the variable
shell: |
echo "{{ hostvars['master01'].myvar }}"
很重要的一点是,set_fact
仅在执行它的主机上设置一个变量。由于您有一个kube-master
组,因此可以在每个组上执行。我在Kubernetes-Masters的一本剧本中遇到了相同的问题,我将其中一个用作“主要”等式。 master01
。然后echo hi
将仅在该命令上执行。
在第二个主机组中,您必须像master01一样引用kube-master主机的hostvar。
您是否需要运行kube-master
组中的所有主机?