fleetdm / fleet

Open-source platform for IT, security, and infrastructure teams. (Linux, macOS, Chrome, Windows, cloud, data center)
https://fleetdm.com
Other
3.01k stars 418 forks source link

Download Fleet installers from a separate AWS container #8793

Open eashaw opened 1 year ago

eashaw commented 1 year ago

Problem

As a Fleet user, I want the option to download an installer for my Fleet instance instead of creating one with fleetctl package.

Users who click the "Add hosts" button in Fleet are given instructions for generating installers for their Fleet instance using the fleetctl package command. Users who are unfamiliar with the terminal may not be able to easily generate an installer.

Requirements

Allow users to download a package for their Fleet instance directly from fleetdm.com.

  1. The Fleet core product's "Add hosts" modal presents users with the option to download an installer.
  2. The core product directs users who want to download a Fleet installer to a page on fleetdm.com, and sends the information required to generate an installer to fleetdm.com.
  3. An API on fleetdm.com that runs the fleetctl package command.
  4. A page on fleetdm.com where users can download their generated Fleet installer.
  5. pkg comes signed so that no warning appears to the end user.
eashaw commented 1 year ago

From Slack:

eashaw: I tested running fleetctl package from a child process in a Heroku app. It looks like the child process doesn't have sufficient permissions to create directories with the correct mode. Here is the error that it fails with: image

Zach Wasserman: Thank you for the update, Eric. I have another idea for how we might be able to make this work on Heroku. Essentially it would be taking the fleetdm/fleetctl Docker container and then adding whatever components are necessary to serve the Sails app on top of that. Because that container includes all of the dependencies necessary for running fleetctl package, I think that we might have better luck that way. I'll follow up with more about this after we sort out the MDM CSR work.

mike-j-thomas commented 1 year ago

@zwass, did you get a chance to try out your idea, above?

zwass commented 1 year ago

I have not yet been able to try out the idea of installing the rest of the dependencies.

zayhanlon commented 1 year ago

@zwass This may have dropped in priority, but if we're still interested in completing this - let us know! We will wait on your feedback on the above ^ before prioritizing

zayhanlon commented 1 year ago

https://github.com/fleetdm/fleet/issues/9000

zhumo commented 1 year ago

@zayhanlon I added a requirement above: "pkg comes signed so that no warning appears to the end user." LMK if that is hard to do.

zhumo commented 1 year ago

@zayhanlon I'd like to move this up in priority.

zayhanlon commented 1 year ago

@zhumo Eric can't complete this without information from Zach. I have a call with Zach to discuss today! Stand by for an update

zayhanlon commented 1 year ago

@zhumo notes from call with Zach:

It was going to be nice to not do this with additional infrastructure by putting it on fleetdm.com, but it's probably less pain to stand up a server in AWS for doing this. There's a container already available with dependencies configured.

Next steps: Zay to design UI @zhumo What do we want the user experience to look like? I can take on design with some input from you. We thinking of it looking like the sandbox experience, while also allowing the current process?

1) Lucas or Zach Wass to address backend work (needs estimation) 2) What's the method to deploy maintain and monitor this ongoing (infra team)?

@eashaw This is going to be pulled off your plate.

zhumo commented 1 year ago

@zayhanlon I think the outcome here is that users don't have to run a fleetctl command, you just click a button and an installer gets generated. I think if customers need to host the AWS image, that's fine too... I would hope that deployment is painless and it "just works." Let's talk through this at our next 1/1.

zayhanlon commented 1 year ago

@lucasmrod to estimate before next sprint