对于多个项目,我们将为每个项目设置2-6个RPi。每个项目运行在不同的网络上,对于其中的一些网络,我们可以使用DHCP,对于其他RPi必须使用静态IP地址进行连接。
而且,每个RPi都需要一个顺序不同的主机名。例如,对于一个具有三个RPi的项目,主机名需要是PROCCESS1、PROCESS2、PROCESS3。
所有的RPi都运行完全相同的软件,每个RPi都有一个连接的监视器。
目前的工作流程是:
这是一项繁琐的任务,在那里会出现错误,需要花费大量的时间。步骤1不能被自动化,因为我们没有硬件(尽管EtcherPro最终会节省很多时间)。自动化的步骤3和4将是伟大的,如果这可以实现。我读过一些关于Ansible的文章,也遇到过厨师和木偶,但我还没有深入其中的任何一个。
使用Ansible和剧本是一个好的方向,进一步发展吗?是否可以使用此工具实现安装自动化?是否有更好/更容易的解决办法,还是根本不可能?如果有人有一些提示,或可以指导正确的方向,那将是很好的。
发布于 2022-05-06 02:54:04
即使没有Ansible或其他配置管理工具,这些步骤也没有理由是手动的:您可以使用shell脚本驱动所有东西,从而获得自动化的所有好处:不再有错误、一致的部署和更快的配置。使用Ansible可以帮助使流程更加模块化和结构化,但它根本不允许您做任何新的事情。
忽略了使用什么工具来驱动配置的问题,我想建议一个您可能没有考虑过的选项:在将其烧录到microsd卡之前,可以在映像上执行所有配置。您可以在本地目录上挂载raspberry pi os映像,然后在该目录中进行所有配置更改。我使用这样的程序:
现在,您可以在映像上创建和修改配置文件,以便.
但是,如果您想做其他事情,比如更新或安装软件包呢?如果安装qemu-user-static包并正确配置binfmt_misc模块( qemu-user-static包的现代版本将自动完成此操作),您将能够在主机上运行Raspberry二进制文件。这允许您在映像中运行命令,如下所示:
# systemd-nspawn -D /mnt apt update
# systemd-nspawn -D /mnt apt upgrade -y
# systemd-nspawn -D /mnt apt install -y git或者注入shell脚本:
# systemd-nspawn -D /mnt --bind=$PWD/config.sh:/config.sh sh /config.sh这里我使用的是systemd-nspawn,它有点像chroot (在本例中),但它负责安装特殊的文件系统(如/sys和/proc ),并且有各种有趣的选项(比如将文件或目录绑定到映像中的--bind选项)。
完成之后,卸载文件系统并断开循环设备:
# umount /mnt/boot /mnt
# losetup -d /dev/loop0并将自定义的映像写入sd卡:
# dd if=work.img of=/dev/sdb bs=4M您可以将这里描述的整个过程包装在脚本中,并让它使用参数来配置网络(指定静态地址或使用dhcp)等等。
https://devops.stackexchange.com/questions/15915
复制相似问题