登录
首页 >  Golang >  Go问答

从 Django View 将变量传递到远程(Golang)应用程序的最佳方法

来源:stackoverflow

时间:2024-04-24 21:00:36 487浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《从 Django View 将变量传递到远程(Golang)应用程序的最佳方法》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

我正在创建一个 Django Web 应用程序,它将协助准系统服务器部署,其中准系统服务器将 PXE 启动到自定义 LiveCD,以发送 cURL 命令将自身注册到 DRF REST API。

当 Django 收到 POST 请求时,它将远程启动一个 Go 应用程序,该应用程序将根据 REST API 中的条目找到裸机服务器,然后开始配置服务器。识别/将裸机服务器引入我的 Go 服务器的最佳方式是什么?

我的想法是要么使用解析器参数来识别服务器,然后 Go 将从 REST API 中提取基本的服务器信息,或者在 REST API 中添加布尔字段,然后 Go 应用程序将查找 TRUE 的条目当它开始设置裸机服务器时,将其翻转为 FALSE。

这是完成此任务的最佳方法还是有更好的方法?


解决方案


实际上,pxelinux带有基于系统mac地址的识别机制,并且可以相应地定制配置。因为无论如何你都需要对你的裸机服务器进行统计(端口安全有人吗?;)),所以你无论如何都应该知道你的裸机服务器上所有接口的 mac 地址。

您的目录通常如下所示(路径前缀可能不同)。

/srv/pxe/pxelinux.cfg/default

现在发生的情况是,您的系统启动,发送 dhcp 请求并获得包含 dhcp 选项“下一个服务器”和“文件名”的报价。当系统选择所述报价时,它将连接到“下一个服务器”并请求“文件名”,通常为 pxelinux.0。这是您的第一个潜在钩子:编写一个 tftp 服务器来处理请求并注册您的系统。

现在执行zq​​bczqbpxelinux.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 是否遵守约定并简单地依次执行一个它不知道的参数,但我假设是这样。
  • cron。现在大多数 cron 实现都支持 @boot 时间定义。
  • init 系统,无论是 systemd 还是 openrc 或者好的 sysv init。

最后但并非最不重要的一点是如何配置机器。我强烈建议不要重新发明轮子。我在(闭源)项目中有非常相似的要求。我们使用kickstart进行了基本的系统安装,并简单地拍摄了curl command after rebootAnsible Tower,触发了更详细的配置。由于我们有一个带有 mac 的 dhcp 服务器、为所述 mac 保留的 ip 以及易于配置的主机名(dnsmasq、caugh、caugh),所以这不是什么大问题。基本上,我们手动要做的就是注册 mac 地址并分配 ip 和主机名,然后启动机器。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>