about summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorEvgeny Egorochkin <phreedom@yandex.ru>2016-03-12 10:09:02 +0200
committerEvgeny Egorochkin <phreedom@yandex.ru>2016-03-13 13:57:30 +0200
commit7a4684bee1c7e3eb6e8f0ee27a85244e22ce9dff (patch)
treeb141932042436129884f9314b24ddd99eefc8b9f /nixos
parent73487f461941e89f1d4d76823e5d2fe2a2699f64 (diff)
downloadnixlib-7a4684bee1c7e3eb6e8f0ee27a85244e22ce9dff.tar
nixlib-7a4684bee1c7e3eb6e8f0ee27a85244e22ce9dff.tar.gz
nixlib-7a4684bee1c7e3eb6e8f0ee27a85244e22ce9dff.tar.bz2
nixlib-7a4684bee1c7e3eb6e8f0ee27a85244e22ce9dff.tar.lz
nixlib-7a4684bee1c7e3eb6e8f0ee27a85244e22ce9dff.tar.xz
nixlib-7a4684bee1c7e3eb6e8f0ee27a85244e22ce9dff.tar.zst
nixlib-7a4684bee1c7e3eb6e8f0ee27a85244e22ce9dff.zip
virtualization/azure: take entropy handling code out of WALA and execute it before SSHD generates the host keys
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/virtualisation/azure-agent-entropy.patch17
-rw-r--r--nixos/modules/virtualisation/azure-agent.nix21
2 files changed, 38 insertions, 0 deletions
diff --git a/nixos/modules/virtualisation/azure-agent-entropy.patch b/nixos/modules/virtualisation/azure-agent-entropy.patch
new file mode 100644
index 000000000000..2a7ad08a4afc
--- /dev/null
+++ b/nixos/modules/virtualisation/azure-agent-entropy.patch
@@ -0,0 +1,17 @@
+--- a/waagent	2016-03-12 09:58:15.728088851 +0200
++++ a/waagent	2016-03-12 09:58:43.572680025 +0200
+@@ -6173,10 +6173,10 @@
+             Log("MAC  address: " + ":".join(["%02X" % Ord(a) for a in mac]))
+         
+         # Consume Entropy in ACPI table provided by Hyper-V
+-        try:
+-            SetFileContents("/dev/random", GetFileContents("/sys/firmware/acpi/tables/OEM0"))
+-        except:
+-            pass
++        #try:
++        #    SetFileContents("/dev/random", GetFileContents("/sys/firmware/acpi/tables/OEM0"))
++        #except:
++        #    pass
+ 
+         Log("Probing for Azure environment.")
+         self.Endpoint = self.DoDhcpWork()
diff --git a/nixos/modules/virtualisation/azure-agent.nix b/nixos/modules/virtualisation/azure-agent.nix
index 6b60419c290c..34ca8df9d91b 100644
--- a/nixos/modules/virtualisation/azure-agent.nix
+++ b/nixos/modules/virtualisation/azure-agent.nix
@@ -14,6 +14,9 @@ let
       rev = "1b3a8407a95344d9d12a2a377f64140975f1e8e4";
       sha256 = "10byzvmpgrmr4d5mdn2kq04aapqb3sgr1admk13wjmy5cd6bwd2x";
     };
+
+    patches = [ ./azure-agent-entropy.patch ];
+
     buildInputs = [ makeWrapper python pythonPackages.wrapPython ];
     runtimeDeps = [ findutils gnugrep gawk coreutils openssl openssh
                     nettools # for hostname
@@ -156,6 +159,24 @@ in
       before = [ "sshd.service" ];
     };
 
+  systemd.services.consume-hypervisor-entropy =
+    { description = "Consume entropy in ACPI table provided by Hyper-V";
+
+      wantedBy = [ "sshd.service" "waagent.service" ];
+      before = [ "sshd.service" "waagent.service" ];
+      after = [ "local-fs.target" ];
+
+      path  = [ pkgs.coreutils ];
+      script =
+        ''
+          echo "Fetching entropy..."
+          cat /sys/firmware/acpi/tables/OEM0 > /dev/random
+        '';
+      serviceConfig.Type = "oneshot";
+      serviceConfig.RemainAfterExit = true;
+      serviceConfig.StandardError = "journal+console";
+      serviceConfig.StandardOutput = "journal+console";
+     };
 
     systemd.services.waagent = {
       wantedBy = [ "sshd.service" ];