Commit Graph

83 Commits

Author SHA1 Message Date
Jörg Thalheim
a4e03a85eb vars: don't print stack trace if generator fails 2024-11-19 09:46:14 +00:00
Jörg Thalheim
9c6e04fa3f vars: introduce ensure_machine_has_access method for sops
this should help avoiding overriding existing shared secrets by not
triggering vars regeneration if a machine has no access.

wip
2024-11-19 09:46:14 +00:00
lassulus
8e1697a089 password-store owner & group support 2024-11-16 01:18:59 +01:00
Qubasa
250eed0798 clan-cli: upload.py -> Replace rsync with native ssh command 2024-11-15 22:03:47 +07:00
Jörg Thalheim
c98055c781 vars: introduce ensure_machine_has_access method for sops
this should help avoiding overriding existing shared secrets by not
triggering vars regeneration if a machine has no access.

wip
2024-11-14 15:37:55 +00:00
Jörg Thalheim
8f1e5ed1eb vars/get: use machine_name as variable name 2024-11-14 15:37:55 +00:00
Jörg Thalheim
4a389b0fb3 vars/sops: simplify conditional in exists 2024-11-14 15:37:55 +00:00
lassulus
7ae7ac8bd1 cli vars password-store: fix file locations 2024-11-14 12:07:52 +01:00
lassulus
11ce774820 clan_cli vars: actually upload 2024-11-13 13:23:42 +01:00
DavHau
54b8f5904e vars: allow re-encrypting secrets when recipient keys were added.
When the users of a secret change, when for example a new admin user is added, an error will be thrown when generating vars, prompting the user to pass --fix to re-encrypt the secrets
2024-11-13 18:49:30 +07:00
DavHau
236d9eaec3 vars,facts: update_check -> needs_upload 2024-11-13 13:34:15 +07:00
Jörg Thalheim
8e4067ee03 vars: fix case if we have two vars with where one is the prefix of another one 2024-11-12 16:11:39 +00:00
Jörg Thalheim
34410c6e17 vars: update message if vars are up-to-date 2024-11-08 15:43:10 +01:00
DavHau
7208c6dc82 vars: fix shared dependency was not resolved correctly 2024-10-23 20:43:33 +07:00
DavHau
db0fdba384 cli: set needs_user_terminal for all ssh commands 2024-10-23 19:40:50 +07:00
Jörg Thalheim
4230ae6750 ruff: enable warning lints 2024-10-23 09:06:02 +00:00
DavHau
cc43a46c53 vars: show full var_id when prompting 2024-10-16 13:13:41 +07:00
Jörg Thalheim
d97bda9c0d {vars,facts}/upload: fix ipv6 support 2024-10-10 17:03:32 +02:00
DavHau
d9597dab05 vars,facts: add sops.defaultGroups to new machines
Prior to this, when initializing new machines, only the current user had access to it's key which prevents other admin users to deploy this machine later
2024-10-10 19:31:03 +07:00
Jörg Thalheim
36573589ef {vars,facts}/generate: ensure that args.flake is passed 2024-10-08 17:51:55 +00:00
Jörg Thalheim
8101996c16 pass in flakeid to vm_state_dir 2024-10-08 17:51:55 +00:00
Jörg Thalheim
4e1d4afa9b vars/keygen: adept to new sops api 2024-10-04 16:36:35 +00:00
Jörg Thalheim
76aa8d2d82 Revert "Merge pull request 'Revert "Merge pull request 'clan-cli: secrets: Add support for PGP keys with sops-nix' (#2186) from lopter/clan-core:lo-sops-nix-pgp-support into main"' (#2202) from revert into main"
This reverts commit 23f5abee0d, reversing
changes made to 66a94c91ae.
2024-10-04 16:36:35 +00:00
DavHau
2b3fba9dd0 Revert "vars: refactor - copy logic to sops secret module"
This reverts commit 83d850dac4.
2024-10-04 18:20:53 +02:00
Jörg Thalheim
d134d94a1e Revert "Merge pull request 'clan-cli: secrets: Add support for PGP keys with sops-nix' (#2186) from lopter/clan-core:lo-sops-nix-pgp-support into main"
This reverts commit b956b94039, reversing
changes made to b1af3d5d6d.

Reverting for now as Dave's recent change conflicts with this change.
2024-10-04 17:54:29 +02:00
Louis Opter
710b832066 Fix: do not assume users use age keys in vars/sops
With added support for PGP for users keys, do not assume an age key is
going to be present in secrets files.
2024-10-04 15:36:30 +00:00
DavHau
a257769abd vars/keygen: fix + cleanup tests
- generate keys in ./sops instead of ./sops/vars for now
- don't initialize all flakes with sops keys, only generate when needed
- use the new 'clan vars keygen' in tests
2024-10-04 17:25:17 +02:00
DavHau
3357a0082e vars: add 'clan vars keygen' 2024-10-04 16:13:49 +02:00
DavHau
83d850dac4 vars: refactor - copy logic to sops secret module
This is in preparation for moving the storage away from ./sops to ./vars/sops
2024-10-04 14:31:22 +02:00
Jörg Thalheim
2a2818d050 add more custom prefixes for temporary directories 2024-10-01 20:54:19 +02:00
clan-bot
e014800f03 Merge pull request 'generate: don't set type=bool in argparse.BooleanOptionalAction' (#2190) from fix-warning into main 2024-10-01 17:04:49 +00:00
Jörg Thalheim
237327ead3 start to name temporary directories in more places 2024-10-01 18:57:59 +02:00
Jörg Thalheim
716c6c9139 generate: don't set type=bool in argparse.BooleanOptionalAction 2024-10-01 18:48:54 +02:00
Qubasa
1b0b111f03 clan flash: Remove root requirement for flash, add a flash-template 2024-09-24 13:42:21 +02:00
DavHau
0324f4d4b8 vars/sops: improve shared secrets, switching backend
When a second machine checks for a shared secret, now the exists() call returns negative and only when updating the secrets for that machine, the machine is added to the sops receivers.

Also throw proper errors when the user switches backends without cleaning the files first.
2024-09-20 15:06:54 +02:00
DavHau
501ade7de7 vars: implement migration
Migrating generated files from the facts subsystem to the vars subsystem is now possible.

HowTo:
1. declare `clan.core.vars.generators.<generator>.migrateFact = my_service` where `my_service` refers to a service from `clan.core.facts.services`
2. run `clan vers generate your_machine` or `clan machines update your_machine`

Vars will only be migrated for a generator if:
1. The facts service specified via `migrateFact` does exist
2. None of the vars to generate exist yet
3. All public var names exist in the public facts store
4. All secret var names exist in the secret fact store

If the migration is deemed possible, the generator script will not be executed. Instead the files from the public or secret facts store are read and stored into the corresponding vars store
2024-09-19 17:57:03 +02:00
DavHau
89d39186ee vars/generate: improve output when vars are updated
fixes #2076

- print old and new value if possible
- also inform the user if something hasn't changed
2024-09-18 16:57:01 +02:00
DavHau
cf47c1d51a vars: generate proper commit messages
fixes #2126
2024-09-17 20:22:18 +02:00
DavHau
a1dd10f502 vars/sops/shared: add machines key on demand 2024-09-12 20:17:05 +02:00
DavHau
067d287398 vars/list: display '<not set>' also for secrets 2024-09-12 17:24:29 +02:00
DavHau
53592837a9 vars: get rid of meta.json 2024-09-12 16:52:44 +02:00
DavHau
3c27cc31e9 vars/sops: load sops info from nix instead of filesystem 2024-09-12 16:30:21 +02:00
DavHau
54cb6862b1 vars/password-store: implement upload and hashing 2024-09-09 22:13:16 +02:00
DavHau
6fafafa064 vars/password-store: use standard paths; fix share flag 2024-09-09 21:20:03 +02:00
DavHau
b3dd36bdb6 vars: improve generator pipeline
Compute the whole closure of to-be-executed generators upfront before executing anything

Properly compute closures for the 4 different scenarios:

1. full_closure: run all generators for a selected machine in topological order
2. all_missing_closure: run just the missing generators including their dependents
3. requested_closure: run only a selected list of generators including their missing dependencies and their dependents
4. minimal_closure: Run just enough to ensure that the list of selected generators are in a consistent state. Don't execute anything if nothing is missing.
2024-09-06 21:32:17 +02:00
DavHau
f5e65b5d0e vars: refactor - ask prompts before running any generators 2024-09-06 16:08:46 +02:00
DavHau
9d86c5474f clan-cli: fix cyclic import problem 2024-09-06 15:38:12 +02:00
DavHau
f161c7ca58 vars: improve generator execution pipeline
- ensure all dependents are re-generated as well
- refactor: separate out computation of generator update closure
2024-09-06 14:30:49 +02:00
DavHau
1254b80a52 vars: add api endpoint set_prompts 2024-09-04 18:06:11 +02:00
DavHau
112982a7fb vars: add get_prompts api endpoint
vars: add test for api endpoint get_prompts
2024-09-04 17:36:50 +02:00