FOGProject / fogproject

An open source computer cloning & management system
https://fogproject.org
GNU General Public License v3.0
1.14k stars 222 forks source link

Feature Request: Track snapin installs and Dependent Snapins #401

Closed shaqaruden closed 4 years ago

shaqaruden commented 4 years ago

I would like FogProject to keep track of what snapins have been ran on a computer and what hasn't. Along with that I currently have a snapin that requires another snapin to be installed, in my case the snapin that requires another snapin is installed first so I need to add all the snapins except this one then run those and then add and run the last snapin. So it would be nice that along with tracking snapin installs also be able to make a snapin dependent on another.

Sebastian-Roth commented 4 years ago

@shaqaruden Definitely sounds like a nice feature. Despite we are a very small team actually working on FOG and currently all flat out with our jobs and other projects. I don't see this happening any time soon. If you are keen you can join in and work on this particular feature.

@mastacontrola What's your though on this?

mastacontrola commented 4 years ago

I am not fully understanding what's being requested.

We do track what snapins have been run. This isn't exactly a running tally of "This has run, and this hasn't" but there is a history of snapins that have been run, or cancelled, for each host.

How would you like us to keep track of something like this?

Snapins can entail anything from a simply Batch script, or copying a file to a machine, to installing an actual program. How would we keep track of what has run and what hasn't? Snapins are very similar to tasks. If you don't see a snapin task as having run for a particular host, you can be pretty safe that it hasn't been run at all.

As for the "Snapin that requires another snapin" you can sort of do this by simply numbering the snapin in the order you require them to be installed. (e.g. 1 - SnapinTorun, 2 - SnapinTorunAfterSnapin1)

Hopefully this helps.

shaqaruden commented 4 years ago

to clarify what I am requesting. I should be able to run "All Snapins" task and FOG only run the snapins that haven't ran before. For example if I have a snapin to install Notepad++ and I task it to a host. If I try to run that task again on that same host it should not run since this snapin has already ran. Of course there could be a "force snapin to run" option for the occasion when you need to run a snapin twice.

shaqaruden commented 4 years ago

Another addition do make this functionality make more sense would be to have a run once flag on each snapin. It defaults to false to maintain current functionality but if true then it works the way I have request above.

mastacontrola commented 4 years ago

Again, what validates that a snapin had been run? Let’s say you capture an image from a machine that did have these snapins installed. You create a new host and deploy that image to the machine. Should fog consider that those snapins have been installed?

Once again, snapins are not a software deployment tool. While you can certainly use them for doing such a thing, we don’t play around with tracking in the way you’re thinking. Snapins were meant as a simple tool to run scripts in a more automated fashion. While this level of ability gives one the ability to install software, the base around snapins never have been as a means to track what you have installed on a machine.

If you tell a snapin to run, it should run. Not try to determine if it has or hasn’t been run before, then run or not based on the finding. You tell fog to do something, it does it. Plain and simple.

shaqaruden commented 4 years ago

Whether the snapins installs software or just runs a script. There can still be a scenario where you need to run a given snapin on 65 of 100 machines in a group and having the ability to run say to FOG "Hey run this snapin on anything that it hasn't ran on before" is a valuable option.

mastacontrola commented 4 years ago

The problem being how does one know when a snapin has or hasn’t been ran? That’s what I’m getting at. If you capture an image from a machine that he hd it ran and then deploy that image to another host, should we assume the snapin wasn’t run?

Let’s lose the premise and go with simplicity. Do you count the snapin as being run even if it failed? What if it ran but came back with an error code essentially requiring the machine to reboot? Do we count the snapin as having been run?

What if the snapin has been run and you want it to run again for whatever reason?

This rabbit hole keeps going and going.

What I’m saying is the feature doesn’t exist and I don’t plan on adding. It. If you think you can add it, to both the client and the main fog stuff, you’re more than welcome to it.

Requesting a feature is easy. Making it come to fruition is not always as simple as your request might seem.

I understand what you’re asking and I don’t even know of any true software management/deployment pieces that have this level of understanding.

Most things have some basic tracking of what software is installed. That makes sense. But snapins are not software, they’re scripts to be run. And those scripts extend some kind of functionality to the system. This could include installing software. It is not a software management system. Tracking what scripts have run on a machine should not, in my opinion, make it so the same script cannot be run again.

Sebastian-Roth commented 4 years ago

Don't get us wrong. We are open for suggestions but also need to see what's possible. The feature asked by you needs a huge amount of time to be implemented properly in all the components of FOG and as mentioned above with a small team of developers working on FOG we don't see a chance of this happening any time soon. So as Tom said, this is open source and you are welcome to work on this and get other people involved as well. Let us know if you are keen to do so.