So basically RunDeck?
You should look into existing solutions, rolling your own is a massive effort. But to answer your question: You don't "need" JavaScript for simple web sites that reload the page on every action. JavaScript is used to make the page more interactive and faster - see how on Reddit, comments are saved instantly and you don't need to wait for a whole page load? That's enabled by JavaScript.
These days, web applications are often single page applications (SPAs), meaning there are no page reloads and all content is displayed and made interactive through JavaScript. These type of applications are what frameworks such as React, Angular or Aurelia are for. Instead of emitting a full HTML page, the backend would become a JSON API, which then is also accessible by other applications.
You could potentially look at RunDeck for this type of thing. It supports LDAP/AD authentication, with the ability to limit certain jobs to certain groups. You can run ad-hoc commands as if you were on the command line on the localhost, or on set of pre-defined remote hosts. It also has the ability to store pre-configured jobs that execute a series of command or scripts in a pretty nicely defined workflow. It integrates nicely with a number of different tools like Jenkins, puppet, chef, etc and most importantly (I think) is that is has a sense of history in that tracks when each job was executed, by who, and what the output/results were.
You could use one of many purpose built job schedulers. Rundeck is a cool one:
You could also abuse Jenkins. It isn't really designed to be a job scheduler but many people use it like it's cron on steroids.
Or modify your application to use a queue. I'm more familiar with Python and Ruby where Celery and Resque are the favourites.
For PHP it looks like php-resque is good.
http://rundeck.org is not bad. It can be ran as a single vm acting as a master/slave, but can be scaled to any number of slaves. You can have any machine act as a slave via ssh keys and then rundeck will execute whatever you want on them and will track the result of that. It also has error handling (I.e. If the job fails, take "X" action). It's as simple as you want to make it but can grow to what you want/need it to be.
Flask is a general purpose web framework. What you seem to want is a specific purpose web application that allows safe and audited execution of scripts. Look into Rundeck for this purpose http://rundeck.org and save yourself reinventing this particular wheel.
Ansible is where it's at. Ansible Tower (the GUI) is free for up to 10 nodes. Other than that, pay up or use something like http://rundeck.org/
You seriously should consider learning proper terminal use if you're doing system administration though. Nothing scary in it. And Ansible is just scripts.
In that case, check this out:
http://bencane.com/2014/07/17/integrating-saltstack-with-other-services-via-salt-api/
I think it's exactly what you're looking for. If you already use Rundeck, you may also be interested in this
http://rundeck.org/news/2014/03/20/Rundeck-and-Salt-at-Salesforce.html
Not really but we honestly never make that many adhoc changes on servers. But the biggest problem we had was that we have about 20 different AWS accounts, which means that infrastructure was spread across different VPCs and two different data centers. Since we made it a a purpose that we would not expose any individual machine to the outside network, it would be very difficult to implement mcollective because it needs to be on shared MQ server. What we did instead, was implement Rundeck. It was actually incredibly easy to set up and it's able to parse ec2 tags. Since we tagged each machine with its role and it's environment already we can do things like "free -m" on all machines with "tags: production+redis".
Rundeck is pretty cool. People should know about it more.
SSH is fine. Above that, I've used Jenkins in the past versus cronjobs to manage as much as I could centrally. Obviously tie jenkins+ssh into specific accounts that can only run specific commands over SSH.
But I've heard Rundeck is better than Jenkins for things like this: http://rundeck.org/
I'm not sure if it will fit your requirements, but I really like rundeck. Have a look at this rundeck demo video for example.
It's useful as a scheduler or an at-request scheduler.
I was in your exact same spot a year ago, writing tools that made my life easier/automating things in IT. I wanted my co-workers to use them too but they couldn't bear using command line to run them.
and then I found Rundeck. An amazing tool that essentially lets you have a website for running scripts/jobs, executing them locally or on remote machnies/nodes. It is great and a breeze to setup. (And free, they also offer an HA enterprise solution).
If you don't have the time to write your own web app in Django I believe rundeck will do what you need and more. It even allows running jobs on schedules or triggering them through a REST api.
Yay rundeck.
There is a tool called rundeck which gives you an web gui (as well as REST API and CLI tools), that you can run ad-hoc commands among servers or even use it to run ansible, puppet, salt, chef, etc.
You also can use it to send chat on IRC (or Slack), save the command output to Amazon S3, update ticket (JIRA, redmine), send email if commands fails, etc.
This is a good blog post on Ansible pull:
http://www.stavros.io/posts/automated-large-scale-deployments-ansibles-pull-mo/
Some people use Rundeck as an alternative to Tower:
We're pretty much doing this (in some cases), but instead of StackStorm we're running ansible from RunDeck. An absolute must for the slack end is integration with hubot-auth for some control. ChatOps is cool, but it shouldn't be the wild wild west.
At the smallest scale, at
on Linux is an option.
At a slightly bigger but still small scale, plain old Cron or Windows Task Scheduler as others have already said.
At a larger scale, look at Rundeck.
You can also use Rundeck for a FOSS, Tower-like experience. I think Ansibles $100/month plan for tower is reasonable, but my CFO does not. Its the compromise method Im headed toward. That or a new gig :)
AWX as mentioned previously is great, but it's also Ansible-only (I'd highly recommend learning Ansible or some other config management tool in general, but maybe you're at that point yet). Rundeckis a decent alternative and allows for regular ol' bash scripts. I've also used CI tools (e.g. jenkins, gitlab-ci) as a poor man's job scheduler before, but I wouldn't recommend that.
If you can use WinRM to run commands, you might want to look at Rundeck. I've never used it with Windows, but it sounds like what you're looking for. You setup your jobs in Rundeck and then delegate them to run on specific nodes.
It keeps logs of each run of every job centrally, and you can run either scripts/commands that are already on the target node or scripts you store in rundeck and are copied to the node and run from there.
2 caveats:
I wouldn't use "select all" as a default, then. You can pull parameters dynamically via a webcall, so that dropdown list can be what you want it to be. http://rundeck.org/1.6.2/manual/job-options.html#remote-option-values
By script I ment script step. It's just like normal command step, but you can define entire script in Rundeck. The script doesn't have to be present on the node, Rundeck will copy it there and execute it.
We use Chef Solo and Jenkins to pull code from various repos and build our servers. There are the server configuration cookbooks as well as website code that is built on deploy. For the most part it deploys to Amazon S3.
Devs/producers do database work on staging and it's diffed and pulled into production. It helps having a dev with MySQL certs on board as well to run all that stuff.
Our goal in the next year is to have deploys fully automated through RunDeck for continuous deployment so that devs have access to infrastructure necessary to build and access servers (while still properly billing the correct client), and then firewalling off all production servers and making all ssh go through a jumpbox.
Finally got the WinRM plugin for Rundeck working after a couple of days of fiddling with it, and rolled the required bits into the DSC for the target servers. Turns out most of my issues were in the way the WinRM plugin expected username and hostname tags present in Rundeck, but the EC2 node resource plugin wasn't mapping them correctly by default. Here's the bit from the script block in DSC that makes WinRM play nice on the target node, for what it's worth. It'll deliberately clobber the standard HTTP listener by default, which is what we wanted:
winrm set winrm/config/service/Auth '@{Basic="true"}' winrm set winrm/config/service '@{AllowUnencrypted="true"}' winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="1024"}'
winrm set winrm/config/client '@{TrustedHosts="*"}'
Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse
$cert = Get-childItem cert:\LocalMachine\Root | Where-Object Subject -like "$env:COMPUTERNAME" $cn = $cert.Subject.Replace('CN=','') $thumbprint = $cert.thumbprint
New-Item -Path WSMan:\LocalHost\Listener -Transport HTTPS -Address * -CertificateThumbPrint $thumbprint –Force
I haven't used the WinRM plugin but Rundeck works great. We're using it in operations where I work (SaaS) and I'm using it to run things at home.
http://rundeck.org/news/2014/01/08/Jenkins-is-for-development-Rundeck-is-for-operations.html
I hope the post helps others try this out. I've not used LXD yet but given that Rundeck can help you setup/define "job" workflows I think first creating a set of LXC "job" workflows.
Then using rundeck to copy & edit those to add LXD specific options could make this a really powerful tool for managing/orchestration/upgrading remote (re cloud) or local containers.
Rundeck (http://rundeck.org/screencasts.html) has impressed me with their application's implementation and considerations such as passwordless ssh, jobs & nested job definitions, users/groups workflow authorizations, shell scripting support etc. to make "devops" easier.
To follow up on this post, I ran across Rundeck during my search. It looks to be well suited to these types of functions on a larger scale. I'm looking to run commands and such across 200-400 nodes. Most tools can do this, but as you mentioned, handling failures/errors becomes a task. Rundeck handles that nicely, as well as allowing you to target different groups of nodes based on tag or other classifications. Also can save tasks to be run later, or on a regular basis, and so forth. So a senior guy can create a nice script that any shmoe in the organization can run, or he can schedule it to run weekly. No need to babysit a task like that at the commandline and watch the output or parse logs. Installation is a breeze on linux. I ran my first command on a single node within minutes (just some simple df/ls commands).