!UKDpaKNNsBpOPfLWfX:zhaofeng.li

Colmena

318 Members
A simple, stateless NixOS deployment tool - https://github.com/zhaofengli/colmena108 Servers

Load older messages


SenderMessageTime
11 Jul 2022
@schnecfk:ruhr-uni-bochum.deCRTifiedBut I don't know whether the terraform json output should be tracked by git 🤔11:16:49
@schnecfk:ruhr-uni-bochum.deCRTified * But I don't know whether the terraform json output should be tracked by git 🤔 (to make it pure)11:16:57
@jairo:recallstack.icu@jairo:recallstack.icuit shouldn't11:16:58
@jairo:recallstack.icu@jairo:recallstack.icu see, with the same Terraform declarations I can run terraform apply or terraform destroy 11:17:26
@jairo:recallstack.icu@jairo:recallstack.icu

So let's say:

  1. apply. HostA IP = 1.1.1.1
  2. destroy
  3. apply. HostA IP = 1.1.1.2
11:18:05
@jairo:recallstack.icu@jairo:recallstack.icuthat's why Terraform keeps the state outside git (and for other reasons), and why this can't be pure to be usable11:18:28
@jairo:recallstack.icu@jairo:recallstack.icuWell, I could git-commit the terraform output anyway 😆11:18:40
@jairo:recallstack.icu@jairo:recallstack.icuBut direct linking to terraform state seems more useful imho (I might be wrong)11:19:04
@jairo:recallstack.icu@jairo:recallstack.icu

well... just like I was expecting, it doesn't work. 😕
In my flake, I have:

let inventory = builtins.fromJSON (
      builtins.readFile
      (
        pkgs.runCommandLocal "terraform-inventory" {
          src = ./.;
        } ''
          export PATH=${self.outputs.devShells.${pkgs.system}.default}/bin:$PATH
          bash $src/ansible/inventories/terraform.sh > $out
        ''
      )
    );
in colmena = { ... } # Stuff that parses the inventory and generates machine info

The results, as I was expecting:

> colmena build
warning: Git tree '/var/home/yajo/prodevel/moduground' is dirty
[INFO ] Using flake: git+file:///var/home/yajo/prodevel/moduground
[INFO ] Enumerating nodes...
warning: Git tree '/var/home/yajo/prodevel/moduground' is dirty
building '/nix/store/pa4n1x0ncgw669zyksz89kwflpr51nl8-terraform-inventory.drv'...
â•·
│ Error: Backend initialization required, please run "terraform init"
│ 
│ Reason: Initial configuration of the requested backend "http"
[...]

Basically it means that it's trying to build that inventory as a normal derivation, in isolation. Thus, it doesn't get the necessary environmental secrets that Terraform uses to access its state, and fails.

The dynamic inventory should be evaluated outside of the nix expression, and maybe passed in as an argument. But my guess is that this would be common enough so as to colmena needing to add support for it out of the box somehow, right?

12:34:06
@buckley310:matrix.orgBuckleySo wait, is there a pure evaluation mode?13:54:48
@buckley310:matrix.orgBuckleyThat sounds nice13:55:02
@linus:schreibt.jetzt@linus:schreibt.jetztnot for colmena AFAIK13:55:18
@jairo:recallstack.icu@jairo:recallstack.icuI'm using flakes, that's pure by default AFAIK 13:56:59
@linus:schreibt.jetzt@linus:schreibt.jetztnot with colmena13:57:10
@linus:schreibt.jetzt@linus:schreibt.jetztcolmena isn't currently able to evaluate purely13:57:26
@linus:schreibt.jetzt@linus:schreibt.jetzthttps://github.com/zhaofengli/colmena/blob/ac8852dcdf7ab6e9524600518414a63dbfb115b1/src/nix/evaluator/nix_eval_jobs.rs#L8513:57:55
@jairo:recallstack.icu@jairo:recallstack.icuBut then how to get json output from one script into it as an argument? 🤔14:01:07
14 Jul 2022
@ty:tjll.nettylerjl joined the room.21:26:34
@ty:tjll.nettylerjl Hey hey - is there a good way to consume a nixosConfiguration from something like a flake output to feed into colmena? I'd love to pull a host's config out of something like my flake that uses digga/devos and feed it into colmena to apply to the host 21:29:38
@buckley310:matrix.orgBuckleymy config used to do that22:29:55
@buckley310:matrix.orgBuckleylooking through code history for the exact way...22:30:59
@schnecfk:ruhr-uni-bochum.deCRTifiedI've written my method in an gh issue, one moment22:31:51
@buckley310:matrix.orgBuckleyhttps://github.com/buckley310/nixos-config/blob/95f13eadfaae9a48c9e2cd4323417ba0eab36625/lib/deploy.nix#L96-L10522:32:13
@schnecfk:ruhr-uni-bochum.deCRTifiedhttps://github.com/zhaofengli/colmena/issues/60#issuecomment-1047199551 here's mine22:32:47
@buckley310:matrix.orgBuckleyyeah, his imports colmena and adds the module to the machines. i have my own little shim thing (sconfig.deployment) instead. pick your poison :D22:33:52
@ty:tjll.nettylerjlAh, those are both great and should get me to where I need, I really appreciate it22:34:50
@buckley310:matrix.orgBuckleyat some point i stopped doing this as a performance optimization. by building the machine in the flake as nixosConfiguration, then feeding it to colmena to build it again, theres some overhead22:35:13
@buckley310:matrix.orgBuckleyits not much if you just have a couple machines22:35:32
@ty:tjll.nettylerjlYeah, this is all personal infra / should be < 30 hosts at max22:35:52
@ty:tjll.nettylerjl nixosSystem is sort of a new one to me, is that significantly different than a flake nixosConfiguration? 22:36:12

Show newer messages


Back to Room ListRoom Version: 6