Spec-Zone.ru › Ansible 2.7

Настройка среды (и работа с прокси)

Новое в версии 1.1.

Вполне возможно, что вам потребуется получать обновления пакетов через прокси или даже получать некоторые обновления пакетов через прокси и обращаться к другим пакетам не через прокси. Или, может быть, сценарий, который вы хотите вызвать, также потребует установки определённых переменных среды для правильной работы.

Ansible упрощает настройку вашей среды, используя ключевое слово ‘environment’. Вот пример:

- hosts: all
  remote_user: root

  tasks:

    - apt: name=cobbler state=installed
      environment:
        http_proxy: http://proxy.example.com:8080

Среду также можно хранить в переменной и обращаться к ней следующим образом:

- hosts: all
  remote_user: root

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

  tasks:

    - apt: name=cobbler state=installed
      environment: "{{proxy_env}}"

Вы также можете использовать её на уровне выполнения:

- hosts: testhost

  roles:
     - php
     - nginx

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

Хотя выше были показаны только настройки прокси, можно указать любое количество настроек. Наиболее логичным местом для определения хэша среды является файл 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

Работа с менеджерами версий для конкретных языков

Некоторые менеджеры версий для конкретных языков (такие как rbenv и nvm) требуют установки переменных среды во время использования этих инструментов. При ручном использовании этих инструментов обычно требуется получить доступ к переменным среды через скрипт или добавление строк в ваш конфигурационный файл оболочки. В Ansible вы можете вместо этого использовать директиву environment:

---
### 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
    stat:
      path: '{{ node_app_dir }}/package.json'
    register: packagejson

  - name: npm prune
    command: npm prune
    args:
      chdir: '{{ node_app_dir }}'
    when: packagejson.stat.exists

  - name: npm install
    npm:
      path: '{{ node_app_dir }}'
    when: packagejson.stat.exists

Вы также можете просто указать среду для отдельной задачи:

---
- name: install ruby 2.3.1
  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 }}'

Примечание

environment: в настоящее время не поддерживается для целей Windows

См. также

Работа с Playbook
Введение в Playbook
Список рассылки пользователей
У вас есть вопрос? Зайдите на группу Google!
irc.freenode.net
Канал IRC #ansible

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.7/user_guide/playbooks_environment.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API