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