8

Is there a way to connect to a VPN for the duration of a Jenkins job? (freestyle or pipeline, I can work with either).

I scoured the plugin list figuring someone might have developed something, but the only page found was this OpenConnect page with no actual code developed, so that seems to be out.

We're running Jenkins on Ubuntu AWS boxes, if that changes anything. I'd prefer the ability to connect and disconnect in a single job, rather than making everything run on VPN.

1
  • I would just like to reiterate (for the OP and others who might find this) that you can in fact do this if you are still looking, please take a look at my answer.
    – ZaxLofful
    Commented Apr 4, 2019 at 5:35

2 Answers 2

2

I think that it's very difficult, if not impossible, to achieve something like this.

The reason is that once the machine running Jenkins is connected to the VPN it is also effectively disconnected from the original network it was connected to, which means Jenkins on that machine will loose connection with the rest of your Jenkins setup.

The only way that might work would be if using completely standalone one-machine Jenkins setups.

5
  • what a bummer, but that makes perfect sense. Thanks!
    – Alex
    Commented Aug 25, 2017 at 14:11
  • 1
    this is not accurate at the time of me writing this comment, nor do I think it ever was....just saying
    – ZaxLofful
    Commented Sep 13, 2018 at 23:18
  • @ZaxLofful The VPN client at least alters the routing table making the local network unreachable (by usual means, which is what I mean by "effectively disconnected"). So at least you'd need to run some other script to carefully restore connectivity without impairing the VPN traffic. And, if the VPN client isn't smart enough to revert to the original routing table due to this script's intervention you'll also need to intervene after disconnection from VPN as well. Donno if something else besides routing also needs addressing. Commented Sep 14, 2018 at 1:43
  • 1
    @DanCornilescu: I would again just like to state this is not the default action that happens, most VPN clients these days default to split tunneling. Consumer VPNs that are intended to circumnavigate a network won't, but that's not what we are talking about here.
    – ZaxLofful
    Commented Feb 27, 2019 at 19:45
  • 1
    @ZaxLofful is correct, unless "route all traffic" is explicitly set (either pushed from the server side, or in the client configuration), VPNs do not "effectively disconnect" from the local network. My router has my work VPN open on it 24/7, and I can still access the rest of the internet, and any traffic not specific to my work network is not routed through my work network.
    – Doktor J
    Commented Apr 11, 2023 at 18:05
3

If you want to VPN for a jenkins task you would want to use the OpenConnect plugin as you mentioned.

Here are the steps to do that:

On linux (debian based)

sudo apt-get install openconnect

Add the following lines to the bottom of /etc/sudoers (ubuntu configuration)

jenkins ALL=NOPASSWD:/usr/sbin/openconnect*
jenkins ALL=NOPASSWD:/bin/kill*

The you will get an option in the Jenkins run task called:

Connect to Cisco AnyConnect VPN

Can also be found here: https://stackoverflow.com/questions/35151072/deploy-with-jenkins-to-vpn/43357784#43357784

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.