puppet 删除目录并将其替换为 link
puppet delete a directory and replace it with a link
我正在处理一个 Puppet 清单,它在我支持的设备中配置了一个路由器。路由器运行非常普通的 Debian 8 或 9。
问题在于路由器上的 SSD partitioned.I 我无法更改分区,因此必须解决根文件系统很小的问题。我找到了一个我正在尝试在 Puppet 中实施的解决方案,但我的第一次尝试对我来说并不合适,所以我想我会问社区。
我一直在阅读 Puppet 文档。不幸的是,我今天没有路由器可以玩,所以我无法测试我当前的解决方案。
我的问题是,到 df -H
时,根文件系统的容量已达到 95%,而 puppet 失败并抱怨容量不足 space。由于其他人很久以前做出的古怪决定,/opt/ 文件系统的大小是 / 的 5 倍,使用率为 10%。
所以我的解决方案,手动测试,是将 /var/cache/apt/archives/
移动到 /opt/apt-archives
,然后使用以下方法创建一个 symlink:
ln -s /opt/apt-archives /var/cache/apt/archives
有效并允许人偶 运行 无误地完成。
我的挑战是在 Puppet 中实现这个操作 class
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 中创建 link 的理解,我需要为删除存档目录的文件资源和创建 link.
的文件资源使用相同的名称
我错过了什么?
使用执行:
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 实施变通方法。我想说的是,请确保您添加了一些评论来解释为什么您必须这样做。
我正在处理一个 Puppet 清单,它在我支持的设备中配置了一个路由器。路由器运行非常普通的 Debian 8 或 9。
问题在于路由器上的 SSD partitioned.I 我无法更改分区,因此必须解决根文件系统很小的问题。我找到了一个我正在尝试在 Puppet 中实施的解决方案,但我的第一次尝试对我来说并不合适,所以我想我会问社区。
我一直在阅读 Puppet 文档。不幸的是,我今天没有路由器可以玩,所以我无法测试我当前的解决方案。
我的问题是,到 df -H
时,根文件系统的容量已达到 95%,而 puppet 失败并抱怨容量不足 space。由于其他人很久以前做出的古怪决定,/opt/ 文件系统的大小是 / 的 5 倍,使用率为 10%。
所以我的解决方案,手动测试,是将 /var/cache/apt/archives/
移动到 /opt/apt-archives
,然后使用以下方法创建一个 symlink:
ln -s /opt/apt-archives /var/cache/apt/archives
有效并允许人偶 运行 无误地完成。
我的挑战是在 Puppet 中实现这个操作 class
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 中创建 link 的理解,我需要为删除存档目录的文件资源和创建 link.
的文件资源使用相同的名称我错过了什么?
使用执行:
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 实施变通方法。我想说的是,请确保您添加了一些评论来解释为什么您必须这样做。