今天我安装了一台新的 ESX 7.0 Hypervisor 机器。我最初的目标是获取一些 RAID 状态报告。
我创建了一个 python 脚本,希望通过 crontab 作业来运行它。这是因为我的 RAID 控制器 (Supermicro 3108) 的驱动程序存在故障,并且监控中存储设备的所有状态都显示为未知。
我能够创建并运行我的 python 脚本并将其添加到 crontab。
/bin/kill $(cat /var/run/crond.pid)
/bin/echo '5 0 * * * /path/to/script > /full/path/to/logfile 2>&1' >> /var/spool/cron/crontabs/root
/bin/busybox crond
但是,当我想让 crontab 更改在重启后持久保存时,我发现无法在 ESX 7.X 中写入文件。
/etc/rc.local - write to permissions denied.
chmod xxxx /etc/rc.local - Operation not permitted.
我认为这与以下方面有关:https://kb.vmware.com/s/article/78689
我正在使用我的 root 用户并启用 ssh 来登录。
有人能提供关于如何重新获得 ESX 7.X 中文件权限的提示吗?
答案1
正如 Chopper3 所说,从设计上讲,您确实不应该在 vSphere 主机上运行除 ESXi 之外的任何东西。而这项新的安全措施正符合这一要求,因为锁定文件系统可以带来巨大的安全性改进。
另外,请记住,在许多较大的环境中,ESXi 甚至可能没有持久存储,因为主机通过网络使用 ESXi 进行 PXE 启动,并且只将所需的内容保存在 RAM 中。
关于此问题的解决方法是使用您已经确定的 PowerCLI。
答案2
我同意其他贡献者的观点,即不要在 ESXi“内部”执行任何操作,而是使用 PowerCLI 等受支持的工具进行远程管理。
不过,我也想帮助您解决最初的问题:即使在 ESXi 7.0 中,某些文件仍然可以编辑,例如 /etc/rc.local.d/local.sh。此脚本将由 /etc/rc.local 执行,因此您可以在那里添加命令。
您只需注意,如果您的主机上启用了 UEFI 安全启动,则不会执行此脚本。
答案3
ESXi 从来都不是、现在当然也不是您应该随意尝试的通用 Linux,不幸的是,太多人选择忽略这一点,并给自己和 VMware 支持带来了问题 - 所以他们关闭了这扇大门,或者至少试图这样做,毫无疑问,一些自作聪明的人会想出某种方式来破解它,使他们的生活变得更加困难,但您应该按照产品的用途来使用它。