Moonshine-IDE / Super.Human.Installer

Super.Human.Installer helps you install the latest and greatest HCL Domino technologies easily.
https://superhumaninstaller.com/
Other
2 stars 0 forks source link

Add Ansible Tasks to Configured Server #115

Open JoelProminic opened 5 months ago

JoelProminic commented 5 months ago

From @JustinProminic

-- a new button for an already running/created server to download a GitHub repository and execute its custom ansible task. The goal of this is to within 2-3 MINUTES of effort merge the changes from each developer's unique responsibility for the overall project. It should not involve creating a fresh Domino server each time. To accomplish this, two things need to happen: a) Mark needs to create a custom ansible runner and make it part of the "core" demo-tasks

b) Piotr needs to add a button and logic to request the URL (and maybe even save recently used ones so the user doesn't need to keep pasting it each time?) ... not sure how GitHub authentication can be handled for private repos, so Adrian will need to chime in on that and make that part easy

So, for example, the recent Nomad link update development might have looked like this:

  1. Super.Human.Portal would be already setup with Ansible tasks to install the development version. This could include compilation to avoid miscommunications on the build process
  2. Piotr makes the initial changes in a branch and reports the CORS errors to me
  3. I link the reposiotry to a new or existing server and switch to the branch. I would then run vagrant provision to install the update
  4. I experiment with changes to the CORS headers until I have something that I want Piotr to test
  5. I update the ansible script so that it will apply my settings in haproxy.cfg and commit my changes
  6. Piotr pulls my changes and runs vagrant provision to apply the changes
  7. The back and forth continues until we are satisfied
  8. We ask another user to test
  9. That user links the repository/branch to a SHI server and runs vagrant provision to get to apply the update.

Some potential problems:

@MarkProminic, we could use some help getting started with this when you have some time:

@piotrzarzycki21, you can work on the UI for this once we have a plan of how to handle this on the Ansible side.

JoelProminic commented 5 months ago

The MXHX project would be a good example to start with on this. The haproxy changes are described in this issue, but I can help organize this if needed.

JoelProminic commented 5 months ago

Here is how I envision the process from the Super.Human.Installer UI, based on today's discussion:

  1. Find the desired VM in SHI
  2. Click a button like "Custom Provisioners"
  3. Display a list of the current custom provisioners for the VM
  4. Click Add
  5. Allow the user to specify the custom provisioner:
    1. Clone from Git
    2. Select local directory (which may already be a Git clone)
  6. Save the new custom provisioner
  7. Select one or more custom provisioners and click "Run"
  8. Run a command to execute only the selected provisioners. We'll need to work out the details with @MarkProminic.
MarkProminic commented 4 months ago

For the most part yea that looks right, here is more what I would expect for us internally to share projects

$NAMESPACE = custom git clone https://github.com/Moonshine-IDE/moonshine-vagrant-mxhx-demo mkdir provisioners/ansible/ansible_collections/$NAMESPACE cp -r roles $INSTANCE/provisioners/ansible/ansible_collections/$NAMESPACE/moonshine-vagrant-mxhx-demo/roles cp galaxy.yml $INSTANCE/provisioners/ansible/ansible_collections/$NAMESPACE/moonshine-vagrant-mxhx-demo/ nano Hosts.yml insert into roles: