web-dev-qa-db-fra.com

Comment créer un fichier localement avec des modèles ansible sur la machine de développement

Je débute avec ansible et je cherche un moyen de créer un projet passe-partout sur le serveur et sur l'environnement local avec des playbooks ansible.

Je veux utiliser des modèles ansible localement pour créer des fichiers génériques. Mais comment pourrais-je prendre ansible pour exécuter quelque chose localement?

J'ai lu quelque chose avec local_action mais je suppose que je n'ai pas bien compris.

C'est pour le webbserver ... mais comment puis-je prendre cela et créer des fichiers localement?


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

Vous pouvez déléguer des tâches avec le paramètre delegate_to à tout hôte que vous aimez, par exemple:

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

Voir Délégation Playbook dans les documents.

Si votre playbook doit en général s'exécuter localement et qu'aucun hôte externe n'est impliqué, vous pouvez simplement créer un groupe qui contient localhost, puis exécuter le playbook sur ce groupe. Dans votre inventaire:

[local]
localhost

puis dans votre playbook:

hosts: local
31
udondan

Ansible a un local_action directive pour prendre en charge ces scénarios, ce qui évite les localhost et/ou ansible_connection solutions de contournement et est couvert dans les documents Délégation .

Pour modifier votre exemple d'origine pour utiliser local_action:

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

qui semble plus propre.

15
stacyhorton

Si vous ne pouvez pas faire/autoriser SSH localhost, vous pouvez diviser le playbook sur les actions locales et les actions distantes.

Le connection: local dit de ne pas utiliser SSH pour un playbook, comme indiqué ici: http://docs.ansible.com/ansible/playbooks_delegation.html#local-playbooks

Exemple:

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