Podman#

Podman – это инструмент с открытым исходным, используемый для создания и запуска контейнеризованных приложений. В отличие от Docker, по умолчанию Podman запускает контейнеры в непривилегированном режиме.

Назначение#

В Astra Automation утилиты, входящие в состав ПО Podman, используются для следующих задач:

  • запуск заданий Ansible в среде исполнения;

  • использование конструктора кода для управления инфраструктурой;

  • сборка собственного образа среды исполнения Astra Automation Controller.

Установка#

Важно

Пакеты Podman доступны в репозиториях Astra Linux Special Edition начиная с оперативного обновления 1.7.2 (БЮЛЛЕТЕНЬ № 2022-0819SE17). Инструкции по обновлению ОС приведены в разделе справочного центра Оперативные обновления для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10, РУСБ.10015-37.

Для установки пакетов Podman выполните следующие действия:

  1. Получите номер установленного оперативного обновления ОС:

    cat /etc/astra_version
    

    Команда выводит в терминал строку вида:

    1.7.5
    
  2. Добавьте в файл /etc/apt/sources.list ссылку на расширенный (extended) репозиторий Astra Linux Special Edition 1.7:

    deb https://download.astralinux.ru/astra/frozen/1.7_x86-64/<version>/repository-extended/ 1.7_x86-64 main contrib non-free
    

    где <version> – версия установленного оперативного обновления Astra Linux Special Edition. Для примера выше указанная строка имеет вид:

    deb https://download.astralinux.ru/astra/frozen/1.7_x86-64/1.7.5/repository-extended/ 1.7_x86-64 main contrib non-free
    
  3. Обновите список доступных пакетов:

    sudo apt update
    
  4. Установите пакеты Podman:

    sudo apt install podman --yes
    

Проверка корректности установки#

Для проверки корректности установки Podman выполните следующие действия:

  1. В любом каталоге создайте два файла:

    • playbook.yml – простейший playbook Ansible:

      ---
      - name: Validate Podman setup
        hosts: all
        tasks:
          - name: Print Execution Environment OS info
            ansible.builtin.debug:
              msg:
                - OS version is {{ ansible_distribution_version }}
                - Python version is {{ ansible_python_version }}
      
    • inventory – инвентарь Ansible:

      [all]
      localhost  ansible_connection=local  ansible_python_interpreter=/usr/bin/python3
      
  2. Запустите выполнение playbook в контейнере Podman:

    podman run \
        --rm \
        --volume "$(pwd):/app" \
        registry.astralinux.ru/aa/aa-base-ee:latest \
        bash -c 'ansible-playbook -i inventory playbook.yml'
    

    где:

    • --rm – автоматическое удаление контейнера после выполнения команды.

    • --volume, -v – монтирование объекта файловой системы управляющего узла в файловую систему контейнера. В данном случае каталог с файлами inventory и playbook.yml монтируется в каталог /app. Путь к каталогу определяется с помощью команды pwd.

    • registry.astralinux.ru/aa/aa-base-ee:latest – ссылка на образ.

    • bash -c 'ansible-playbook -i inventory.yml playbook.yml' – команда, которая должна быть выполнена в контейнере. В данном случае – запуск playbook с указанным инвентарем.

    Если Podman настроен корректно, в терминал выводятся строки следующего вида:

    PLAY [Validate Podman setup] *************************************************************************************
    
    TASK [Gathering Facts] *******************************************************************************************
    ok: [localhost]
    
    TASK [Print Execution Environment information]********************************************************************
    ok: [localhost] => {
        "msg": [
            "OS version is 1.7_x86-64",
            "Python version is 3.9.18"
        ]
    }
    
    PLAY RECAP *******************************************************************************************************
    localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0