Как создать файл локально с ansible шаблонами на машине разработки

Я начинаю с ansible, и я ищу способ создать шаблонный проект на сервере и в локальной среде с помощью Ansible playbooks.

Я хочу использовать Ansible шаблоны локально для создания некоторых общих файлов. Но как я могу взять ansible, чтобы выполнить что-то локально?

Я читал что-то с local_action, но я думаю, что я не понял это правильно.

Это для webbserver...но как я могу взять это и создать некоторые файлы локально?


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

3 ответов


вы можете делегировать задачи с помощью param delegate_to любому хосту, который вам нравится, например:

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

посмотреть Playbook Делегирование в документации.

если ваш playbook должен в целом работать локально и никакие внешние хосты не участвуют, хотя, вы можете просто создать группу, которая содержит localhost а затем запустите playbook против этой группы. В вашем инвентаре:

[local]
localhost

и затем в вашем playbook:

hosts: local

Ansible имеет local_action директива для поддержки этих сценариев, которая позволяет избежать localhost и/или ansible_connection обходные пути и покрывается делегация документы.

чтобы изменить исходный пример для использования local_action:

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

, который выглядит чище.


Если вы не можете сделать/разрешить localhost SSH, вы можете разделить playbook на локальные действия и удаленные действия.

на connection: local говорит не использовать SSH для playbook, как показано здесь:http://docs.ansible.com/ansible/playbooks_delegation.html#local-playbooks

пример:

# 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"