Chef infra chef cron选项卡不工作
我正在尝试创建cron,它将在每天早上3:15运行,使用以下方法:Chef infra chef cron选项卡不工作,chef-infra,chef-recipe,Chef Infra,Chef Recipe,我正在尝试创建cron,它将在每天早上3:15运行,使用以下方法: if node.roles.include?('cloudera-manager') cookbook_file '/usr/local/bin/cloudera-manager-db-backup.sh' do owner 'root' group 'root' mode 0755 action :create end cron 'cloudera-manager-db-backup' do acti
if node.roles.include?('cloudera-manager')
cookbook_file '/usr/local/bin/cloudera-manager-db-backup.sh' do
owner 'root'
group 'root'
mode 0755
action :create
end
cron 'cloudera-manager-db-backup' do
action :create
minute '15'
hour '3'
user 'root'
command '/usr/local/bin/cloudera-manager-db-backup.sh'
end
cat cloudera-manager-db-backup.sh.erb
#!/bin/bash
# Executes a dump of the postgres database for cloudera manager, gzips the file, upload to s3 and remove file from local machine
<%if node.chef_environment == 'prod'-%>
NAME=$(hostname)
TIME=`date +%Y-%m-%d_%H-%M-%S`
PGPASSWORD=$(head -1 /var/lib/cloudera-scm-server-db/data/generated_password.txt) pg_dump -p 7432 -U cloudera-scm scm > "/srv/${NAME}_${TIME}.psql"
gzip "/srv/${NAME}_${TIME}.psql"
s3cmd put "/srv/${NAME}_${TIME}.psql.gz" s3://psqlbackup/prod/
rm -rf /srv/${NAME}_${TIME}.psql.gz
<%elsif node.chef_environment == 'qa'-%>
NAME=$(hostname)
TIME=`date +%Y-%m-%d_%H-%M-%S`
PGPASSWORD=$(head -1 /var/lib/cloudera-scm-server-db/data/generated_password.txt) pg_dump -p 7432 -U cloudera-scm scm > "/srv/${NAME}_${TIME}.psql"
gzip "/srv/${NAME}_${TIME}.psql"
s3cmd put "/srv/${NAME}_${TIME}.psql.gz" s3://psqlbackup/qa/
rm -rf /srv/${NAME}_${TIME}.psql.gz
<%elsif node.chef_environment == 'dev'-%>
NAME=$(hostname)
TIME=`date +%Y-%m-%d_%H-%M-%S`
PGPASSWORD=$(head -1 /var/lib/cloudera-scm-server-db/data/generated_password.txt) pg_dump -p 7432 -U cloudera-scm scm > "/srv/${NAME}_${TIME}.psql"
gzip "/srv/${NAME}_${TIME}.psql"
s3cmd put "/srv/${NAME}_${TIME}.psql.gz" s3://psqlbackup/dev/
rm -rf /srv/${NAME}_${TIME}.psql.gz
<%end-%>
#/bin/bash
#为cloudera manager执行postgres数据库转储,gzip文件,上载到s3并从本地计算机删除文件
名称=$(主机名)
时间=`date+%Y-%m-%d\u%H-%m-%S`
PGPASSWORD=$(head-1/var/lib/cloudera scm server db/data/generated_password.txt)pg_dump-p7432-U cloudera scm>“/srv/${NAME}{U${TIME}.psql”
gzip“/srv/${NAME}{TIME}.psql”
s3cmd put“/srv/${NAME}{TIME}.psql.gz”s3://psqlbackup/prod/
rm-rf/srv/${NAME}{TIME}.psql.gz
名称=$(主机名)
时间=`date+%Y-%m-%d\u%H-%m-%S`
PGPASSWORD=$(head-1/var/lib/cloudera scm server db/data/generated_password.txt)pg_dump-p7432-U cloudera scm>“/srv/${NAME}{U${TIME}.psql”
gzip“/srv/${NAME}{TIME}.psql”
s3cmd put“/srv/${NAME}{TIME}.psql.gz”s3://psqlbackup/qa/
rm-rf/srv/${NAME}{TIME}.psql.gz
名称=$(主机名)
时间=`date+%Y-%m-%d\u%H-%m-%S`
PGPASSWORD=$(head-1/var/lib/cloudera scm server db/data/generated_password.txt)pg_dump-p7432-U cloudera scm>“/srv/${NAME}{U${TIME}.psql”
gzip“/srv/${NAME}{TIME}.psql”
s3cmd put“/srv/${NAME}{TIME}.psql.gz”s3://psqlbackup/dev/
rm-rf/srv/${NAME}{TIME}.psql.gz
我遇到的问题是,此文件(/usr/local/bin/cloudera manager db backup.sh)是在所有环境中创建的,但有以下内容:
<%if node.chef_environment == 'prod'-%>
NAME=$(hostname)
TIME=`date +%Y-%m-%d_%H-%M-%S`
PGPASSWORD=$(head -1 /var/lib/cloudera-scm-server-db/data/generated_password.txt) pg_dump -p 7432 -U cloudera-scm scm > "/srv/${NAME}_${TIME}.psql"
gzip "/srv/${NAME}_${TIME}.psql"
s3cmd put "/srv/${NAME}_${TIME}.psql.gz" s3://psqlbackup/prod/
rm -rf /srv/${NAME}_${TIME}.psql.gz
名称=$(主机名)
时间=`date+%Y-%m-%d\u%H-%m-%S`
PGPASSWORD=$(head-1/var/lib/cloudera scm server db/data/generated_password.txt)pg_dump-p7432-U cloudera scm>“/srv/${NAME}{U${TIME}.psql”
gzip“/srv/${NAME}{TIME}.psql”
s3cmd put“/srv/${NAME}{TIME}.psql.gz”s3://psqlbackup/prod/
rm-rf/srv/${NAME}{TIME}.psql.gz
根据cloudera-manager-db-backup.sh.erb node.chef_环境,我希望每个env上都有单独的文件
第二个问题是,即使文件是在所有机器上创建的,但cron只在一台机器上运行,这也是在错误的时间,cron应该在每天凌晨3:15运行,但它在00:00(午夜)运行
有人能帮我做这个吗你正在使用一个
食谱文件
,但是你想要一个模板
。Cookbook文件按“原样”删除,但模板是使用ERB呈现的(《代码》)有关于为什么cron在凌晨3:15不工作的帮助吗?