我如何将主机从一个主游戏手册传递给一个包含的剧本?
我正在尝试为一种类型的服务器(例如,web服务器)创建一个主游戏本,它与其他类型的服务器(例如网关服务器、数据库服务器等)共享一些常见的剧本。我在Ubuntu14.04上运行Ansible 1.9.1。
库存档案是:
[web-servers]
192.168.0.217
[db-servers]
192.168.0.218主游戏手册部署-web-servers.yml是:
---
- hosts: web-servers
tasks:
- debug: var=hostvars
- include: setup-common.yml
vars:
server: "{{ hostvars['inventory_hostname'] }}"所包含的剧本设置-Common.yml是:
---
- hosts: "{{ server }}"
tasks:
- debug: var=server当我使用以下命令运行该命令时:
ansible-playbook deploy-web-servers.yml -i inventory它的产出如下:
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从未运行,因为主机没有如行所示成功转发:
PLAY [{{ hostvars['inventory_hostname'] }}] ***********************************
skipping: no hosts matched我如何将主机转发到包含的剧本?
发布于 2015-06-09 16:13:40
问题是:
- include: setup-common.yml
vars:
server: "{{ hostvars['inventory_hostname'] }}"您根本不需要指定这个变量,也不应该尝试在另一个剧本中使用它。默认情况下,剧本将为它指定的所有主机运行。所以不要这么做,只要写一本普通的剧本。
https://serverfault.com/questions/697666
复制相似问题