Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Django视图向远程(Golang)应用程序传递变量的最佳方法_Django_Go_Django Rest Framework_Microservices - Fatal编程技术网

从Django视图向远程(Golang)应用程序传递变量的最佳方法

从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

我正在创建一个Django web应用程序,它将帮助barebone服务器部署,其中一个barebone服务器将PXE引导到一个定制的LiveCD,以发送一个cURL命令,将自己注册到DRF REST API

当Django收到
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
现在,事情是这样的:您有几种可能在引导时执行自定义程序:

  • 将可执行文件的路径附加到
    Append
    参数。按照惯例,内核将把它不知道的所有参数发送给pid 1。虽然我没有测试systemd是否遵守约定,只是执行一个它不知道的参数,但我也假设了同样的情况
  • 克朗。现在大多数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
现在,事情是这样的:您有几种可能在引导时执行自定义程序:

  • 将可执行文件的路径附加到
    Append
    参数。按照惯例,内核将把它不知道的所有参数发送给pid 1。虽然我没有测试systemd是否遵守约定,只是执行一个它不知道的参数,但我也假设了同样的情况
  • 克朗。现在大多数cron实现都支持
    @boot
    时间定义
  • init系统,无论是systemd、openrc还是good ol'SYSV init

最后但并非最不重要的一点是如何配置机器。我强烈建议不要重新发明轮子。我在一个(封闭源代码)项目中也有类似的需求。我们使用kickstart进行基本的系统安装,并简单地启动一个to,触发更详细的配置。因为我们有一个带有MAC的DHCP服务器,一个为所述MAC保留的IP和一个易于配置的主机名(dnsmasq、caugh、caugh),所以问题不大。基本上,我们只需手动注册MAC地址,分配IP和主机名,然后启动机器。

问题还不清楚。您是否在询问如何解析GET/POST请求中的参数