Chef infra chef cron选项卡不工作

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

我正在尝试创建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
  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不工作的帮助吗?