一個用於使用HTTPS身份驗證的Pixar拖拉機的框架,可以通過Freeipa或其他PAM模塊安全登錄。容器需要一些特權訪問,例如
X-Forwarded-For -theherers,因此代理容器使用主機網絡作為透明的TLS末端代理在主機機器上(已通過岩石8.8進行了測試),安裝Docker和Docker組成。將主機注入費員或其他身份驗證服務。該配置使用HBAC(基於主機的訪問控制)規則,允許所有用戶通過名為tractor-sssd的自定義服務登錄。這允許拖拉機Web控制台登錄,但通過SSH限制登錄。
NGINX容器使用Iptables配置其透明代理,但沒有許可在主機系統上需要modprobe所需的內核模塊。要在運行系統上啟用它們,請運行sudo modprobe iptable_mangle x_tables xt_mark
要在啟動時啟用這些模塊,請使用以下內容創建File /etc/modules-load.d/tractor-https.conf 。
iptable_mangle
x_tables
xt_mark
克隆這個倉庫。將所有拖拉機配置文件放在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
為了避免與端口80上的主機網絡代理集裝箱聆聽的衝突,拖拉機發動機必須在端口8080上運行(或您選擇的另一個端口,您需要手動配置此端口)。為此,請在config/tractor.config中設置ListenerPort :
{
...
"ListenerPort" : 8080 ,
...
}在主目錄中創建一個名為env的文件。如果您打算使用機組同步模塊,請在此處定義WRANGLER_GROUP和ADMIN_GROUP 。這些是CREW SYNC服務將檢查的UNIX組名稱。如果使用PIXAR_LICENSE_FILE變量,也可以在此處定義它。示例配置:
ADMIN_GROUP=admin
PIXAR_LICENSE_FILE=9010@licenseserver
WRANGLER_GROUP=wrangler
創建一個名為admin_user.txt的文件。這包含憑證,該憑證將在freeipa中更新組後,將使用機組人員使用來自動加載船員配置。確保在此文件上適當設置權限,以便docker組和其他必要的管理用戶可以看到它:
username
password
將拖拉機安裝rpm放置在tractor-base文件夾中的Pixar中。 (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 "
}機組同步模塊檢查對env文件中定義的UNIX組的更新,並使用這些用戶名填充文件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 " ]
},
...
}要禁用機組人員同步模塊,請在docker-compose.yml中評論crew-sync塊。
最後,您應該能夠構建並啟動容器:
docker compose build
docker compose up -d
# check that things are running properly
docker compose logs為了使拖拉機葉片通過SSL與發動機正確通信,我們需要使用Beta Python 3式拖拉機的構建。在撰寫本文時,可以從Renderman論壇下載此構建。最近的Renderman Pro服務器安裝中還包括Python 3 API。
需要修補文件TrHttpRPC.py ,以使用此git repo中包含的補丁( TrHttpRPC.py.patch )中使用SSL固定連接。這取決於OpenSSL 10庫,該庫可以通過軟件包管理器安裝(以下在Rocky 8.8上測試的命令)。
修補Renderman Pro服務器安裝:
dnf install -y compat-openssl10
patch /opt/pixar/RenderManProServer-XX.Y/bin/tractor/base/TrHttpRPC.py ./TrHttpRPC.py.patch修補拖拉機3 Beta刀片:
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參考