Uma estrutura para executar o trator da Pixar com autenticação HTTPS, permitindo login seguro via Freeipa ou outro módulo PAM. Os contêineres precisam de algum acesso privilegiado, como
X-Forwarded-For , portanto o contêiner de proxy usa a rede host para servir como um proxy transparente e terminante de TLS Na máquina host (foi testada com o Rocky 8.8), instale o Docker e o Docker Compose. Inscreva -se o host em Freeipa ou outro serviço de autenticação. Essa configuração usa uma regra HBAC (controle de acesso baseada no host), permitindo que todos os usuários efetuem login por meio de um serviço personalizado chamado tractor-sssd . Isso permite o login do console da web do trator, mas restringe o login via SSH.
O contêiner nginx usa iptables para configurar seu proxy transparente, mas não tem permissão para modprobe precisava de módulos de kernel no sistema host. Para habilitá -los no sistema em execução, execute sudo modprobe iptable_mangle x_tables xt_mark
Para ativar esses módulos na inicialização, crie o arquivo /etc/modules-load.d/tractor-https.conf com o seguinte conteúdo:
iptable_mangle
x_tables
xt_mark
Clone este repo. Coloque todos os seus arquivos de configuração do trator no config/ diretório (neste repositório). Aqui está uma lista dos arquivos que o trator 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 conflitos com o contêiner de proxy da rede-host que está ouvindo na porta 80, o motor do trator deve ser executado na porta 8080 (ou em outra porta de sua escolha, você precisará configurar isso manualmente). Para fazer isso, defina o ListenerPort em config/tractor.config :
{
...
"ListenerPort" : 8080 ,
...
} Crie um arquivo chamado env no diretório principal. Se você planeja usar o módulo Sync Sync, defina WRANGLER_GROUP e ADMIN_GROUP aqui. Estes são os nomes do grupo UNIX que o serviço de sincronização da tripulação verificará. Se você usar a variável PIXAR_LICENSE_FILE , também poderá defini -la aqui. Exemplo de configuração:
ADMIN_GROUP=admin
PIXAR_LICENSE_FILE=9010@licenseserver
WRANGLER_GROUP=wrangler
Crie um arquivo chamado admin_user.txt . Isso contém as credenciais que o módulo de sincronização da tripulação usará para relotar automaticamente a configuração das equipes depois que os grupos forem atualizados no FreeIPA. Certifique -se de definir permissões devidamente nesse arquivo para que ele possa ser visto pelo grupo docker e outros usuários administrativos necessários:
username
password
Coloque a instalação do trator RPM obtida da Pixar na pasta tractor-base . (Docker procura um arquivo chamado Tractor-2.4.x86_64.rpm )
Nomeie seus arquivos de certificado SSL cert.crt e cert.key e coloque -os na pasta certs
Depois de tudo isso, seu diretório deve ficar assim:
.
├── 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
Em config/crews.config , altere ValidLogins para logins externos e defina o SitePasswordValidator como internal:PAM:sssd-tractor :
{
...
"Crews" : {
"ValidLogins" : [ " @externlogins " ],
...
},
...
"SitePasswordValidator" : " internal:PAM:sssd-tractor "
} O módulo Crew-Sync verifica as atualizações para os grupos UNIX definidos no arquivo env e preenche os arquivos config/admins e config/wranglers com esses nomes de usuário. Para incluir esses arquivos em sua config/crews.config faça as seguintes alterações:
{
...
"Crews" : {
...
"Wranglers" : [ " @merge('wranglers') " , " hard-coded users or other config " ],
"Administrators" : [ " @merge('admins') " , " hard-coded users or other config " ]
},
...
} Para desativar o módulo de sincronização da tripulação, comente o bloco crew-sync em docker-compose.yml .
Finalmente, você deve poder construir e iniciar os contêineres:
docker compose build
docker compose up -d
# check that things are running properly
docker compose logsPara que as lâminas do trator se comuniquem adequadamente com o motor sobre o SSL, precisamos usar a construção do trator beta python 3. Até o momento em que este artigo foi escrito, essa compilação pode ser baixada nos fóruns do Renderman. A API do Python 3 também está incluída nas recentes instalações do Renderman Pro Server.
O arquivo TrHttpRPC.py precisa ser corrigido para utilizar uma conexão segura SSL usando o patch incluído neste repo Git ( TrHttpRPC.py.patch ). Isso se baseia nas bibliotecas OpenSSL 10, que podem ser instaladas através do gerenciador de pacotes (comandos abaixo testados no Rocky 8.8).
Para corrigir a instalação do Renderman Pro Server:
dnf install -y compat-openssl10
patch /opt/pixar/RenderManProServer-XX.Y/bin/tractor/base/TrHttpRPC.py ./TrHttpRPC.py.patchPara corrigir a lâmina beta do trator 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 ' Nas bandeiras para o processo tractor-blade (configurado via sysconfig ou não), especifique o número da porta e o nome de host totalmente qualificado do motor do trator (o SSL exige que o nome do host seja totalmente qualificado), por exemplo,
path/to/tractor-blade3b1.pyz --engine=tractor-engine.example.com:443Referências