LINUX.ORG.RU
решено ФорумAdmin

В ansible не выполняется команда source tutorial-env/bin/activate

 ,


0

1

Здравствуйте!

В плэйбуке выглядит так:

  - name: environment activate
    shell: source tutorial-env/bin/activate

Ответ:

«stderr»: «/bin/sh: 1: source: not found»

Если сделать так:

command: source tutorial-env/bin/activate

То ответ будет:

«msg»: «[Errno 2] No such file or directory: b'source'»,

Если так:

raw: source tutorial-env/bin/activate

Ответ будет:

«stderr»: «Shared connection to 192.168.56.121 closed.\r\n»

Видимо, использую не тот модуль. Подскажите, какой надо.


source tutorial-env/bin/activate - это команда активации виртуального окружения (среды) питона (python) для удовлетворения требований всех приложений к разным версиям (старым и новым) пайтона. Данная команда активирует среду, которую я назвал tutorial-env. Какой модуль ansible надо использовать для активации этой среды пайтона?

paa66
() автор топика
Последнее исправление: paa66 (всего исправлений: 1)
Ответ на: комментарий от paa66

Никакой, так работать не будет. «Активацией» ты называешь настройку переменных окружения запущенного шелла приводящую к тому, что в этом шелле и только этом шелле у тебя какой-то там питонософт начинает находить что-то там из виртуального окружения. Что осмысленно для интерактивного сеанса и бессмысленно для случая ansible. Огласите задачу целиком.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от t184256

Ансиблем создал контейнер (lxc). В контейнере установлен mysql-server (тоже ансиблем), предварительно установлены пакеты для работы с mysql через ансибл. Пробовал создать бд mysql ансиблем, без python3-venv не получалось. В терминале установил python3-venv, создал окружение, активировал, вот после этого ансиблем получилось создать бд. По этой причине теперь работаю над тем, чтобы проделанное мной в терминале повторить в плэйбуке.

paa66
() автор топика
Ответ на: комментарий от paa66

Прямым-непрямым, но хоть каким-то повторением того, что ты сделал в терминале, будет source blablabla; команда ради которой все было. Если выполнять их в разных шеллах, то магия не сработает.

Но на самом деле твой вопрос где-то из области «подпер лестницу в холодильник плоскогубцами, а они соскальзывают. чем намазать плоскогубцы, чтоб пореже падать». Я бы вернулся на уровень

Пробовал создать бд mysql ансиблем, без python3-venv не получалось.

и перерешал его без venv/pip/pypi и прочего стороннего хлама

t184256 ★★★★★
()
Ответ на: комментарий от t184256

и перерешал его без venv/pip/pypi и прочего стороннего хлама

Вынужден следовать совету более опытного человека.

Значит, не все требования по работе с community.mysql.mysql_db module выполнил. А казалось, решение совсем близко :))

paa66
() автор топика
Ответ на: комментарий от t184256

Сделал так:

  - name: install pip package
    ansible.builtin.pip:
      name:
      - mysqlclient
      - PyMySQL 
Следующая задача в плэйбуке по созданию выполнилась успешно. И это без установки python3-venv и последующей активации виртуальной среды. Спасибо!

paa66
() автор топика
Ответ на: комментарий от t184256

А из репозиториев поставить прям никак?

Разбираясь с Ansible прочитал, что именно установка pip даёт работающий результат. Надо будет попробовать установку из репозитория. О результате написать здесь? Или результат заранее известен? :)

paa66
() автор топика
Ответ на: комментарий от t184256

Сделал так:

  tasks:
  - name: install package for MySQL
    ansible.builtin.apt:
      pkg:
      - mc
      - nano
      - postfix
      - mysql-server
      - mysql-client
      - mysqlclient
      - PyMySQL

msg": «No package matching 'mysqlclient' is available»
msg": «No package matching 'PyMySQL' is available»

Я про это говорил.

paa66
() автор топика
Ответ на: комментарий от t184256

Что-нибудь вроде python3-pymysql

Так и есть :) В общем, протестировал сегодня, отсёк всё лишнее, вот окончательный вариант:

  tasks:

  - name: Run update and upgrade the OS (apt dist-upgrade)
    ansible.builtin.apt:
      update_cache: yes
      upgrade: dist

  - name: install package for MySQL
    ansible.builtin.apt:
      pkg:
      - mysql-server
      - python3-pymysql
      state: latest
paa66
() автор топика