parent
d81631fb98
commit
54f2f1e5f1
@ -0,0 +1,36 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
let |
||||
inherit (lib) |
||||
mkOption |
||||
mkIf |
||||
types |
||||
; |
||||
|
||||
cfg = config.virtualisation.podman; |
||||
|
||||
in |
||||
{ |
||||
options = { |
||||
virtualisation.podman = { |
||||
|
||||
defaultNetwork.dnsname.enable = mkOption { |
||||
type = types.bool; |
||||
default = false; |
||||
description = '' |
||||
Enable DNS resolution in the default podman network. |
||||
''; |
||||
}; |
||||
|
||||
}; |
||||
}; |
||||
|
||||
config = { |
||||
virtualisation.containers.containersConf.cniPlugins = mkIf cfg.defaultNetwork.dnsname.enable [ pkgs.dnsname-cni ]; |
||||
virtualisation.podman.defaultNetwork.extraPlugins = |
||||
lib.optional cfg.defaultNetwork.dnsname.enable { |
||||
type = "dnsname"; |
||||
domainName = "dns.podman"; |
||||
capabilities.aliases = true; |
||||
}; |
||||
}; |
||||
} |
@ -0,0 +1,42 @@ |
||||
import ./make-test-python.nix ( |
||||
{ pkgs, lib, ... }: |
||||
let |
||||
inherit (pkgs) writeTextDir python3 curl; |
||||
webroot = writeTextDir "index.html" "<h1>Hi</h1>"; |
||||
in |
||||
{ |
||||
name = "podman-dnsname"; |
||||
meta = { |
||||
maintainers = with lib.maintainers; [ roberth ] ++ lib.teams.podman.members; |
||||
}; |
||||
|
||||
nodes = { |
||||
podman = { pkgs, ... }: { |
||||
virtualisation.podman.enable = true; |
||||
virtualisation.podman.defaultNetwork.dnsname.enable = true; |
||||
}; |
||||
}; |
||||
|
||||
testScript = '' |
||||
podman.wait_for_unit("sockets.target") |
||||
|
||||
with subtest("DNS works"): # also tests inter-container tcp routing |
||||
podman.succeed("tar cv --files-from /dev/null | podman import - scratchimg") |
||||
podman.succeed( |
||||
"podman run -d --name=webserver -v /nix/store:/nix/store -v /run/current-system/sw/bin:/bin -w ${webroot} scratchimg ${python3}/bin/python -m http.server 8000" |
||||
) |
||||
podman.succeed("podman ps | grep webserver") |
||||
podman.succeed(""" |
||||
for i in `seq 0 120`; do |
||||
podman run --rm --name=client -v /nix/store:/nix/store -v /run/current-system/sw/bin:/bin scratchimg ${curl}/bin/curl http://webserver:8000 >/dev/console \ |
||||
&& exit 0 |
||||
sleep 0.5 |
||||
done |
||||
exit 1 |
||||
""") |
||||
podman.succeed("podman stop webserver") |
||||
podman.succeed("podman rm webserver") |
||||
|
||||
''; |
||||
} |
||||
) |
Loading…
Reference in new issue