Un cadre pour exécuter le tracteur de Pixar avec l'authentification HTTPS, permettant une connexion sécurisée via FreeIPA ou un autre module PAM. Les conteneurs ont besoin d'un accès privilégié, comme
X-Forwarded-For , de sorte que le conteneur de proxy utilise le réseau hôte afin de servir de proxy transparent et terminant TLS Sur la machine hôte (cela a été testé avec Rocky 8.8), installez Docker et Docker Compose. Inscrivez l'hôte à FreeIPA ou un autre service d'authentification. Cette configuration utilise une règle HBAC (Contrôle d'accès basé sur l'hôte) permettant à tous les utilisateurs de se connecter via un service personnalisé nommé tractor-sssd . Cela permet la connexion de la console Web du tracteur mais restreint la connexion via SSH.
Le conteneur Nginx utilise des iptables pour configurer son proxy transparent, mais n'a pas l'autorisation de modprobe les modules de noyau nécessaires sur le système hôte. Pour les activer sur le système en cours d'exécution, exécutez sudo modprobe iptable_mangle x_tables xt_mark
Pour activer ces modules sur le démarrage, créez le fichier /etc/modules-load.d/tractor-https.conf avec le contenu suivant:
iptable_mangle
x_tables
xt_mark
Cloner ce repo. Placez tous vos fichiers de configuration de tracteur dans le répertoire config/ (dans ce dépôt). Voici une liste des fichiers que le tracteur attend:
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
Pour éviter les conflits avec le conteneur proxy à réseau hôte écoutant sur le port 80, le moteur tracteur doit fonctionner sur le port 8080 (ou un autre port de votre choix, vous devrez configurer cela manuellement). Pour ce faire, définissez le ListenerPort dans config/tractor.config :
{
...
"ListenerPort" : 8080 ,
...
} Créez un fichier nommé env dans le répertoire principal. Si vous prévoyez d'utiliser le module de synchronisation de l'équipage, définissez ici WRANGLER_GROUP et ADMIN_GROUP . Ce sont les noms de groupe UNIX que le service de synchronisation de l'équipage vérifiera. Si vous utilisez la variable PIXAR_LICENSE_FILE , vous pouvez également la définir ici. Exemple de configuration:
ADMIN_GROUP=admin
PIXAR_LICENSE_FILE=9010@licenseserver
WRANGLER_GROUP=wrangler
Créez un fichier nommé admin_user.txt . Cela contient les informations d'identification que le module de synchronisation de l'équipage utilisera pour relancer automatiquement la configuration des équipages après la mise à jour des groupes dans FreeIPA. Assurez-vous de définir des autorisations appropriées sur ce fichier afin qu'il ne puisse être vu que par le groupe docker et les autres utilisateurs d'administration nécessaires:
username
password
Placez votre régime d'installation de tracteur obtenu à partir de Pixar dans le dossier tractor-base . (Docker recherche un fichier nommé Tractor-2.4.x86_64.rpm )
Nommez vos fichiers de certificat SSL cert.crt et cert.key et placez-les dans le dossier certs
Après tout cela, votre répertoire devrait ressembler à ceci:
.
├── 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
Dans config/crews.config , modifiez ValidLogins en connexions externes et définissez le SitePasswordValidator sur internal:PAM:sssd-tractor :
{
...
"Crews" : {
"ValidLogins" : [ " @externlogins " ],
...
},
...
"SitePasswordValidator" : " internal:PAM:sssd-tractor "
} Le module Crew-Sync vérifie les mises à jour des groupes UNIX définis dans le fichier env et remplit les fichiers config/admins and config/wranglers avec ces noms d'utilisateur. Pour inclure ces fichiers dans votre config/crews.config apportez les modifications suivantes:
{
...
"Crews" : {
...
"Wranglers" : [ " @merge('wranglers') " , " hard-coded users or other config " ],
"Administrators" : [ " @merge('admins') " , " hard-coded users or other config " ]
},
...
} Pour désactiver le module de synchronisation de l'équipage, commentez le bloc crew-sync dans docker-compose.yml .
Enfin, vous devriez pouvoir construire et démarrer les conteneurs:
docker compose build
docker compose up -d
# check that things are running properly
docker compose logsPour que les lames de tracteur communiquent correctement avec le moteur sur SSL, nous devons utiliser la construction de tracteur Beta Python 3. À ce jour, cette version peut être téléchargée à partir des forums Renderman. L'API Python 3 est également incluse avec les récentes installations de serveur Renderman Pro.
Le fichier TrHttpRPC.py doit être corrigé pour utiliser une connexion sécurisée SSL à l'aide du patch inclus dans ce repo git ( TrHttpRPC.py.patch ). Cela repose sur les bibliothèques OpenSSL 10, qui peuvent être installées via le gestionnaire de package (les commandes ci-dessous testées sur Rocky 8.8).
Pour corriger l'installation du serveur Renderman Pro:
dnf install -y compat-openssl10
patch /opt/pixar/RenderManProServer-XX.Y/bin/tractor/base/TrHttpRPC.py ./TrHttpRPC.py.patchPour corriger la lame bêta du tracteur 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 ' Dans les drapeaux du processus tractor-blade (configuré via Sysconfig ou autrement), assurez-vous de spécifier le numéro de port et le nom d'hôte pleinement qualifié du moteur de tracteur (SSL nécessite que le nom d'hôte soit pleinement qualifié), par exemple
path/to/tractor-blade3b1.pyz --engine=tractor-engine.example.com:443Références