Как создать файл локально с 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"