Cron 作为厨师配方的一部分执行日志旋转
我使用以下方法执行Cron 作为厨师配方的一部分执行日志旋转,cron,chef-infra,chef-recipe,logrotate,log-rotation,Cron,Chef Infra,Chef Recipe,Logrotate,Log Rotation,我使用以下方法执行日志旋转: bash 'adding_logrotate_for_consul' do code <<-EOH echo "" >> /etc/logrotate.conf echo "/tmp/output.log {" >> /etc/logrotate.conf echo -e "\tsize 20M" >> /etc/logrotate.conf echo -e "\tcreate 70
日志旋转
:
bash 'adding_logrotate_for_consul' do
code <<-EOH
echo "" >> /etc/logrotate.conf
echo "/tmp/output.log {" >> /etc/logrotate.conf
echo -e "\tsize 20M" >> /etc/logrotate.conf
echo -e "\tcreate 700 root root" >> /etc/logrotate.conf
echo -e "\trotate 3" >> /etc/logrotate.conf
echo "}" >> /etc/logrotate.conf
EOH
end
但是,在使用chef添加上述条目后,每次都必须在节点上手动运行以下命令:
logrotate -s /var/log/logstatus /etc/logrotate.conf
如何在chef recipe中包含上述命令,以便在文件大小达到20M后,可以使用chef recipe执行日志旋转???我认为您在这里做的一些事情比理想情况要少。让我一个接一个地说: 我使用以下方法执行日志旋转: bash“为领事添加日志旋转” 代码 这不是创建logrotate条目的好方法。Chef(和其他编排工具)有一个非常好的特性,叫做。它的基本含义是,您可以多次运行同一个配方,并且它只会收敛自身,或者在需要时“应用”自身。这样做的一个问题是,每次运行cookbook时,您的代码块都会运行—因此在运行5次之后,/etc/logrotate.conf中将有5个相同的条目。那不是很好 谢天谢地,有很多更好的方法来做你想做的事情。你熟悉这本书吗?这是一个网站,你可以找到许多预先制作的食谱来扩展你的食谱的功能。因此,对于您当前的问题,您可以使用名为的食谱。你如何在自己的食谱中使用它?您需要通过将以下内容添加到这些文件中来包含它: 伯克斯菲尔
source 'https://supermarket.chef.io'
metadata
元数据.RB
depends 'logrotate'
现在,您的食谱已经知道“logrotate”食谱,您可以使用它提供的厨师资源。因此,您可以创建以下配方:
logrotate_app 'app_with_logs' do
path '/tmp/output.log'
options ['size 20M']
rotate 3
create '700 root adm'
end
现在,当您运行您的配方时,这将创建logrotate条目,前提是它不存在。方便的(注意,这可能会在/etc/logrotate.d/而不是/etc/lograte.conf中创建条目。这是添加logrotate条目的首选方法)
继续下一部分
如何在chef recipe中包含上述命令,以便
文件大小调整后,可以使用chef recipe执行旋转
达到2000万
Logrotate作为程序自动运行,每天一次。运行时,它将检查/etc/logrotate.conf和/etc/logrotate.d/*中的所有条目,如果它们满足要求(在本例中,大小为20M),则运行它们。然而,由于它每天只运行一次,这取决于您的日志增长速度,因此在对其进行评估和旋转时,它可能会远远大于20M
现在,你有两个选择。或者,第一,让logrotate按预期的方式工作,如果日志的大小超过20M,则每天旋转一次日志。或者,您可以做您想做的事情,并在厨师食谱中运行该命令,尽管这不是一个好方法。但是,为了完整起见,我将告诉您如何使用Chef运行命令。但是记住!这也不是幂等的。因此,为什么这不是一个好的方式做这件事
要从厨师配方运行命令,请使用资源。例如:
execute 'rotate_my_log_because_I_cant_wait_24h' do
command 'logrotate -s /var/log/logstatus /etc/logrotate.conf'
end
将在您的节点上运行该命令。但同样,这不是推荐的方法。我认为有一些事情你做得不理想。让我一个接一个地说: 我使用以下方法执行日志旋转: bash“为领事添加日志旋转” 代码 这不是创建logrotate条目的好方法。Chef(和其他编排工具)有一个非常好的特性,叫做。它的基本含义是,您可以多次运行同一个配方,并且它只会收敛自身,或者在需要时“应用”自身。这样做的一个问题是,每次运行cookbook时,您的代码块都会运行—因此在运行5次之后,/etc/logrotate.conf中将有5个相同的条目。那不是很好 谢天谢地,有很多更好的方法来做你想做的事情。你熟悉这本书吗?这是一个网站,你可以找到许多预先制作的食谱来扩展你的食谱的功能。因此,对于您当前的问题,您可以使用名为的食谱。你如何在自己的食谱中使用它?您需要通过将以下内容添加到这些文件中来包含它: 伯克斯菲尔
source 'https://supermarket.chef.io'
metadata
元数据.RB
depends 'logrotate'
现在,您的食谱已经知道“logrotate”食谱,您可以使用它提供的厨师资源。因此,您可以创建以下配方:
logrotate_app 'app_with_logs' do
path '/tmp/output.log'
options ['size 20M']
rotate 3
create '700 root adm'
end
现在,当您运行您的配方时,这将创建logrotate条目,前提是它不存在。方便的(注意,这可能会在/etc/logrotate.d/而不是/etc/lograte.conf中创建条目。这是添加logrotate条目的首选方法)
继续下一部分
如何在chef recipe中包含上述命令,以便
文件大小调整后,可以使用chef recipe执行旋转
达到2000万
Logrotate作为程序自动运行,每天一次。运行时,它将检查/etc/logrotate.conf和/etc/logrotate.d/*中的所有条目,如果它们满足要求(在本例中,大小为20M),则运行它们。然而,由于它每天只运行一次,这取决于您的日志增长速度,因此在对其进行评估和旋转时,它可能会远远大于20M
现在,你有两个选择。或者,第一,让logrotate按预期的方式工作,如果日志的大小超过20M,则每天旋转一次日志。或者,您可以做您想做的事情,并在厨师食谱中运行该命令,尽管这不是一个好方法。但是,为了完整起见,我将告诉您如何使用Chef运行命令。但是记住!这也不是幂等的。因此,为什么这不是一个好的方式做这件事
要从厨师配方运行命令,请使用资源。例如:
execute 'rotate_my_log_because_I_cant_wait_24h' do
command 'logrotate -s /var/log/logstatus /etc/logrotate.conf'
end
将在您的节点上运行该命令。但同样,这不是推荐的方法。也许值得从
cron\u d