Skip to main content

How to add successive cron via puppet

I want to add successive crons via puppet, first one to set as each 10 minutes, and the 2nd one to run in Sunday 7:00PM.

The first cron in puppet is working properly, but the 2nd one shows the below error: "Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid relationship: Cron[notifyinactivetargetweekly] { require => File[...notifyinactivetargetweekly.sh] }, because File[...notifyinactivetargetweekly.sh] doesn't seem to be in the catalog Warning: Not using cache on failed catalog Error: Could not retrieve catalog; skipping run"

Below are the manifest code.
cron { 'firstsynccron':
    command => "${phpapp::DocRootDir}/firstcronsync.sh ${scmdemophp::Environment} ${phpapp::DocRootDir}",
    require => File["${phpapp::DocRootDir}/firstcronsync.sh"],
    minute  => '*/10',
    environment=>["COMPOSER_HOME=${phpapp::DocRootDir}",
                    "SYMFONY_ENV=${phpapp::Environment}",
                    "SYMFONY_DEBUG=${phpapp::Debug}",
                    "PATH=.../usr/local/sbin:/usr/local/bin:/sbin/:/bin/:/usr/sbin/:/usr/bin/"
                ],

}->
cron { 'notifyweeklycron':
    command => "${phpapp::DocRootDir}/notifyweeklycron.sh ${phpapp::Environment} ${phpapp::DocRootDir}",
    require => File["${phpapp::DocRootDir}/notifyweeklycron.sh"],
    minute  => '00',
    hour  => '19',
    weekday  => 'Sunday',
    environment=>["COMPOSER_HOME=${phpapp::DocRootDir}",
                    "SYMFONY_ENV=${phpapp::Environment}",
                    "SYMFONY_DEBUG=${phpapp::Debug}",
                    "PATH=.../usr/local/sbin:/usr/local/bin:/sbin/:/bin/:/usr/sbin/:/usr/bin/"
                ],

}->
The hieradata consists the below classloading:
classes:
  - phpapp::mysymfonydeploy
the init.pp of edsconsoledeploy consists:
class scmdemophp {
    $DocRootDir = "/var/code"
and I checked that the file "/app/code/notifyinactivetargetweekly.sh" exists.

UPDATES:

I have created the same, but for some reason the cron is not running as per timing:
file { "${DocRootDir}/notifyweeklycron.sh":
  ensure  => file,
  content => "... whatever's in the file, or use a template/source ...",
}->
cron { 'notifyweeklycron':
    command => "${phpapp::DocRootDir}/notifyweeklycron.sh ${phpapp::Environment} ${phpapp::DocRootDir}",
    require => File["${phpapp::DocRootDir}/notifyweeklycron.sh"],
    minute  => '*/15',
    environment=>["COMPOSER_HOME=${phpapp::DocRootDir}",
                    "SYMFONY_ENV=${phpapp::Environment}",
                    "SYMFONY_DEBUG=${phpapp::Debug}",
                    "PATH=.../usr/local/bin:/sbin/:/bin/:/usr/sbin/:/usr/bin/"
                ],

}
but its not running after 15 minutes, need help
  1. The puppet log says: File[/var/code/firstsynccron.sh]/mode: mode changed '0664' to '0751'
  2. but it does not showing the same for File[/var/code/notifyweeklycron.sh]/mode: mode changed '0664' to '0751'
  3. frequency changes are reflecting though
I was so confused and searching what to do, I received an answer on a tech forum, and that I want to describe here:



What I was missing was using a requirebeforesubscribe or notify parameter, which says that a resource is related to a file or other resource must contain a valid reference.

The require is requiring a file resource which is defined in your Puppet manifests, and also surprisingly it does not necessarily a file on the server location. So what was there in my code:
require => File["${phpapp::DocRootDir}/notifyinactivetargetweekly.sh"],
So puppet was expecting, a file resource destined at /var/code/notifyweeklycron.shshould exist as per my manifest, and the fix was:
file { "${phpapp:DocRootDir}/notifyweeklycron.sh":
  ensure  => file,
  content => "... whatever's in the file, or use a template/source ...",
}
My require issue has been resolved.

Comments

Popular posts from this blog

Layered architecture of a modern web application - Analyzing needs of CMS

  Layered architecture of a modern web application discussed nowadays, in any framework Throughout my entire career, I have searched for the word design and architecture, and I am talking about Application Design in Software Development. Today I am going to discuss one same thing with you. When design a web applications solution architecture, the aspects are commonly Performance, Scalability, Cost effective and Robust. Now performance and scalability comes with layers in an application. A web application serving a particular requirement. And a specific feature which you can break down from the requirement, obviously asks for a feature, and that is scalability. Think about a shopping cart feature, and it requires to be scalable in terms of number of end users interreacting at any specific time. We generally think about how the feature can be scalable enough and then comes the obvious factor which is layers. A layer can be a hosting solution, a framework, a third party solution like...

What is DevOps and what should I learn? - Aniruddha Banerjee - Medium

The most necessary and well-discussed topic was, why should I learn DevOps….. Most of the tech guys like me prefer to introduce myself as a Scrum specialist, Agile developer or maybe the latest term “Fullstack Developer”. Well, what I want to say that, all these impressive adjectives are basically referring to those who work within the periphery of DevOps. DevOps is Dev(development) and Ops(operation), that we all know. We know that it’s a culture, but when the question arises, what should I learn, become a DevOps cultured geek, I found myself into tons of Certifications, billions of tools, trillions of methodologies. Not a joke, but if you fall under a situation like me, when Corporate pushing me to become DevOps cultured, but I feared about Exams(it’s a childhood phobia I adopted :P), rather practically implement something worthy, or at least tried it, I became aware at the end that, this someone already had achieved, I should try something new. To study DevOps, I think, i...

Composer and dependency injection

According to wikipedia, COMPOSER is an application-level package manager for PHP, and we will learn few more features about it. Download & Setup Windows : Download and run  Composer-Setup.exe Preferred way: Know your PHP version open cmd or gitbash and run php –v Prepare a shell script/bat file (composersetup.sh/composersetup.bat) Content of the shell script executable are: php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52 599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061’) { echo 'Installer verified'; } else { echo 'Installer corrupt’; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" Perhaps you noticed the php execution statement is in blue color. Whats in it? ...