亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 Django View 將變量傳遞到遠程(Golang)應用程序的最佳方法

從 Django View 將變量傳遞到遠程(Golang)應用程序的最佳方法

Go
收到一只叮咚 2023-08-07 15:04:57
我正在創建一個 Django Web 應用程序,它將協助準系統服務器部署,其中準系統服務器將 PXE 啟動到自定義 LiveCD,以發送 cURL 命令將其自身注冊到 DRF REST API。當 Django 收到POST請求時,它將遠程啟動一個 Go 應用程序,該應用程序將根據 REST API 中的條目找到基本服務器,然后開始配置服務器。識別/將裸機服務器引入我的 Go 服務器的最佳方式是什么?我的想法是要么使用解析器參數來識別服務器,然后 Go 將從 REST API 中提取基本的服務器信息,或者在 REST API 中添加一個布爾字段,Go 應用程序將查找 TRUE 的條目,然后將其翻轉到當它開始設置裸機服務器時為 FALSE。這是完成這項工作的最佳方法還是有更好的方法?
查看完整描述

1 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

實際上,PXELINUX帶有基于系統MAC地址的識別機制,并且可以相應地定制配置。由于無論如何您都需要對裸機服務器進行統計(端口安全有人嗎?;)),因此無論如何您都應該知道裸機服務器上所有接口的 MAC 外觀。

您的目錄通常如下所示(路徑前綴可能不同)。

/srv/pxe/pxelinux.cfg/default

現在發生的情況是,您的系統啟動,發送 DHCP 請求并獲得包含 DHCP 選項“下一個服務器”和“文件名”的報價。當系統選擇所述報價時,它將連接到“下一個服務器”并請求“文件名”,通常為pxelinux.0.?這是您的第一個潛在鉤子:編寫一個 tftp 服務器來處理請求并注冊您的系統。

現在pxelinux.0執行,它會讀取上面的配置文件。但事情是這樣的:假設系統的 Mac 地址是23:67:33:5a:cc:e8,文件

/srv/pxe/pxelinux.cfg/23-67-33-5a-cc-e8

存在,則將讀取此內容。這是您的第二個鉤子:請求將由 tftp 記錄。

無論是否default使用特定于系統的配置文件,基本上我們談論的是 GRUB 配置文件。假設你使用 Kickstart 安裝系統,它會看起來像這樣

default?linux
prompt?0
timeout?1
label?linux
????????kernel?/images/yourdistro/vmlinuz
????????ipappend?2
????????append?initrd=/images/yourdistro/initrd.img?console=ttyS0,115200

現在,事情是這樣的:您有多種可能性在啟動時執行自定義程序:

  • 將可執行文件的路徑附加到參數中append。按照慣例,內核會將所有它不知道的參數發送到 pid 1。雖然我沒有測試 systemd 是否遵守約定并簡單地依次執行一個它不知道的參數,但我假設也是如此。

  • 計劃任務?,F在大多數 cron 實現都支持@boot時間定義。

  • init 系統,無論是 systemd 還是 openrc 或者好的 SYSV init。

最后但并非最不重要的一點是如何配置機器。我強烈建議不要重新發明輪子。我在(閉源)項目中有非常相似的要求。我們使用 kickstart 進行基本的系統安裝,并在重新啟動到Ansible Tower后簡單地執行一個 curl 命令,觸發更詳細的配置。由于我們有一個帶有 MAC 的 DHCP 服務器、為所述 MAC 保留的 IP 以及易于配置的主機名(dnsmasq、caugh、caugh),所以這不是什么大問題?;旧希覀兪謩右龅木褪亲?MAC 地址并分配 IP 和主機名,然后啟動機器。


查看完整回答
反對 回復 2023-08-07
  • 1 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號