Читайте время сборки переменных среды хост-системы в Singularity - PullRequest
0 голосов
/ 29 апреля 2020

Когда я собираю контейнер Singularity, я хотел бы прочитать переменные среды из хост-системы в разделе %post. Я искал в Интернете способ добиться этого, но безрезультатно. Я начинаю сомневаться, возможно ли это в настоящий момент, но я не могу найти упоминаний о том, что это возможно / невозможно.

Пример:

Файл определения сингулярности : recipe

BootStrap: docker
From: continuumio/anaconda3

%runscript

%post
    echo $TEST_ENV_VARIABLE

В хост-системе / ОС

export TEST_ENV_VARIABLE='foo'
sudo singularity build test.sif recipe

печатает только пустую строку при отображении TEST_ENV_VARIABLE.

Если в разделе %post нет способа чтения переменных среды хост-системы, есть ли другие способы передачи аргументов в рецепт, который можно использовать во время сборки?

1 Ответ

0 голосов
/ 03 мая 2020

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

Если вы делаете хотите что-то более динамичное c, вы можете использовать Шаблон для создания разных файлов определений. Очень упрощенный c пример:

$ cat gen_def.py
#!/usr/bin/env python3
import sys

my_def = """BootStrap: docker
From: continuumio/anaconda3

%post
    echo This is {0}
    echo This is {1}"""

print(my_def.format(*sys.argv[1:]))

$ ./gen_def.py one two > Singularity.custom

$ sudo singularity build test.sif Singularity.custom
...