首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将主机从母版剧本传递到包含的剧本

将主机从母版剧本传递到包含的剧本
EN

Server Fault用户
提问于 2015-06-09 14:54:19
回答 1查看 1.4K关注 0票数 0

我如何将主机从一个主游戏手册传递给一个包含的剧本?

我正在尝试为一种类型的服务器(例如,web服务器)创建一个主游戏本,它与其他类型的服务器(例如网关服务器、数据库服务器等)共享一些常见的剧本。我在Ubuntu14.04上运行Ansible 1.9.1。

库存档案是:

代码语言:javascript
复制
[web-servers]
192.168.0.217

[db-servers]
192.168.0.218

主游戏手册部署-web-servers.yml是:

代码语言:javascript
复制
---
- hosts: web-servers
  tasks:
    - debug: var=hostvars

- include: setup-common.yml
  vars:
    server: "{{ hostvars['inventory_hostname'] }}"

所包含的剧本设置-Common.yml是:

代码语言:javascript
复制
---
- hosts: "{{ server }}" 
  tasks:
    - debug: var=server

当我使用以下命令运行该命令时:

代码语言:javascript
复制
ansible-playbook deploy-web-servers.yml -i inventory

它的产出如下:

代码语言:javascript
复制
PLAY [web-servers] ************************************************************ 

TASK: [debug var=hostvars] **************************************************** 
ok: [192.168.0.217] => {
    "var": {
        "hostvars": {
            "group_names": [
                "web-servers"
            ],
            "groups": {
                "all": [
                    "192.168.0.218",
                    "192.168.0.217"
                ],
                "db-servers": [
                    "192.168.0.218"
                ],
                "ungrouped": [],
                "web-servers": [
                    "192.168.0.217"
                ]
            },
            "inventory_hostname": "192.168.0.217",
            "inventory_hostname_short": "192"
        }
    }
}

PLAY [{{ hostvars['inventory_hostname'] }}] *********************************** 
skipping: no hosts matched

PLAY RECAP ******************************************************************** 
192.168.0.217              : ok=1    changed=0    unreachable=0    failed=0   

所包含的剧本安装程序-Common.yml从未运行,因为主机没有如行所示成功转发:

代码语言:javascript
复制
PLAY [{{ hostvars['inventory_hostname'] }}] *********************************** 
skipping: no hosts matched

我如何将主机转发到包含的剧本?

EN

回答 1

Server Fault用户

发布于 2015-06-09 16:13:40

问题是:

代码语言:javascript
复制
- include: setup-common.yml
  vars:
    server: "{{ hostvars['inventory_hostname'] }}"

您根本不需要指定这个变量,也不应该尝试在另一个剧本中使用它。默认情况下,剧本将为它指定的所有主机运行。所以不要这么做,只要写一本普通的剧本。

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

https://serverfault.com/questions/697666

复制
相关文章

相似问题

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