2015-07-13 10 views
10

Zaczynam od ansible i szukam sposobu na stworzenie projektu standardowego na serwerze i na lokalnym środowisku z ansibli na playbooks.Jak utworzyć plik lokalnie z szablonami ansibli na maszynie programistycznej

Chcę używać szablonów ansible w celu utworzenia pewnych ogólnych plików. Ale jak wziąłbym ansible, aby wykonać coś lokalnie?

Czytałem coś z lokalnym stanowiskiem, ale chyba nie zrozumiałem.

To jest dla webbserver ... ale jak mogę to zrobić i utworzyć pliki lokalnie?


- hosts: webservers 
     remote_user: someuser 
- name: create some file 
    template: src=~/workspace/ansible_templates/somefile_template.j2 dest=/etc/somefile/apps-available/someproject.ini 

Odpowiedz

20

można delegować zadania przy param delegate_to do dowolnego hosta chcesz, na przykład:

- name: create some file 
    template: src=~/workspace/ansible_templates/somefile_template.j2 dest=/etc/somefile/apps-available/someproject.ini 
    delegate_to: localhost 

Zobacz Playbook Delegation w docs.

Jeśli Twój poradnik powinien być generalnie uruchamiany lokalnie i nie ma żadnych zewnętrznych hostów, możesz po prostu utworzyć grupę zawierającą localhost, a następnie uruchomić skrypt zabaw dla tej grupy. W magazynie:

[local] 
localhost 

a następnie w Poradniku:

hosts: local 
+0

Thaanks dużo ... ale nie ansibl spróbować ssh do mojego localhost? Błąd SSH: ssh: połącz się z hostem localhost port 22: Odmowa połączenia jest to konieczne? – Jurudocs

+2

Wydaje się, że. Myślałem, że to zmienili i nie musicie wymuszać lokalnego połączenia. Może masz starszą słuchawkę? W każdym razie możesz dodać to do swojego ekwipunku: 'localhost ansible_connection = local' - lub jeśli cały skrypt powinien działać lokalnie, możesz to zrobić tak jak opisano tutaj: https://docs.ansible.com/playbooks_delegation.html#local-playbooks – udondan

+0

dziękuje bardzo! – Jurudocs

9

ansibl ma dyrektywę local_action wspierania tych scenariuszy, które unika localhost i/lub ansible_connection obejścia i jest określone w Delegation docs.

zmodyfikować oryginalny przykład użyć local_action:

- name: create some file 
    local_action: template src=~/workspace/ansible_templates/somefile_template.j2 dest=/etc/somefile/apps-available/someproject.ini 

który wygląda czystsze.

0

Jeśli nie możesz wykonać/zezwolić na SSH localhost, możesz podzielić instrukcję na akcje lokalne i akcje zdalne.

connection: local mówi, aby nie używać SSH dla playbook, jak pokazano poniżej: http://docs.ansible.com/ansible/playbooks_delegation.html#local-playbooks

Przykład:

# myplaybook.yml 

- hosts: remote_machines 
    tasks: 
    - debug: msg="do stuff in the remote machines" 

- hosts: 127.0.0.1 
    connection: local 
    tasks: 
    - debug: msg="ran in local ansible machine" 

- hosts: remote_machines 
    tasks: 
    - debug: msg="do more stuff in remote machines" 
Powiązane problemy