какой можно использовать базовый образ для ansible-bender на основе debian?
Я хочу создать образ докера с помощью ansible-bender, который рекомендуется использовать с ansible v2.10, ansible-container устарел.
Итак... сначала я подумал, что хорошо, я просто использую образ debian:buster-slim как основу из концентратора докеров
---
- name: whatever
hosts: all
vars:
ansible_bender:
base_image: debian:buster-slim
tasks:
- name: doesn't matter
...
Это не имеет значения, потому что этот образ не содержит установки python
21:28:33.284 buildah_builder.py ERROR couldn't locate python interpreter, tried these paths: ('/usr/bin/python3', '/usr/local/bin/python3', '/usr/bin/python3.7', '/usr/bin/python37', '/usr/bin/python3.6', '/usr/bin/python36', '/usr/bin/python2', '/usr/local/bin/python2', '/usr/bin/python', '/usr/local/bin/python', '/usr/libexec/platform-python')
Хорошо, есть еще один образ, у python есть репозиторий на концентраторе докеров, а также образ, основанный на buster slim (python:3.8-slim-buster):
---
- name: whatever
hosts: all
vars:
ansible_bender:
base_image: python:3.8-slim-buster
tasks:
- name: some task
raw: apt-get update
Замечательно, подумал я, теперь я могу начать создавать изображение, которое хочу. Итак, я переключил задачу
---
- name: whatever
hosts: all
vars:
ansible_bender:
base_image: python:3.8-slim-buster
tasks:
- name: install some packages
apt:
name: libssl-dev ca-certificates
update_cache: yes
Хорошо, документация по модулю apt упоминала об этом, этого можно было ожидать:
FAILED! => {"changed": false, "msg": "Could not import python modules: apt, apt_pkg. Please install python3-apt package."}
Но что теперь, установка python в этом образе не из дистрибутива, поэтому установка python3-apt не поможет, это даже не импортируется:
PYTHONPATH=/usr/lib/python3/dist-packages python
Python 3.8.6 (default, Nov 18 2020, 14:00:57)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import apt;
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
И нет модулей python: apt или apt_pkg, которые кто-то мог бы установить, например, через pip, также меня не очень интересует установка python, я хочу создать образ докера. Конечно, я хочу создать его с помощью ansible, который написан на python, но... неужели это так сложно!? Я имею в виду, я пытался установить python 3.7 на основе дистрибутива и пакет python3-apt, но ansible по-прежнему ищет по умолчанию установку в /usr/local/bin из-за PATH, и;-) не пытайтесь переключать PATH при запуске playbook.
Я ошибаюсь, стоит ли использовать другой базовый образ (требуется debian) - у всех, кто сталкивается с такими же проблемами, есть идея!?
И да, я знаю о возможности расширения образа debian:buster-slim с установкой python на основе distri и необходимыми модулями другим способом, проталкивая его в реестр и используя его в качестве базового образа. Но я ленив, и это еще один шаг в очень долгом процессе, включающем конвейер gitlab, запрос api на rundeck, еще один доступный playbook в rundeck и так далее...