我有幾個ansible
劇本,有時在本地環境中有意義,否則它們是遠程執行的。爲了做到這一點我用delegate_to
指令,但是這也意味着我不得不把所有的任務,例如:Ansible有條件delegate_to本地或遠程?
---
- hosts: all
gather_facts: no
tasks:
- name: Local command
command: hostname
register: target_host
when: vhost is undefined
delegate_to: 127.0.0.1
# ---
- name: Remote command
command: hostname
register: target_host
when: vhost is defined
Exec的本地翻番:
$ ansible-playbook -i inv.d/test.ini play.d/delegate.yml
PLAY [all] ********************************************************************
TASK: [Local command] *********************************************************
changed: [new-server -> 127.0.0.1]
TASK: [Remote command] ********************************************************
skipping: [new-server]
PLAY RECAP ********************************************************************
new-server : ok=1 changed=1 unreachable=0 failed=0
Exec的遙控器:
$ ansible-playbook -i inv.d/test.ini play.d/delegate.yml -e vhost=y
PLAY [all] ********************************************************************
TASK: [Local command] *********************************************************
skipping: [new-server]
TASK: [Remote command] ********************************************************
changed: [new-server]
PLAY RECAP ********************************************************************
new-server : ok=1 changed=1 unreachable=0 failed=0
有沒有更智能的方法來告訴ansible
何時回退到當地環境?目前我正在使用ansible==1.9.2
。
會起作用:'connection:「{{'ansible_host'| default('local')}}」'? [Docs](http://docs.ansible.com/ansible/intro_inventory.html#non-ssh-connection-types)似乎不明確,'ansible_host'被定義爲'要連接到的Docker容器的名稱'。我願意這只是文檔中的錯誤。 –
我會在清單文件中設置連接,如本節底部所述:http://docs.ansible.com/ansible/intro_inventory.html#hosts-and-groups – udondan
'localhost ansible_connection = local' – udondan