Un marco para ejecutar el tractor de Pixar con autenticación HTTPS, lo que permite un inicio de sesión seguro a través de FreeIPA u otro módulo PAM. Los contenedores necesitan algún acceso privilegiado, como
X-Forwarded-For , por lo que el contenedor proxy utiliza la red host para servir como un proxy transparente y terminal de TLS En la máquina host (esto se ha probado con Rocky 8.8), instale Docker y Docker Compose. Inscribir el host en FreeIPA u otro servicio de autenticación. Esta configuración utiliza una regla HBAC (control de acceso basado en host) que permite a todos los usuarios iniciar sesión a través de un servicio personalizado llamado tractor-sssd . Esto permite el inicio de sesión de la consola web del tractor, pero restringe el inicio de sesión a través de SSH.
El contenedor NGINX utiliza iptables para configurar su proxy transparente, pero no tiene permiso para modprobe los módulos de kernel necesarios en el sistema host. Para habilitarlos en el sistema en ejecución, ejecute sudo modprobe iptable_mangle x_tables xt_mark
Para habilitar estos módulos en el arranque, cree el archivo /etc/modules-load.d/tractor-https.conf con los siguientes contenidos:
iptable_mangle
x_tables
xt_mark
Clon este repositorio. Coloque todos los archivos de configuración de su tractor en el directorio config/ (en este repositorio). Aquí hay una lista de los archivos que el tractor espera:
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
Para evitar conflictos con el contenedor proxy de red de host que escucha en el puerto 80, el motor del tractor debe ejecutarse en el puerto 8080 (u otro puerto de su elección, debe configurar esto manualmente). Para hacer esto, establezca el ListenerPort en config/tractor.config :
{
...
"ListenerPort" : 8080 ,
...
} Cree un archivo llamado env en el directorio principal. Si planea usar el módulo de sincronización de la tripulación, defina WRANGLER_GROUP y ADMIN_GROUP aquí. Estos son los nombres de grupo UNIX que el servicio de sincronización de la tripulación verificará. Si usa la variable PIXAR_LICENSE_FILE , también puede definirlo aquí. Configuración de ejemplo:
ADMIN_GROUP=admin
PIXAR_LICENSE_FILE=9010@licenseserver
WRANGLER_GROUP=wrangler
Cree un archivo llamado admin_user.txt . Esto contiene las credenciales que el módulo de sincronización de la tripulación usará para recuperar automáticamente la configuración de la tripulación después de que los grupos se actualicen en FreeIPA. Asegúrese de establecer los permisos de manera adecuada en este archivo para que el grupo docker y otros usuarios de administración necesarios solo puedan verlo:
username
password
Coloque las RPM de instalación de su tractor obtenidas de Pixar en la carpeta tractor-base . (Docker busca un archivo llamado Tractor-2.4.x86_64.rpm )
Nombra sus archivos de certificado SSL cert.crt y cert.key y colóquelos en la carpeta certs
Después de todo esto, su directorio debería verse así:
.
├── 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
En config/crews.config , cambie ValidLogins a inicios de sesión externos y establezca el SitePasswordValidator en internal:PAM:sssd-tractor :
{
...
"Crews" : {
"ValidLogins" : [ " @externlogins " ],
...
},
...
"SitePasswordValidator" : " internal:PAM:sssd-tractor "
} El módulo de sync de la tripulación verifica las actualizaciones de los grupos UNIX definidos en el archivo env y pobla de los archivos config/admins y config/wranglers con esos nombres de usuario. Para incluir estos archivos en su config/crews.config realice los siguientes cambios:
{
...
"Crews" : {
...
"Wranglers" : [ " @merge('wranglers') " , " hard-coded users or other config " ],
"Administrators" : [ " @merge('admins') " , " hard-coded users or other config " ]
},
...
} Para deshabilitar el módulo de sincronización de la tripulación, comente el bloque crew-sync en docker-compose.yml .
Finalmente, debería poder construir e iniciar los contenedores:
docker compose build
docker compose up -d
# check that things are running properly
docker compose logsPara que las cuchillas del tractor se comuniquen adecuadamente con el motor sobre SSL, necesitamos usar la construcción de tractor Beta Python 3. Al momento de escribir este artículo, esta construcción se puede descargar de los foros de Renderman. La API de Python 3 también se incluye con las recientes instalaciones del servidor Renderman Pro.
El archivo TrHttpRPC.py debe parcarse para utilizar una conexión asegurada por SSL utilizando el parche incluido en este Repo Git ( TrHttpRPC.py.patch ). Esto se basa en las bibliotecas OpenSSL 10, que se pueden instalar a través del Administrador de paquetes (a continuación, los comandos probados en Rocky 8.8).
Para parche la instalación del servidor Renderman Pro:
dnf install -y compat-openssl10
patch /opt/pixar/RenderManProServer-XX.Y/bin/tractor/base/TrHttpRPC.py ./TrHttpRPC.py.patchPara parchear el tractor 3 Beta Blade:
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 ' En los indicadores para el proceso tractor-blade (configurado a través de sysconfig o de otra manera), asegúrese de especificar el número de puerto y el nombre de host completamente calificado del motor del tractor (SSL requiere que el nombre de host esté completamente calificado), por ejemplo,
path/to/tractor-blade3b1.pyz --engine=tractor-engine.example.com:443Referencias