Nuevo en la versión 1.1.

Puedes usar el environment palabra clave a nivel de juego, bloque o tarea para establecer una variable de entorno para una acción en un host remoto. Con esta palabra clave, puede habilitar el uso de un proxy para una tarea que realiza solicitudes http, establecer las variables de entorno necesarias para los administradores de versiones específicos del idioma y más.

Cuando establece un valor con environment: en el nivel de juego o bloque, está disponible solo para tareas dentro del juego o bloque que son ejecutadas por el mismo usuario. El environment: La palabra clave no afecta a Ansible en sí, los ajustes de configuración de Ansible, el entorno para otros usuarios o la ejecución de otros complementos como búsquedas y filtros. Variables establecidas con environment: no se conviertan automáticamente en hechos de Ansible, incluso cuando los establezca en el nivel de juego. Debes incluir un explícito gather_facts tarea en su libro de jugadas y establezca el environment palabra clave en esa tarea para convertir estos valores en hechos de Ansible.

Configurar el entorno remoto en una tarea

Puede configurar el entorno directamente en el nivel de la tarea:

- hosts: all
  remote_user: root

  tasks:

    - name: Install cobbler
      ansible.builtin.package:
        name: cobbler
        state: present
      environment:
        http_proxy: http://proxy.example.com:8080

Puede reutilizar la configuración del entorno definiéndolas como variables en su juego y accediendo a ellas en una tarea como accedería a cualquier variable Ansible almacenada:

- hosts: all
  remote_user: root

  # create a variable named "proxy_env" that is a dictionary
  vars:
    proxy_env:
      http_proxy: http://proxy.example.com:8080

  tasks:

    - name: Install cobbler
      ansible.builtin.package:
        name: cobbler
        state: present
      environment: " proxy_env "

Puede almacenar la configuración del entorno para reutilizarla en varios libros de jugadas definiéndola en un archivo group_vars:

---
# file: group_vars/boston

ntp_server: ntp.bos.example.com
backup: bak.bos.example.com
proxy_env:
  http_proxy: http://proxy.bos.example.com:8080
  https_proxy: http://proxy.bos.example.com:8080

Puede configurar el entorno remoto en el nivel de juego:

- hosts: testing

  roles:
     - php
     - nginx

  environment:
    http_proxy: http://proxy.example.com:8080

Estos ejemplos muestran la configuración del proxy, pero puede proporcionar cualquier número de configuraciones de esta manera.

Algunos administradores de versiones específicos del idioma (como rbenv y nvm) requieren que establezca variables de entorno mientras estas herramientas están en uso. Cuando usa estas herramientas manualmente, generalmente obtiene algunas variables de entorno de un script o de líneas agregadas a su archivo de configuración de shell. En Ansible, puede hacer esto con la palabra clave de entorno en el nivel de juego:

---
### A playbook demonstrating a common npm workflow:
# - Check for package.json in the application directory
# - If package.json exists:
#   * Run npm prune
#   * Run npm install

- hosts: application
  become: false

  vars:
    node_app_dir: /var/local/my_node_app

  environment:
    NVM_DIR: /var/local/nvm
    PATH: /var/local/nvm/versions/node/v4.2.1/bin: ansible_env.PATH 

  tasks:
  - name: Check for package.json
    ansible.builtin.stat:
      path: ' node_app_dir /package.json'
    register: packagejson

  - name: Run npm prune
    ansible.builtin.command: npm prune
    args:
      chdir: ' node_app_dir '
    when: packagejson.stat.exists

  - name: Run npm install
    community.general.npm:
      path: ' node_app_dir '
    when: packagejson.stat.exists

Nota

El ejemplo anterior usa ansible_env como parte del PATH. Basando variables en ansible_env es arriesgado. Ansible puebla ansible_env valores mediante la recopilación de hechos, por lo que el valor de las variables depende del remote_user o Become_user que Ansible utilizó al recopilar esos hechos. Si cambia remote_user / Become_user los valores en ansible-env puede que no sean los que esperabas.

Advertencia

Las variables de entorno normalmente se pasan en texto sin cifrar (depende del complemento de shell), por lo que no son una forma recomendada de pasar secretos al módulo que se está ejecutando.

También puede especificar el entorno a nivel de tarea:

---
- name: Install ruby 2.3.1
  ansible.builtin.command: rbenv install  rbenv_ruby_version 
  args:
    creates: ' rbenv_root /versions/ rbenv_ruby_version /bin/ruby'
  vars:
    rbenv_root: /usr/local/rbenv
    rbenv_ruby_version: 2.3.1
  environment:
    CONFIGURE_OPTS: '--disable-install-doc'
    RBENV_ROOT: ' rbenv_root '
    PATH: ' rbenv_root /bin: rbenv_root /shims: rbenv_plugins /ruby-build/bin: ansible_env.PATH '

Ver también

Introducción a los libros de jugadas

Introducción a los libros de jugadas

Lista de correo de usuarios

¿Tengo una pregunta? ¡Pasa por el grupo de google!

irc.freenode.net

#ansible canal de chat de IRC