ansible在运行时在主机之间共享变量
我正在使用ansible 2.5.4,需要在主机之间共享变量 我尝试了许多我在网上看到的例子(与set_fact共享或使用虚拟主机),但都不起作用 也许我在做一些不同的事情, 这是我的剧本:ansible在运行时在主机之间共享变量,ansible,Ansible,我正在使用ansible 2.5.4,需要在主机之间共享变量 我尝试了许多我在网上看到的例子(与set_fact共享或使用虚拟主机),但都不起作用 也许我在做一些不同的事情, 这是我的剧本: --- - hosts: master[0] tasks: - name: generate kubernetes BootrapToken command: kubeadm token generate register: generate_token_result - se
---
- hosts: master[0]
tasks:
- name: generate kubernetes BootrapToken
command: kubeadm token generate
register: generate_token_result
- set_fact: token="{{generate_token_result}}"
- hosts: new # requires creating new group in inventory.cfg named new
tasks:
- name: include docker-host role
include_role:
name: docker-host
when: not skip_nodes_setup
- name: include kubernetes-host role
include_role:
name: kubernetes-host
when: not skip_nodes_setup
- name: include kubernetes-operator role
include_role:
name: kubernetes-operator
when: not skip_nodes_setup
- name: join node to kubernetes cluster
command: "kubeadm join --token {{ hostvars['master[0]']['token']['stdout'] }} --discovery-token-unsafe-skip-ca-verification {{ hostvars['kubernetes_machines']['kube_apiserver'] }}"
我得到以下错误:
该任务包括一个带有未定义变量的选项。错误是:“hostvars['master[0]']”未定义
第一个任务可以在主机[0]上运行,但第二个任务无法识别该主机
请帮忙
谢谢
添加inventory.cfg:
[kubernetes_machines:vars]
kube_apiserver=10.82.72.54:6443
[kubernetes_machines:children]
masters
nodes
new
[masters]
srv12
[nodes]
srv13
[new]
prd4
引用
主机行是一个或多个组或主机模式的列表
模式主机[0]与主机名主机[0]不匹配。如果主机名为master0,则hostvars引用应为
hostvars['master0']
不清楚为什么主机:主机[0]起作用。根据文件规定,不应将其删除hosts:master.0应该相同的主机不起作用。引用
主机行是一个或多个组或主机模式的列表
模式主机[0]与主机名主机[0]不匹配。如果主机名为master0,则hostvars引用应为
hostvars['master0']
不清楚为什么主机:主机[0]起作用。根据文件规定,不应将其删除hosts:master.0应该相同的主机不起作用。如果您要求使用“hostvars['master[0]]”
,那么您在引号中包含了整个master[0]
,因此您指的主机的文字名称是master[0]
。如果您是指master
主机组的第一个成员,那么您需要一个变量引用,而不是字符串,并且您需要使用groups
变量(您需要记住您的主机组名为masters
而不是master
):
您可以找到相关的文档。如果您要求提供“主机名['master[0]]”
,您已经得到了整个master[0]
内引号,因此您指的是具有字面名称master[0]
的主机。如果您是指master
主机组的第一个成员,那么您需要一个变量引用,而不是字符串,并且您需要使用groups
变量(您需要记住您的主机组名为masters
而不是master
):
您可以找到相关文档。发布清单。我添加了清单
-hosts:master[0]
可能masters
,因为清单中没有master
。@eran主机:master[0]无法使用此清单。发布清单。我添加了清单-hosts:master[0]
可能masters
,由于清单中没有主机
。@eran主机:主机[0]无法使用此清单。它应该是清单的主机组中的第一个主机。它应该是清单的主机组中的第一个主机