1. 18 May, 2018 8 commits
  2. 17 May, 2018 3 commits
    • David Johnson's avatar
      33e56382
    • David Johnson's avatar
      Ubuntu 18 clientside support. · d6c142be
      David Johnson authored
      d6c142be
    • David Johnson's avatar
      Change and complete the systemd-networkd control net support for ubuntu 18. · 4144c37f
      David Johnson authored
      Turned out that I could not guarantee that emulab-networkd@.service
      would write the .network files in /run/systemd/network in time for
      systemd-networkd to notice them; so I tweaked the strategy to a slightly
      more complex path: udev rules run a simple shell script that writes the
      per-device .network files that specify dhcp on all interfaces, in
      addition to telling systemd to want emulab-networkd@<dev>.service units.
      These units wait for the control net to come up on one of the devices;
      then the winner removes the extraneous .network files and downs the
      unused interfaces and restarts systemd-networkd so it only "manages" our
      control net.
      
      I also improved it so that if the user writes static systemd-networkd
      configuration into /etc/systemd/network/<foo>.network, our udev rules
      still write /run/systemd/network/<foo>.network if foo is a physical
      device -- but the waiter unit and cleanup scripts do *not* down <foo>;
      they just ignore it, because they notice that systemd-networkd did *not*
      pick our /run/systemd/network/<foo>.network to manage <foo>.  So we
      should be good for integration and not squashing static user configs.
      
      Finally, I "completed" it in the sense that the winning
      emulab-networkd@.service unit also writes out all the /var/emulab/boot
      metadata, sets the hostname -- does what the dhclient exit hooks used to
      do.
      
      The only thing it does not yet handle is elabinelab dhcp "selection".  I
      need a quick semantics tutorial for that.
      4144c37f
  3. 16 May, 2018 3 commits
  4. 15 May, 2018 10 commits
  5. 14 May, 2018 9 commits
    • David Johnson's avatar
      Add a candidate systemd-networkd control net path for Ubuntu 18. · bbf4824b
      David Johnson authored
      Drop 99-emulab-networkd.rules into /etc/udev/rules.d,
      emulab-networkd@.service into /lib/systemd/system, and do
      `systemctl enable systemd-networkd.service`.  I would also do
      `ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf`; we don't
      want any part of systemd-resolved.
      
      This is the only way I could come up with to make systemd-networkd
      listen on all wired ethernet ifaces, and get it into the right state.
      systemd-networkd is like NetworkManager in some ways.  I don't know if
      it's better or worse.  The main problem for us is that it doesn't
      support hooks, and that it runs its own dhcp client (which is crappy and
      inflexible compared to dhclient).  We don't need anything super flexible
      though since we don't use custom options, and it has an option to ignore
      the lease lifetime and leave the iface up even if expiry happens before
      renewal can take place.
      
      Anyway, here's the flow: udev rules tell systemd to require a unit
      (emulab-networkd@$iface.service) for each physical wired ethernet
      device.  These files write runtime .network files into
      /run/systemd/network, which are read by systemd-networkd.service if it
      is enabled.  We just tell systemd-networkd to listen on them all, then
      we use its waiter script.  However, its wait script is broken and/or the
      documentation is contradictory, so we don't trust it to tell us which
      interface comes up; we invoke its networkctl client to tell us.  We then
      write the up iface to /run/emulab/cnet, rm -f the .network files for all
      ifaces other than the control net device (cause we don't want
      systemd-networkd to manage expt network devices), and restart
      systemd-networkd so it can appropriately report that it is "managing"
      the control net device, but not the expt devices.  It is very
      unfortunate that we have to restart systemd-networkd, but there is no
      other way to tell it about new configuration.  If you HUP it, it dies.
      These systemd folks must live in a box where all use cases look alike.
      
      Note that if the user overrides with their own .network scripts in
      /etc/systemd/network that Match any of the physical NICs, those take
      precedence over our per-interface scripts, which is what we want.
      
      Note also that to do something like move the real control net into a
      bridge, you can just remove or update the .network file in
      /run/systemd/network, and restart systemd-networkd.  It should re-dhcp
      on the bridge.  It does not remove NIC configuration at exit; it just
      "catches up" with any NIC address when it is restarted.
      
      I have not done all the dhclient-exit-hook normal goo (i.e. writing the
      control net controlif/IP into the right place, etc), but that should all
      be possible.
      
      Finally: I haven't yet decided that this is the path for Ubuntu 18.  We
      might well ignore this and fall back to the old /etc/network/interfaces
      ifupdown strategy.  At least there it is possible to use a real
      dhclient.
      bbf4824b
    • Mike Hibler's avatar
      Another Apache 2.4 fix... · 4efa73db
      Mike Hibler authored
      4efa73db
    • Mike Hibler's avatar
      A config file directory for Apache 2.4. · 9cf96e9c
      Mike Hibler authored
      Currently these are just copies of the 2.2 file, but I am anticipating changes.
      9cf96e9c
    • Leigh B Stoller's avatar
      Remove unused import of POSIX::tmpname; fully deprecated in perl 5.26 · 5471384d
      Leigh B Stoller authored
      and it throws an error.
      5471384d
    • Leigh B Stoller's avatar
      Remove unused import of POSIX::tmpname; fully deprecated in perl 5.26 · 82cd7c2e
      Leigh B Stoller authored
      and it throws an error.
      82cd7c2e
    • Mike Hibler's avatar
      703d4fac
    • Mike Hibler's avatar
      Explicitly add <objdir>/install to @INC. · 543ab4f6
      Mike Hibler authored
      This worked under perl 5.24 and before as '.' was implicitly in @INC.
      No longer true in 5.26.
      543ab4f6
    • Leigh B Stoller's avatar
      Couple of additional checks to make sure we do not create a profile · ebe4652e
      Leigh B Stoller authored
      with no rspec, nor try to start an experiment with no rspec.
      ebe4652e
    • Leigh B Stoller's avatar
      Minor fix to DeleteNodes(); ignore nodes from other CMs when error · 63c10c6d
      Leigh B Stoller authored
      checking node list.
      63c10c6d
  6. 12 May, 2018 1 commit
  7. 10 May, 2018 2 commits
  8. 09 May, 2018 4 commits
    • David Johnson's avatar
      Merge branch 'master' into 'master' · bc6429b3
      David Johnson authored
      Fixing errors in emulabizing Docker images
      
      See merge request !36
      bc6429b3
    • Elijah Grubb's avatar
      Fixing errors in emulabizing Docker images · b6e0952e
      Elijah Grubb authored
      Fixed issue with cmd and entrypoint values being set
      incorrectly
      
      Fixed issue with rcS init.d process negatively hurting
      our networking settings.
      
      Better handling of whitespace in Environment variable
      values.
      
      Squashed commit of the following:
      
      commit 9aff9b12aa6a60ebb66f10f0a044bf2288b492be
      Author: Elijah Grubb <u0894728@utah.edu>
      Date:   Wed May 9 19:15:40 2018 -0600
      
          Handling environment variable values with whitespace
      
      commit c9a16bbd53c183d7f8259d878efb0be07bc8703c
      Author: Elijah Grubb <u0894728@utah.edu>
      Date:   Wed May 9 17:07:43 2018 -0600
      
          Fixing racing issue and rcs issue
      
      commit 10bf4517c419fc82f89d084c4f45d60c05a67834
      Author: Elijah Grubb <u0894728@utah.edu>
      Date:   Wed May 9 16:00:45 2018 -0600
      
          Setting cmd to be empty and entrypoint to be runit
      b6e0952e
    • David Johnson's avatar
      Merge branch 'master' into 'master' · ccd50cbe
      David Johnson authored
      Fixing cmd/entrypoint issues and adding support for debian:sid
      
      See merge request !35
      ccd50cbe
    • Elijah Grubb's avatar
      Fixing bugs to support entrypoint/cmd from Docker · ff25cdf8
      Elijah Grubb authored
      Fixed issue involving alternate users being set in
      the image's Dockerfile.
      
      Fixed issue with accurate permissions to run runit service.
      
      Fixed issue with quotes to properly handle sh commands.
      
      Fixed issue where Docker images based on scratch are not in
      an array like other Docker images, so config attributes are
      preserved.
      ff25cdf8