какой можно использовать базовый образ для 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 и так далее...

0 ответов

Другие вопросы по тегам