我正在尝试将 ansible 从 ssh 模型组织到 pull。之前我有一个这样的设置
group_vars/
all
prod
stage
dev
现在我尝试通过 cron 运行所有程序,因此我尝试了这个设置
staging/
inventory
group_vars/
server
prod/
inventory
group_vars/
server
两者的库存看起来
[server]
localhost ansible_connection=local
对于阶段我的 group_vars 看起来像
---
rails_env: staging
我有一个例子
- hosts: server
user: root
sudo: no
gather_facts: True
tasks:
- debug: msg="reading from {{ rails_env }}"
我的运行输出是
# ansible-playbook -i staging test.yml
PLAY [server] *****************************************************************
GATHERING FACTS ***************************************************************
ok: [localhost]
TASK: [debug msg="reading from {{ rails_env }}"] ******************************
fatal: [localhost] => One or more undefined variables: 'rails_env' is undefined
FATAL: all hosts have already failed -- aborting
PLAY RECAP ********************************************************************
to retry, use: --limit @/root/test.retry
localhost : ok=1 changed=0 unreachable=1 failed=0
不知道我做错了什么,因为它应该能识别出来
答案1
在 1.9 版本中你不能这样做,在稳定版本 2.0.2.0 中也行不通。你应该阅读以下内容:http://docs.ansible.com/ansible/playbooks_best_practices.html。我建议这样运行:
ansible-playbook -i staging/inventory test.yml