Как создать файл локально с помощью шаблонов на машине разработки

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

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

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

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


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

Ответ 1

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

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

См. Делегирование книг в документах.

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

[local]
localhost

а затем в вашем плейбуке:

hosts: local

Ответ 2

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

Чтобы изменить исходный пример, используйте local_action:

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

который выглядит более чистым.

Ответ 3

Если вы не можете сделать/разрешить локальную 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"