Estoy empezando con ansible y estoy buscando una forma de crear una plantilla de proyecto en el servidor y en el medio ambiente local con ansible playbooks.

Quiero usar ansible plantillas a nivel local para crear algunos genérico de archivos.
Pero, ¿cómo iba yo a tomar ansible para ejecutar algo a nivel local?

He leído algo con local_action pero creo que no obtener este derecho.

Esto es para el webbserver…pero, ¿cómo puedo hacer esto y crea algunos archivos de forma local?


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

OriginalEl autor Jurudocs | 2015-07-13

3 Comentarios

  1. 26

    Puede delegar tareas con el param delegate_to a cualquier host que desee, como por ejemplo:

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

    Ver Playbook Delegación en los docs.

    Si su playbook debe, en general, ejecutar localmente y no hosts externos están involucrados, sin embargo, usted puede simplemente crear un grupo que contiene localhost y, a continuación, ejecute el playbook en contra de este grupo. En su inventario:

    [local]
    localhost
    

    y, a continuación, en su playbook:

    hosts: local
    
    Thaanks mucho…pero no ansible tratar de ssh en mi localhost? tengo SSH Error: ssh: conectar al host localhost en el puerto 22: Connection refused es esto necesario?
    Parece que. Pensé que cambiaron de que y usted no tiene que forzar la conexión local. Tal vez usted tiene un mayor Ansible? De todos modos, puede agregar esto a tu inventario: localhost ansible_connection=local – o si toda la playbook se debe ejecutar localmente puede como se describe a continuación: docs.ansible.com/playbooks_delegation.html#local-playbooks
    funciona muchas gracias!

    OriginalEl autor udondan

  2. 11

    Ansible tiene un local_action directiva para apoyar a estos escenarios con los que se evita la localhost y/o ansible_connection de soluciones y está cubierto en la Delegación docs.

    A modificar su original ejemplo de uso de local_action:

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

    que se ve más limpio.

    OriginalEl autor stacyhorton

  3. 1

    Si usted no puede hacer/allow localhost SSH, se puede dividir el libro de jugadas en las acciones locales y remotos acciones.

    La connection: local dice no utilizar SSH para un libro de jugadas, como se muestra aquí: http://docs.ansible.com/ansible/playbooks_delegation.html#local-playbooks

    Ejemplo:

    # 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"
    
    Esta solución debe ser aceptada como correcta. Las otras dos propuestas de trabajo a nivel local, pero todavía requieren de ssh. No tiene ningún sentido.

    OriginalEl autor alanjds

Dejar respuesta

Please enter your comment!
Please enter your name here