{"id":26708,"date":"2016-09-28T09:38:12","date_gmt":"2016-09-28T07:38:12","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=26708"},"modified":"2016-09-28T09:38:12","modified_gmt":"2016-09-28T07:38:12","slug":"rundeck-job-scheduler-and-runbook-automation","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2016\/09\/28\/rundeck-job-scheduler-and-runbook-automation\/","title":{"rendered":"Rundeck &#8211; Job Scheduler and Runbook Automation"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p><a href=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2016\/09\/Rundeck-EditJob.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"26709\" data-permalink=\"https:\/\/mamchenkov.net\/wordpress\/2016\/09\/28\/rundeck-job-scheduler-and-runbook-automation\/rundeck-editjob\/\" data-orig-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2016\/09\/Rundeck-EditJob.png?fit=1064%2C732&amp;ssl=1\" data-orig-size=\"1064,732\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Rundeck-EditJob\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2016\/09\/Rundeck-EditJob.png?fit=660%2C454&amp;ssl=1\" class=\"aligncenter size-medium wp-image-26709\" src=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2016\/09\/Rundeck-EditJob-500x344.png?resize=500%2C344&#038;ssl=1\" alt=\"Rundeck-EditJob\" width=\"500\" height=\"344\" srcset=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2016\/09\/Rundeck-EditJob.png?resize=500%2C344&amp;ssl=1 500w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2016\/09\/Rundeck-EditJob.png?resize=768%2C528&amp;ssl=1 768w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2016\/09\/Rundeck-EditJob.png?resize=1024%2C704&amp;ssl=1 1024w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2016\/09\/Rundeck-EditJob.png?w=1064&amp;ssl=1 1064w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/rundeck.org\/\">Rundeck<\/a> is yet another one of those services that I want to get my hands on but haven&#8217;t yet got the time to. \u00a0The simplest way to describe it is: <em>cron<\/em> on steroids.<\/p>\n<p>Rundeck allows one to define the commands and then allow for execution on those commands manually, periodically or based on a certain trigger. \u00a0Imagine, for example, a deployment command that needs to run across some servers to which you are not comfortable giving access to developers, or even non-technical users. \u00a0You can create a command in Rundeck and give access to certain users to execute it, via clicking a button or two in a user friendly web interface.<\/p>\n<p>A side benefit to using Rundeck versus cron are the metrics. \u00a0Rundeck collects metrics like successful and failed executions, execution times, etc. \u00a0So it makes it easier for you to see that certain jobs are getting progressively slower or fail on specific weekdays, etc.<\/p>\n<p>The best part is that Rundeck is Open Source and self-hosted, so you don&#8217;t need to give sensitive access to some external web service.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>Rundeck is yet another one of those services that I want to get my hands on but haven&#8217;t yet got the time to. \u00a0The simplest way to describe it is: cron on steroids. Rundeck allows one to define the commands and then allow for execution on those commands manually, periodically or based on a certain &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2016\/09\/28\/rundeck-job-scheduler-and-runbook-automation\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Rundeck &#8211; Job Scheduler and Runbook Automation<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Rundeck - Job Scheduler and Runbook Automation #SysAdmin #DevOps #automation","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_links_to":"","_links_to_target":""},"categories":[1,6,18,133,62,1334],"tags":[2289],"keyring_services":[],"class_list":["post-26708","post","type-post","status-publish","format-standard","hentry","category-general","category-linux","category-programming","category-sysadmin","category-technology","category-web-work","tag-web-hosting"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":27447,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/03\/22\/bulletproof-bash-stop-script-on-error\/","url_meta":{"origin":26708,"position":0},"title":"Bulletproof Bash : Stop script on error","author":"Leonid Mamchenkov","date":"March 22, 2017","format":false,"excerpt":"The other day I've been puzzled by the results of a cron job script. \u00a0The bash script in question was written in a hurry a while back, and I was under the assumption that if any of its steps fail, the whole script will fail. \u00a0I was wrong. \u00a0Some commands\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":19985,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/01\/28\/3-things-to-remember-when-writing-cron-jobs\/","url_meta":{"origin":26708,"position":1},"title":"3 things to remember when writing cron jobs","author":"Leonid Mamchenkov","date":"January 28, 2014","format":false,"excerpt":"Here is a reminder to myself with three things to remember when writing cron jobs. \u00a0Surprisingly, even after doing it fairly frequently for years and years, I still get caught by one of these once in a while. User. \u00a0Just because the script is working fine under your user, it\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":22255,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/07\/24\/validating-website-html-css-and-links-from-the-command-line\/","url_meta":{"origin":26708,"position":2},"title":"Validating website HTML, CSS, and links from the command line","author":"Leonid Mamchenkov","date":"July 24, 2014","format":false,"excerpt":"When working on a long running projects, it's easy to lose track of HTML and CSS standard compliance. \u00a0Also, link rot is a common occurrence. \u00a0Gladly, there are command line tools that can be executed on a regular basis (think weekly or monthly cron jobs), that would check the site\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28287,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/12\/20\/mysql-optimize-repair-and-analyze\/","url_meta":{"origin":26708,"position":3},"title":"MySQL optimize, repair, and analyze","author":"Leonid Mamchenkov","date":"December 20, 2017","format":false,"excerpt":"Years ago I had the following script running as a cron job, but then I lost it somewhere.\u00a0 It took me a few minutes to find it again, but just in case I need it in the future, I'm saving it here. Found it here this time.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":18479,"url":"https:\/\/mamchenkov.net\/wordpress\/2013\/07\/08\/there-is-nothing-like-a-cron-job-that-runs-every-m\/","url_meta":{"origin":26708,"position":4},"title":"There is nothing like a cron job that runs every m&#8230;","author":"Leonid Mamchenkov","date":"July 8, 2013","format":"status","excerpt":"There is nothing like a cron job that runs every minute, inserts a few thousand lines into the DB and then ... breaks in the middle of the night. \u00a0Inbox is fun.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":25030,"url":"https:\/\/mamchenkov.net\/wordpress\/2015\/12\/10\/weird-php-error-output-bug\/","url_meta":{"origin":26708,"position":5},"title":"Weird PHP error output bug","author":"Leonid Mamchenkov","date":"December 10, 2015","format":false,"excerpt":"We came across this PHP bug at work today. \u00a0But before you go and read it, let me show you a use case. \u00a0See, if you can spot the problem. We had a cron job script which looked something like this (shortened for clarity): Crystal clear, no? Output a time\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/26708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=26708"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/26708\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=26708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=26708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=26708"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=26708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}