Ein Framework zum Ausführen von Pixar -Traktor mit HTTPS -Authentifizierung, sodass sich eine sichere Anmeldung über FreeIPA oder ein anderes PAM -Modul ermöglicht. Die Container benötigen einen privilegierten Zugriff wie
X-Forwarded-For Header nicht, sodass der Proxy-Container das Host-Netzwerk verwendet Installieren Sie Docker und Docker Compose auf dem Host -Computer (dies wurde mit Rocky 8.8 getestet). Melden Sie den Host in FreeIpa oder einen anderen Authentifizierungsdienst an. Diese Konfiguration verwendet eine HBAC-Regel (Host-basierte Zugriffskontrolle), mit der alle Benutzer über einen benutzerdefinierten Dienst mit dem Namen tractor-sssd anmelden können. Dies ermöglicht die Anmeldung der Traktor -Webkonsole, beschränkt jedoch die Anmeldung über SSH.
Der Nginx -Container verwendet Iptables, um seinen transparenten Proxy zu konfigurieren, verfügt jedoch nicht über die Erlaubnis, die benötigten Kernelmodule auf dem Hostsystem zu modprobe . Um sie im laufenden System zu aktivieren, führen Sie sudo modprobe iptable_mangle x_tables xt_mark aus
Erstellen Sie mit dem folgenden Inhalt die Datei /etc/modules-load.d/tractor-https.conf , um diese Module für den Start zu aktivieren.
iptable_mangle
x_tables
xt_mark
Klonen Sie dieses Repo. Platzieren Sie alle Ihre Traktorkonfigurationsdateien im config/ Verzeichnis (in diesem Repo). Hier ist eine Liste der Dateien, die Traktor erwartet:
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
Um Konflikte mit dem Host-Networked-Proxy-Container zu vermeiden, das an Port 80 gehört, muss die Traktor-Engine auf Port 8080 ausgeführt werden (oder einen anderen Port Ihrer Wahl, Sie müssen dies manuell konfigurieren). Stellen Sie dazu den ListenerPort in config/tractor.config fest:
{
...
"ListenerPort" : 8080 ,
...
} Erstellen Sie eine Datei namens env im Hauptverzeichnis. Wenn Sie das Crew -Synchronisierungsmodul verwenden möchten, definieren Sie hier WRANGLER_GROUP und ADMIN_GROUP . Dies sind die UNIX -Gruppennamen, die der Crew -Synchronisierungsdienst prüft. Wenn Sie die Variable PIXAR_LICENSE_FILE verwenden, können Sie sie auch hier definieren. Beispielkonfiguration:
ADMIN_GROUP=admin
PIXAR_LICENSE_FILE=9010@licenseserver
WRANGLER_GROUP=wrangler
Erstellen Sie eine Datei namens admin_user.txt . Dies enthält die Anmeldeinformationen, mit denen das Crew-Synchronisationsmodul die Crews-Konfiguration automatisch aufladen wird, nachdem die Gruppen in FreeIPA aktualisiert wurden. Stellen Sie sicher, dass die Berechtigungen in dieser Datei berücksichtigt werden, damit sie nur von der docker -Gruppe und anderen erforderlichen Administratorbenutzern gesehen werden kann:
username
password
Platzieren Sie Ihre Traktorinstallations-Drehzahl, die von Pixar im tractor-base erhalten wurde. (Docker sucht nach einer Datei namens Tractor-2.4.x86_64.rpm )
Nennen Sie Ihre SSL -Zertifikatsdateien cert.crt und cert.key und platzieren Sie sie im Ordner certs
Nach all dem sollte Ihr Verzeichnis wie folgt aussehen:
.
├── 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
Ändern Sie in config/crews.config ValidLogins in externe Anmeldungen und setzen Sie den SitePasswordValidator auf internal:PAM:sssd-tractor :
{
...
"Crews" : {
"ValidLogins" : [ " @externlogins " ],
...
},
...
"SitePasswordValidator" : " internal:PAM:sssd-tractor "
} Das Crew-Sync-Modul überprüft nach Aktualisierungen der in der env Datei definierten UNIX-Gruppen und füllt die Dateien config/admins und config/wranglers mit diesen Benutzernamen. Um diese Dateien in Ihre config/crews.config einzubeziehen, nehmen Sie die folgenden Änderungen vor:
{
...
"Crews" : {
...
"Wranglers" : [ " @merge('wranglers') " , " hard-coded users or other config " ],
"Administrators" : [ " @merge('admins') " , " hard-coded users or other config " ]
},
...
} Um das Crew-Synchronisationsmodul zu deaktivieren, kommentieren Sie den crew-sync Block in docker-compose.yml .
Schließlich sollten Sie in der Lage sein, die Container zu bauen und zu starten:
docker compose build
docker compose up -d
# check that things are running properly
docker compose logsDamit die Traktorblätter über SSL ordnungsgemäß mit dem Motor kommunizieren können, müssen wir den Beta Python 3 -Build von Traktor verwenden. Zum Zeitpunkt dieses Schreibens kann dieser Build aus den Renderman -Foren heruntergeladen werden. Die Python 3 -API ist auch in den aktuellen Renderman Pro -Server -Installationen enthalten.
Die Datei TrHttpRPC.py muss gepatcht werden, um eine SSL-sichergestellte Verbindung mit dem in diesem Git-Repo enthaltenen Patch ( TrHttpRPC.py.patch ) zu verwenden. Dies stützt sich auf die OpenSSL 10 -Bibliotheken, die über den Paketmanager installiert werden können (folgende Befehle auf Rocky 8.8).
So patchieren Sie die Installation von Renderman Pro Server:
dnf install -y compat-openssl10
patch /opt/pixar/RenderManProServer-XX.Y/bin/tractor/base/TrHttpRPC.py ./TrHttpRPC.py.patchUm den Traktor 3 Beta Blade zu patchen:
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 ' In den Flags für den tractor-blade -Prozess (konfiguriert über Sysconfig oder auf andere Weise) stellen Sie sicher, dass die Portnummer und der voll qualifizierte Hostname der Traktor-Engine (SSL verlangt, dass der Hostname vollständig qualifiziert ist), z. B.
path/to/tractor-blade3b1.pyz --engine=tractor-engine.example.com:443Referenzen