首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行时主机之间的不可共享共享变量

运行时主机之间的不可共享共享变量
EN

Stack Overflow用户
提问于 2019-05-01 09:01:10
回答 2查看 394关注 0票数 0

我使用的是ansible 2.5.4,我需要在主机之间共享变量。

我尝试了许多例子

也许我在做一些不同的事情,这是我的剧本:

代码语言:javascript
复制
---
- 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:

代码语言:javascript
复制
[kubernetes_machines:vars]
kube_apiserver=10.82.72.54:6443

[kubernetes_machines:children]
masters
nodes
new

[masters]
srv12

[nodes]
srv13

[new]
prd4
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-01 11:08:17

如果您请求"hostvars['master[0]']",则在引号中包含整个master[0],因此您指的是一个名为master[0]的主机。如果您是指master主机组的第一个成员,则需要一个变量引用,而不是字符串,并且需要使用groups变量(并且需要记住您的主机组名为masters而不是master):

代码语言:javascript
复制
hostvars[groups.masters.0]

您可以找到相关的文档这里

票数 2
EN

Stack Overflow用户

发布于 2019-05-01 09:09:00

引用剧本基础

主机行是一个或多个组或主机模式的列表。

模式与主机名不匹配。如果主机名为master0,那么hostvars引用应该是

代码语言:javascript
复制
hostvars['master0']

还不清楚为什么主机:主工作。它不应该根据文件。主机:master.0.0--应该是相同的--不起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55933857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档