我正在使用 Puppet 清单,在我支持的设备中配置路由器。路由器运行非常普通的香草 Debian 8 或 9。
问题在于路由器上 SSD 的分区方式。我无法更改分区,因此必须解决根文件系统很小的事实。我找到了一个我正在尝试在 Puppet 中实施的解决方案,但我的第一次尝试对我来说并不合适,所以我想我会问社区。
我一直并且正在阅读 Puppet 文档。不幸的是,我今天没有路由器可以玩,所以我无法测试我当前的解决方案。
我的问题是,df -H
根文件系统的容量为 95%,而 puppet 未能抱怨空间不足。由于其他人很久以前做出的古怪决定,/opt/ 文件系统的大小是 / 的 5 倍,并且使用率为 10%。
因此,我的手动测试解决方案是移动/var/cache/apt/archives/
到/opt/apt-archives
然后使用以下方法创建符号链接:
ln -s /opt/apt-archives /var/cache/apt/archives
这有效并允许人偶运行完成而不会出错。
我的挑战是在 Puppet 类中实现这个操作
class bh::profiles::move_files {
$source_dir = '/var/cache/apt/archives'
$target_dir = '/opt/apt-cache'
file { $targetDir :
ensure => 'directory',
source => "file://${source_dir}",
recurse => true,
before => File[$source_dir]
}
file { $source_dir :
ensure => 'absent',
purge => true,
resurse => true,
force => true,
ensure => link,
target => "file://${target_dir}"
}
}
在一个文件资源中重复确保是不正确的。根据我对在 puppet 中创建链接的理解,我需要为删除档案目录的文件资源和创建链接的文件资源使用相同的名称。
我错过了什么?
使用执行:
exec { 'Link /var/cache/apt/archives':
command => 'mv /var/cache/apt/archives /opt/apt-archives
ln -s /opt/apt-archives /var/cache/apt/archives',
path => '/bin',
unless => 'test -L /var/cache/apt/archives',
}
请注意,Puppet 并非真正旨在解决此类自动化问题,尽管使用 Exec 可以完成大多数事情。
您的解决方案听起来像是一种变通方法,因此使用 Exec 实现变通方法是完全可以的。我想说,只要确保添加一些注释来解释为什么必须做这样的事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句