3rd Party Application Management
Posted: Wed May 19, 2021 3:27 pm
I am writing about the Habitat 1.0.0.73 build, specifically the 3rd party patching component. I think this product is great with some very useful features. However, I have a few questions and observations that affect its ability to be used in a production environment. I realize that this component utilizes the Chocolatey framework, and that may be where some of the limitations reside. I have a couple of suggestions or feature requests to help overcome those issues.
1. Habitat requires that the Chocolatey framework be installed before it can function properly. That's all good, but there are a few limitations and setbacks with that. First, the framework can only be downloaded in very small increments. We have found that if you are running the habitat script or the Chocolatey framework on more than five systems per minute, then you will be locked out from the Chocolatey site. Downloading the script and all components and launching it from your own Labtech server will fix that. Chocolatey does have instructions on how to set up your own server to provide the chocolatey framework installation, but that is a bit of an inconvenience and requires maintaining that PowerShell code and some prerequisites. If there were a way to build in a limiter of 5 per minute into the application, that would resolve that issue without having to jump through these hoops. Secondly, the scripted download of the framework that is built into the Habitat main script only works on certain types of Windows installs or only after security is partially disabled on those systems. It does download on some systems, mainly only on workstations with security lowered, but we have found that the PowerShell download and execution on line 16 of the Habitat App Manage Maintenance Script does not work on over 90% of our systems which are all built with default security left enabled. We have found line 16 does not work on any of our newer servers or virtual desktops. We have corrected that setback by using the following script on systems which is nothing more than downloading first and then launching the PowerShell differently. It's nothing fancy and could use some polishing, but it was a quick down and dirty method for us to move things along before we could even use Habitat. It still must only be deployed to no more than five systems per minute with a 5-minute break in between each, or just only do one system per minute. Also, if you hit the rate limit, the execution would stall, and you would have to use a method to delete the folder and start over, which we dealt with in line 14 below, or you will be stuck in a loop of the framework being partially installed. 2. The second setback we noticed is if you're trying to patch more than a half dozen systems with a half dozen apps to be patched, then they will all fail. This process works fine in a small testing environment, but deploying this to a production network results in immediate failure with only the first system working. This is because there is a rate limit of 20 packages that can be checked per network for upgrade per minute, and then you are locked out for an hour or longer depending on how many systems the Habitat script ran on since the lockout keeps getting extended. We like the Habitat product and feel it has tremendous potential, but for production networks, we were hoping that a rate limiter can be put in place to allow the software to work properly. Otherwise, your forced to disable the script and just run it manually on systems at once per minute to allow it to work. This will allow Habitat to abide by the Chocolately rate terms, so no more than 20 packages are ever called within one minute. Something such as only allowing one system to be patched per minute would allow a slow and steady progression of the patches allowing for all systems to be completed without hitting any rate limit by the Chocolatey servers. When doing initial patching with multiple apps, it will only take a few systems to cause a failure in the whole process, and a limiting feature would allow a slow and steady rollout. Is there a possibility for adding a button to the customer location in the 3rd party patching window to limit the habitat script to one system per minute as a rate limiter? Adding a limiting button would allow both the framework and the packages to fully run on any one system but not proceed to the next system until the next minute. This would allow any framework or packages to finish before moving on to the next, permitting a slow and smooth rollout without failure.
3. Also, is there a way to set the upgrades to only once per week or per month instead of every day? There is already a frequency selection by using the turtle or the rabbit to allow daily or multiple times a day. Could that be expanded to be quarterly per day, daily, weekly, and monthly. There are numerous packages on the chocolatey packages site that have version numbers that are not written correctly. This causes a reinstall of that application every time the script runs. This isn't a huge deal, but if it only happened once a month, then if there is a version error, that is not as bad if it's happening every day. Reinstalling a few applications every day can obviously be a problem, and we don't need every system checking for updates every single day, as once a month or week would be sufficient.
4. These same issues also exist in Chocolatey for Automate and AppGenie, which we also tried. We found Habitat to be more refined, though with more features and additional utilities to be more beneficial. We have also tried Chocolatey for Labtech, which has some of the same issues and more capabilities, but not exactly what we need.
5. In conclusion, we really like the Habitat product. We are impressed with how simple it is to do a search for an application, apply a package to that search, and just set it and walk away and know the applications will be managed and updated. It provides a very easy interface that any member of our support staff can use. Unfortunately, for now, we can only use it in very small testing environments until the above issues are resolved. We realize that we could switch over to Chocolatey for business subscription and host our own repository and our own mechanism and scripts, but that would defeat the purpose of using the Habitat product with an easy-to-use and a set it and forget mentality. We also realize that Automate is releasing its own 3rd party application update solution, but we like the expanded capabilities of Habitat. If the above issues can be considered, I'm sure that customers experiencing those same issues, such as ourselves, will greatly appreciate the implemented suggestions to use the product in production.
1. Habitat requires that the Chocolatey framework be installed before it can function properly. That's all good, but there are a few limitations and setbacks with that. First, the framework can only be downloaded in very small increments. We have found that if you are running the habitat script or the Chocolatey framework on more than five systems per minute, then you will be locked out from the Chocolatey site. Downloading the script and all components and launching it from your own Labtech server will fix that. Chocolatey does have instructions on how to set up your own server to provide the chocolatey framework installation, but that is a bit of an inconvenience and requires maintaining that PowerShell code and some prerequisites. If there were a way to build in a limiter of 5 per minute into the application, that would resolve that issue without having to jump through these hoops. Secondly, the scripted download of the framework that is built into the Habitat main script only works on certain types of Windows installs or only after security is partially disabled on those systems. It does download on some systems, mainly only on workstations with security lowered, but we have found that the PowerShell download and execution on line 16 of the Habitat App Manage Maintenance Script does not work on over 90% of our systems which are all built with default security left enabled. We have found line 16 does not work on any of our newer servers or virtual desktops. We have corrected that setback by using the following script on systems which is nothing more than downloading first and then launching the PowerShell differently. It's nothing fancy and could use some polishing, but it was a quick down and dirty method for us to move things along before we could even use Habitat. It still must only be deployed to no more than five systems per minute with a 5-minute break in between each, or just only do one system per minute. Also, if you hit the rate limit, the execution would stall, and you would have to use a method to delete the folder and start over, which we dealt with in line 14 below, or you will be stuck in a loop of the framework being partially installed. 2. The second setback we noticed is if you're trying to patch more than a half dozen systems with a half dozen apps to be patched, then they will all fail. This process works fine in a small testing environment, but deploying this to a production network results in immediate failure with only the first system working. This is because there is a rate limit of 20 packages that can be checked per network for upgrade per minute, and then you are locked out for an hour or longer depending on how many systems the Habitat script ran on since the lockout keeps getting extended. We like the Habitat product and feel it has tremendous potential, but for production networks, we were hoping that a rate limiter can be put in place to allow the software to work properly. Otherwise, your forced to disable the script and just run it manually on systems at once per minute to allow it to work. This will allow Habitat to abide by the Chocolately rate terms, so no more than 20 packages are ever called within one minute. Something such as only allowing one system to be patched per minute would allow a slow and steady progression of the patches allowing for all systems to be completed without hitting any rate limit by the Chocolatey servers. When doing initial patching with multiple apps, it will only take a few systems to cause a failure in the whole process, and a limiting feature would allow a slow and steady rollout. Is there a possibility for adding a button to the customer location in the 3rd party patching window to limit the habitat script to one system per minute as a rate limiter? Adding a limiting button would allow both the framework and the packages to fully run on any one system but not proceed to the next system until the next minute. This would allow any framework or packages to finish before moving on to the next, permitting a slow and smooth rollout without failure.
3. Also, is there a way to set the upgrades to only once per week or per month instead of every day? There is already a frequency selection by using the turtle or the rabbit to allow daily or multiple times a day. Could that be expanded to be quarterly per day, daily, weekly, and monthly. There are numerous packages on the chocolatey packages site that have version numbers that are not written correctly. This causes a reinstall of that application every time the script runs. This isn't a huge deal, but if it only happened once a month, then if there is a version error, that is not as bad if it's happening every day. Reinstalling a few applications every day can obviously be a problem, and we don't need every system checking for updates every single day, as once a month or week would be sufficient.
4. These same issues also exist in Chocolatey for Automate and AppGenie, which we also tried. We found Habitat to be more refined, though with more features and additional utilities to be more beneficial. We have also tried Chocolatey for Labtech, which has some of the same issues and more capabilities, but not exactly what we need.
5. In conclusion, we really like the Habitat product. We are impressed with how simple it is to do a search for an application, apply a package to that search, and just set it and walk away and know the applications will be managed and updated. It provides a very easy interface that any member of our support staff can use. Unfortunately, for now, we can only use it in very small testing environments until the above issues are resolved. We realize that we could switch over to Chocolatey for business subscription and host our own repository and our own mechanism and scripts, but that would defeat the purpose of using the Habitat product with an easy-to-use and a set it and forget mentality. We also realize that Automate is releasing its own 3rd party application update solution, but we like the expanded capabilities of Habitat. If the above issues can be considered, I'm sure that customers experiencing those same issues, such as ourselves, will greatly appreciate the implemented suggestions to use the product in production.