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

Investigate use of jclouds for on-demand infrastructure #609

Open
smlambert opened this issue Nov 29, 2018 · 4 comments
Open

Investigate use of jclouds for on-demand infrastructure #609

smlambert opened this issue Nov 29, 2018 · 4 comments

Comments

@smlambert
Copy link
Contributor

smlambert commented Nov 29, 2018

See if we can leverage https://jclouds.apache.org/ to dynamically allocate Jenkins nodes for use by longer running jobs, and container testing.

Related:

  1. https://wiki.jenkins.io/display/JENKINS/JClouds+Plugin
  2. @karianna mentioned the security team has recommendations related to this type of infra model, which will be shared at some point.
@karianna
Copy link
Contributor

Security team fully supports this idea! Will be easiest to start with any Docker-based builds but then use jclouds to bring up/down entire hosts/vms.

@sxa
Copy link
Member

sxa commented Nov 30, 2018

In principle I've always loved this way of doing things and advocated it, but we need to weigh it up against the possible negative impacts - mostly performance related. This is more a brain dump for cfuture consideration/discusion than anything else. DISCLAIMER: I haven't used jclouds :-)

  • Time to do the initial provision to a "ready" system from the providers
  • Time to setup the system (e.g. ansible) vs using pre-setup templates which would to be kept patched and adjusted in line with playbook changes
  • Will likely require more time to do a clone since it won't be using an existing workspace (and java is quite large)
  • Ease of debugging when a problem occurs

In the case of docker we'd need to know what the host systems would be and again the performance impact on the builds (time and network bandwidth if that's a concern) of having to potentially pull things down regularly, and again keeping the images up to date (same issue as for templates)

@karianna
Copy link
Contributor

Well thought out points @sxa555

In principle I've always loved this way of doing things and advocated it, but we need to weigh it up against the possible negative impacts - mostly performance related. This is more a brain dump for future consideration/discussion than anything else. DISCLAIMER: I haven't used jclouds :-)

  • Time to do the initial provision to a "ready" system from the providers
  • Time to setup the system (e.g. ansible) vs using pre-setup templates which would to be kept patched and adjusted in line with playbook changes

I wonder if we can have immutable templated hosts (like AWS's AMIs). I suspect not all platforms support this type of idea (especially bare metal). I suspect we'll have to do this on a best efforts basis.

  • Will likely require more time to do a clone since it won't be using an existing workspace (and Java is quite large)

You're right, again I wonder if we can prefetch a clone, fetch it in parallel or have it attached via a device.

  • Ease of debugging when a problem occurs

This is a big concern and I think we'd need to make sure that all logs were streamed off and that failed builds kept the host/container alive.

In the case of docker we'd need to know what the host systems would be and again the performance impact on the builds (time and network bandwidth if that's a concern) of having to potentially pull things down regularly, and again keeping the images up to date (same issue as for templates)

I'm hoping that docker impact will be small, but I'm no expert on the disk I/O impact in particular (hello compiling native code off disk).

@smlambert
Copy link
Contributor Author

All of this good discussion is why the title is "Investigate...", to try some stuff out and make a call whether it looks useful/promising to proceed. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Todo
Development

No branches or pull requests

3 participants