Este equipo de trabajo ha estado horas buscando para darle respuesta a tu interrogante, te compartimos la resolución de modo que deseamos resultarte de gran ayuda.
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
Si conservas algún enigma o disposición de aclararse nuestro escrito puedes dejar una explicación y con mucho gusto lo interpretaremos.