我使用的是ansible 2.5.4,我需要在主机之间共享变量。
我尝试了许多例子
也许我在做一些不同的事情,这是我的剧本:
---
- 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']“未定义
第一个任务能够在主服务器上运行,但第二个任务不识别该主机。
请帮帮忙。
谢谢
添加inventory.cfg:
[kubernetes_machines:vars]
kube_apiserver=10.82.72.54:6443
[kubernetes_machines:children]
masters
nodes
new
[masters]
srv12
[nodes]
srv13
[new]
prd4发布于 2019-05-01 11:08:17
如果您请求"hostvars['master[0]']",则在引号中包含整个master[0],因此您指的是一个名为master[0]的主机。如果您是指master主机组的第一个成员,则需要一个变量引用,而不是字符串,并且需要使用groups变量(并且需要记住您的主机组名为masters而不是master):
hostvars[groups.masters.0]您可以找到相关的文档这里。
发布于 2019-05-01 09:09:00
引用剧本基础
主机行是一个或多个组或主机模式的列表。
模式主与主机名主不匹配。如果主机名为master0,那么hostvars引用应该是
hostvars['master0']还不清楚为什么主机:主工作。它不应该根据文件。主机:master.0.0--应该是相同的--不起作用。
https://stackoverflow.com/questions/55933857
复制相似问题