Advertisement
Guest User

Untitled

a guest
Feb 9th, 2021
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. // hosts.toml
  2. [kluster]
  3. master = "il"
  4.  
  5. [hosts.il]
  6. disk_uuid = "01b3bcba-c0ef-4538-8dd2-f7dee2952322"
  7. host = "192.168.10.121"
  8.  
  9. [hosts.ee]
  10. disk_uuid = "7278ee48-598d-40fd-9765-a0b0db9ba1d9"
  11. host = "192.168.10.122"
  12.  
  13. [hosts.sam]
  14. disk_uuid = "f433b748-e485-4668-a7fd-fc5d92fbd682"
  15. host = "192.168.10.123"
  16.  
  17. // default.nix
  18. let
  19. pkgs = import <nixpkgs> {};
  20.  
  21. metadata = builtins.fromTOML (builtins.readFile ./hosts.toml);
  22.  
  23. master_ip = metadata.hosts."${metadata.kluster.master}".host;
  24. master_hostname = metadata.kluster.master;
  25. master_api = "https://${master_hostname}:443";
  26.  
  27. kubernetes_master = hostname: {
  28. roles = ["master" "node"];
  29. masterAddress = master_hostname;
  30. easyCerts = true;
  31. apiserver = {
  32. securePort = 443;
  33. advertiseAddress = master_ip;
  34. };
  35.  
  36. addons.dns.enable = true;
  37. addons.dashboard.enable = true;
  38. };
  39.  
  40. kubernetes_node = hostname: {
  41. roles = ["node"];
  42. masterAddress = master_hostname;
  43. easyCerts = true;
  44.  
  45. kubelet.kubeconfig.server = master_api;
  46. apiserverAddress = master_api;
  47.  
  48. addons.dns.enable = true;
  49. };
  50.  
  51. node = { hostname, ... }: {
  52.  
  53. imports = [
  54. ./base.nix
  55. ];
  56.  
  57. networking.hostName = hostname;
  58. networking.extraHosts = "${master_ip} ${master_hostname}";
  59.  
  60. deployment.targetHost = metadata.hosts."${hostname}".host;
  61. deployment.targetEnv = "none";
  62.  
  63. fileSystems."/" = {
  64. fsType = "ext4";
  65. device = metadata.hosts."${hostname}".disk_uuid;
  66. };
  67.  
  68. # environment.systemPackages = with pkgs; [
  69. # kubernetes
  70. # kubectl
  71. # ];
  72.  
  73. # services.kubernetes = if metadata.kluster.master == hostname
  74. # then kubernetes_master hostname
  75. # else kubernetes_node hostname;
  76. };
  77.  
  78. in
  79.  
  80. {
  81. network = {
  82. description = "kubernetes cluster";
  83. enableRollback = true;
  84. };
  85.  
  86. il = node { hostname = "il"; };
  87.  
  88. ee = node { hostname = "ee"; };
  89.  
  90. sam = node { hostname = "sam"; };
  91. }
  92.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement