Linux puppet删除目录并用链接替换它
我正在使用木偶清单,在我支持的设备中配置路由器。路由器运行的是非常普通的Debian 8或9 问题在于路由器上SSD的分区方式。我无法更改分区,因此必须解决根文件系统很小的问题。我已经找到了一个解决方案,我正试图在Puppet中实现,但我的第一次尝试对我来说并不合适,所以我想我会询问社区 我一直在读木偶文件,现在也在读。不幸的是,我今天没有路由器,所以我无法测试我当前的解决方案 我的问题是,通过Linux puppet删除目录并用链接替换它,linux,puppet,Linux,Puppet,我正在使用木偶清单,在我支持的设备中配置路由器。路由器运行的是非常普通的Debian 8或9 问题在于路由器上SSD的分区方式。我无法更改分区,因此必须解决根文件系统很小的问题。我已经找到了一个解决方案,我正试图在Puppet中实现,但我的第一次尝试对我来说并不合适,所以我想我会询问社区 我一直在读木偶文件,现在也在读。不幸的是,我今天没有路由器,所以我无法测试我当前的解决方案 我的问题是,通过df-H根文件系统的容量达到了95%,而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:
exec{'Link/var/cache/apt/archives':
命令=>'mv/var/cache/apt/archives/opt/apt archives
ln-s/opt/apt archives/var/cache/apt/archives',
路径=>'/bin',
除非=>'test-L/var/cache/apt/archives',
}
请注意,Puppet并不是专门为解决像这样的自动化问题而设计的,尽管使用Exec可以完成大多数事情
您的解决方案听起来像是一种变通方法,因此使用Exec实现变通方法完全可以。我会说,只要确保你添加一些注释来解释为什么你必须这样做。我开始写一个关于
文件
如何工作的长答案,但最终,它将归结为“按照Alex的建议,使用执行器
完成工作。”所以我决定不麻烦了。谢谢你的回答和支持性评论。我会尽快试试这个。