从Django视图向远程(Golang)应用程序传递变量的最佳方法
我正在创建一个Django web应用程序,它将帮助barebone服务器部署,其中一个barebone服务器将PXE引导到一个定制的LiveCD,以发送一个cURL命令,将自己注册到DRF REST API 当Django收到从Django视图向远程(Golang)应用程序传递变量的最佳方法,django,go,django-rest-framework,microservices,Django,Go,Django Rest Framework,Microservices,我正在创建一个Django web应用程序,它将帮助barebone服务器部署,其中一个barebone服务器将PXE引导到一个定制的LiveCD,以发送一个cURL命令,将自己注册到DRF REST API 当Django收到POST请求时,它将远程启动一个Go应用程序,根据RESTAPI中的条目找到裸体服务器,然后开始配置服务器。识别裸骨服务器/将其引入我的Go服务器的最佳方式是什么 我的想法是使用一个解析器参数来识别服务器,然后Go将从restapi中提取裸体服务器信息,或者在restap
POST
请求时,它将远程启动一个Go应用程序,根据RESTAPI中的条目找到裸体服务器,然后开始配置服务器。识别裸骨服务器/将其引入我的Go服务器的最佳方式是什么
我的想法是使用一个解析器参数来识别服务器,然后Go将从restapi中提取裸体服务器信息,或者在restapi中添加一个布尔字段,Go应用程序将查找正确的条目,然后在开始设置裸体服务器时将其翻转为FALSE
这是实现这一目标的最佳方法还是有更好的方法?实际上,PXELINUX提供了一种基于系统MAC dress的识别机制,并且可以相应地定制配置。由于您无论如何都需要对裸机服务器进行计费(port security Anywhere?;),因此您应该知道裸机服务器上所有接口的MAC地址 您的目录通常如下所示(路径前缀可能不同) 现在,您的系统启动,发送一个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记录
不管使用的是默认值
还是系统特定的配置文件,基本上我们谈论的是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
现在,事情是这样的:您有几种可能在引导时执行自定义程序:
- 将可执行文件的路径附加到
参数。按照惯例,内核将把它不知道的所有参数发送给pid 1。虽然我没有测试systemd是否遵守约定,只是执行一个它不知道的参数,但我也假设了同样的情况Append
- 克朗。现在大多数cron实现都支持
时间定义@boot
- init系统,无论是systemd、openrc还是good ol'SYSV init
最后但并非最不重要的一点是如何配置机器。我强烈建议不要重新发明轮子。我在一个(封闭源代码)项目中也有类似的需求。我们使用kickstart进行基本的系统安装,并简单地启动一个to,触发更详细的配置。因为我们有一个带有MAC的DHCP服务器,一个为所述MAC保留的IP和一个易于配置的主机名(dnsmasq、caugh、caugh),所以问题不大。基本上,我们只需手动注册MAC地址并分配IP和主机名,然后启动机器。实际上,PXELINUX提供了一种基于系统MAC地址的识别机制,并且可以相应地定制配置。由于您无论如何都需要对裸机服务器进行计费(port security Anywhere?;),因此您应该知道裸机服务器上所有接口的MAC地址 您的目录通常如下所示(路径前缀可能不同) 现在,您的系统启动,发送一个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记录
不管使用的是默认值
还是系统特定的配置文件,基本上我们谈论的是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
现在,事情是这样的:您有几种可能在引导时执行自定义程序:
- 将可执行文件的路径附加到
参数。按照惯例,内核将把它不知道的所有参数发送给pid 1。虽然我没有测试systemd是否遵守约定,只是执行一个它不知道的参数,但我也假设了同样的情况Append
- 克朗。现在大多数cron实现都支持
时间定义@boot
- init系统,无论是systemd、openrc还是good ol'SYSV init
最后但并非最不重要的一点是如何配置机器。我强烈建议不要重新发明轮子。我在一个(封闭源代码)项目中也有类似的需求。我们使用kickstart进行基本的系统安装,并简单地启动一个to,触发更详细的配置。因为我们有一个带有MAC的DHCP服务器,一个为所述MAC保留的IP和一个易于配置的主机名(dnsmasq、caugh、caugh),所以问题不大。基本上,我们只需手动注册MAC地址,分配IP和主机名,然后启动机器。问题还不清楚。您是否在询问如何解析GET/POST请求中的参数