Как создать файл локально с помощью шаблонов на машине разработки
Я начинаю с правдоподобным, и я ищу способ создать проект шаблонов на сервере и в локальной среде с помощью загружаемых книжек.
Я хочу использовать доступные шаблоны для создания некоторых общих файлов.
Но как бы я мог сделать что-то локальным?
Я прочитал что-то с 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"