Фреймворк для запуска трактора Pixar с аутентификацией HTTPS, позволяющей безопасному входу в систему через Freeipa или другой модуль PAM. Контейнеры нуждаются в привилегированном доступе, как
X-Forwarded-For , поэтому прокси-контейнер использует хост-сеть, чтобы служить прозрачным TLS-концертным прокси-сервером На хост -машине (это было протестировано с помощью Rocky 8.8), установите Docker и Docker Compose. Зарегистрируйте хост в Freeipa или в другую службу аутентификации. В этой конфигурации используется правило HBAC (управление доступом на основе хоста), позволяющее всем пользователям войти в систему через пользовательскую службу с именем tractor-sssd . Это позволяет войти в тракторную веб -консоли, но ограничивает вход через SSH.
Контейнер NGINX использует iptables для настройки своего прозрачного прокси, но не имеет разрешения на модульные модули modprobe , необходимые ядра в системе хоста. Чтобы включить их в системе работает, запустите sudo modprobe iptable_mangle x_tables xt_mark
Чтобы включить эти модули на загрузке, создайте файл /etc/modules-load.d/tractor-https.conf со следующим содержимым:
iptable_mangle
x_tables
xt_mark
Клонировать это репо. Поместите все файлы конфигурации трактора в config/ каталог (в этом репо). Вот список Files Tractor ожидает:
blade.config
crews.config
db.config
limits.config
menus.config
postgresql.conf
shared.linux.envkeys
shared.macosx.envkeys
shared.windows.envkeys
tractor.config
trSiteDashboardFunctions.js
trSiteFunctions.py
trSiteLdapLoginValidator.py
trSiteLoginValidator.py
Чтобы избежать конфликтов с прокси-контейнером, прослушиваемым прокси-контейнером с хост-сетью, на порту 80 тракторный двигатель должен работать на порту 8080 (или другой порт по вашему выбору, вам нужно настроить это вручную). Для этого установите The ListenerPort в config/tractor.config :
{
...
"ListenerPort" : 8080 ,
...
} Создайте файл с именем env в главном каталоге. Если вы планируете использовать модуль синхронизации экипажа, определите здесь WRANGLER_GROUP и ADMIN_GROUP . Это названия группы Unix. Служба синхронизации экипажа проверит. Если вы используете переменную PIXAR_LICENSE_FILE , вы также можете определить ее здесь. Пример конфигурации:
ADMIN_GROUP=admin
PIXAR_LICENSE_FILE=9010@licenseserver
WRANGLER_GROUP=wrangler
Создайте файл с именем admin_user.txt . Он содержит учетные данные, которые модуль синхронизации экипажа будет использовать для автоматической загрузки конфигурации экипажей после обновления групп в Freeipa. Обязательно установите разрешения на этот файл, чтобы его можно было увидеть только группой docker и другими необходимыми пользователями администратора:
username
password
Поместите обороты для установки трактора, полученную из Pixar в папке tractor-base . (Docker ищет файл с именем Tractor-2.4.x86_64.rpm )
Назовите свои файлы сертификатов ssl cert.crt и cert.key и поместите их в папку certs
После всего этого ваш каталог должен выглядеть так:
.
├── admin_user.txt
├── certs
│ ├── cert.crt
│ └── cert.key
├── config
│ ├── blade.config
│ ├── crews.config
│ ├── db.config
│ ├── limits.config
│ ├── menus.config
│ ├── postgresql.conf
│ ├── shared.linux.envkeys
│ ├── shared.macosx.envkeys
│ ├── shared.windows.envkeys
│ ├── tractor.config
│ ├── trSiteDashboardFunctions.js
│ ├── trSiteFunctions.py
│ ├── trSiteLdapLoginValidator.py
│ └── trSiteLoginValidator.py
├── crew-sync.sh
├── docker-compose.yml
├── env
├── proxy
│ ├── networking.sh
│ └── nginx.conf
├── README.md
├── tractor-base
│ ├── Dockerfile
│ ├── sssd-tractor
│ └── Tractor-2.4.x86_64.rpm
└── TrHttpRPC.py.patch
В config/crews.config измените ValidLogins на внешние входы и установите SitePasswordValidator на internal:PAM:sssd-tractor :
{
...
"Crews" : {
"ValidLogins" : [ " @externlogins " ],
...
},
...
"SitePasswordValidator" : " internal:PAM:sssd-tractor "
} Модуль экипажа Sync проверяет обновления в группах UNIX, определенных в файле env , и заполняет файлы config/admins и config/wranglers этими именами пользователей. Чтобы включить эти файлы в ваш config/crews.config внесите следующие изменения:
{
...
"Crews" : {
...
"Wranglers" : [ " @merge('wranglers') " , " hard-coded users or other config " ],
"Administrators" : [ " @merge('admins') " , " hard-coded users or other config " ]
},
...
} Чтобы отключить модуль синхронизации экипажа, прокомментируйте блок crew-sync в docker-compose.yml .
Наконец, вы должны быть в состоянии создавать и запустить контейнеры:
docker compose build
docker compose up -d
# check that things are running properly
docker compose logsДля того, чтобы лопасти трактора могли правильно общаться с двигателем по SSL, нам необходимо использовать Beta Python 3 сборка трактора. На момент написания этой статьи эта сборка может быть загружена с форумов Renderman. API Python 3 также включен в недавние установки Renderman Pro Server.
Файл TrHttpRPC.py должен быть исправлен для использования подключения SSL, используемого с использованием патча, включенного в этот git Repo ( TrHttpRPC.py.patch ). Это опирается на библиотеки OpenSSL 10, которые могут быть установлены через диспетчер пакетов (ниже команды, протестированные на Rocky 8.8).
Чтобы исправить установку Renderman Pro Server:
dnf install -y compat-openssl10
patch /opt/pixar/RenderManProServer-XX.Y/bin/tractor/base/TrHttpRPC.py ./TrHttpRPC.py.patchЧтобы исправить трактор 3 бета -лезвие:
dnf install -y compat-openssl10
# as of this writing, the beta build is `tractor-blade3b1.2308.pyz`
# unzip the tractor-blade python executable
mkdir tractor-blade3b1.2308
unzip tractor-blade3b1.2308.pyz -d tractor-blade3b1.2308
cd tractor-blade3b1.2308
# patch the file
patch ./TrHttpRPC.py path/to/TrHttpRPC.py.patch
# re-zip the executable (this assumes that you have rmanpy3 in your PATH)
cd ../
rmanpy3 -m zipapp tractor-blade3b1.2308 -p ' /usr/bin/env rmanpy3 ' В флагах для процесса tractor-blade (настроено через SysConfig или иным образом), обязательно укажите номер порта и полностью квалифицированное имя хоста трактора (SSL требует, чтобы имя хоста была полностью квалифицированной), например
path/to/tractor-blade3b1.pyz --engine=tractor-engine.example.com:443Ссылки