Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Faster way to install all AWS modules #172

Open
2 tasks
KirkMunro opened this issue Aug 26, 2020 · 6 comments
Open
2 tasks

Faster way to install all AWS modules #172

KirkMunro opened this issue Aug 26, 2020 · 6 comments
Labels
feature-request A feature should be added or improved. module/powershell-cmdlets p1 This is a high priority issue queued

Comments

@KirkMunro
Copy link

KirkMunro commented Aug 26, 2020

I appreciate what you have tried to do by using the AWS.Tools.Installer module as an easy way to install and update modules (likely in an attempt to correct some of what is wrong with the PowerShellGet way of managing installed modules), and I also appreciate that you have taken your uber-module and broken it up into smaller modules that will provide faster load times; however, you seem to be missing an easy, (as) fast (as possible) way to install all of the existing AWS.Tools.* modules.

In the background right now I am running the following command to install all AWS.Tools.* modules:

find-module AWS.Tools.* | where Name -notmatch 'Installer$' | install-module -Scope AllUsers

This is dreadfully slow, likely in part because each individual AWS.Tools.* module has dependencies on the same modules, which means looking up those dependencies for each module installed this way, one at a time, resulting in a terrible installation performance. I must pull down the entire module bundle so that I simply have what I need on my system when I need it for automation purposes. I am not willing to simply go back to an installer again and again for bite-sized installation of modules. If I go back to install something that is missing, I'll update the entire thing.

Note that, because of some of the challenges that are left unresolved with PowerShellGet, some of us "upgrade" modules and clean up older versions simply by removing what is installed on a system via recursive file system removal, and then re-installing the modules that we have removed. This is how I upgrade module bundles (Az, Microsoft.Graph, and now AWS.Tools), so that I don't have extra bits that I don't need kicking around.

I went looking in AWS.Tools.Installer for a way to install the entire module in a smart and fast way, but there doesn't seem to be such an option. I also went looking for a AWS.Tools module that would simply act as the link between all AWS.Tools.* modules, so that you could install AWS.Tools using Install-Module AWS.Tools, and you would get the whole thing, in a manner smart enough to handle dependencies well, but there is no AWS.Tools module.

Describe the Feature

I want an easy and fast way to install all modules in the AWS.Tools bundle. Ideally I would like it to be via PowerShellGet, rather than an AWS.Tools.Installer module, so that I have a consistent method to deal with module management.

Is your Feature Request related to a problem?

Yes. It is difficult to install AWS.Tools.* modules in a manner consistent with other module bundles, in a performant (or at least as fast as possible) way.

Proposed Solution

Create an AWS.Tools module that is nothing but a manifest module, with each of the AWS.Tools.* modules listed in that manifest in the RequiredModules section.

Describe alternatives you've considered

I considered using AWS.Tools.Installer, but that wants me to list each and every module in the bundle. While I could write a script to build the list of module names and then paste that array into the command to install the modules, that work should not be necessary. Also, I prefer consistency, especially given that PowerShellGet is currently in pre-release for version 3, which should give us all a better foundation for managing modules -- hopefully one that is easier to contribute to as open source.

Additional Context

I believe I have provided enough detail already.

Environment

No specific requirements: just easy, fast installation of the AWS module bundle on a system where a lot of automation is run.

  • 👋 I may be able to implement this feature request
  • ⚠️ This feature might incur a breaking change

This is a 🚀 Feature Request

@KirkMunro KirkMunro added feature-request A feature should be added or improved. needs-triage This issue or PR still needs to be triaged. labels Aug 26, 2020
@github-actions
Copy link

We have noticed this issue has not recieved attention in 1 year. We will close this issue for now. If you think this is in error, please feel free to comment and reopen the issue.

@github-actions github-actions bot added closing-soon This issue will automatically close in 4 days unless further comments are made. closed-for-staleness and removed closing-soon This issue will automatically close in 4 days unless further comments are made. labels Oct 15, 2021
@Lujade
Copy link

Lujade commented Jan 17, 2023

Reopen please. Installing modules takes ages.

@ashovlin ashovlin reopened this Jan 17, 2023
@ashishdhingra ashishdhingra added needs-review and removed needs-triage This issue or PR still needs to be triaged. labels Jan 30, 2023
@ashishdhingra
Copy link
Contributor

Needs review with the team.

@ashishdhingra ashishdhingra added the p2 This is a standard priority issue label Mar 16, 2023
@HP-85

This comment was marked as outdated.

@ashishdhingra ashishdhingra added p1 This is a high priority issue queued and removed needs-review p2 This is a standard priority issue labels May 5, 2023
@HP-85

This comment was marked as outdated.

@HP-85
Copy link

HP-85 commented Nov 8, 2023

AWS Tools for PowerShell - cross platform install script

PowerShell script to install all AWS.Tools modules in PowerShell 7 on Linux, Mac, and Windows, or PowerShell 5 on Windows.

Readme.md
https://github.com/HP-85/atp

AWS.Tools.Install.ps1
https://github.com/HP-85/atp/blob/main/AWS.Tools.Install.ps1

Install directly from repo:

Invoke-RestMethod -Uri "github.com/HP-85/atp/raw/main/AWS.Tools.Install.ps1" | Invoke-Expression

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request A feature should be added or improved. module/powershell-cmdlets p1 This is a high priority issue queued
Projects
None yet
Development

No branches or pull requests

5 participants