Skip to content
  • Silvio Ankermann's avatar
    c0be6c50
    Generate inventory using Nix · c0be6c50
    Silvio Ankermann authored
    This commit replaces the update_inventory.py script with a Nix module
    based on Flake Parts [1] which defines all configuration options
    including types and default values.
    
    Only values that are exposed by the module can be set in the
    configuration. Exposed values have been removed from the default/
    main.yaml in order to have only a single source of truth. As a result,
    all variables (set or not) are rendered into the inventory.
    
    The cluster initialization is now backed by Nix Flake templates.
    Template files for new clusters can be found at ./nix/templates/
    cluster-repo.
    
    The cluster repository layout is changed in such a way that the
    ./config directory is completely handled by the user and the ./inventory
    directory is completely generated and may be ignored from the VCS. A
    ./state directory is added which is both input and output of the
    inventory generation and which has to be added to VCS.
    
                       +---------+
                       | ./state |
                       +--+---^--+
                          |   |
                   +------v---+---------+
    +----------+   |                    |   +-------------+
    | ./config +--->     Nix module     +---> ./inventory |
    +----------+   |                    |   +-------------+
                   +--------------------+
    
    Resource request and limit handling has been changed such that
    unflattened arrays are used instead of individual options for each
    value.
    
    [1] https://flake.parts
    c0be6c50
    Generate inventory using Nix
    Silvio Ankermann authored
    This commit replaces the update_inventory.py script with a Nix module
    based on Flake Parts [1] which defines all configuration options
    including types and default values.
    
    Only values that are exposed by the module can be set in the
    configuration. Exposed values have been removed from the default/
    main.yaml in order to have only a single source of truth. As a result,
    all variables (set or not) are rendered into the inventory.
    
    The cluster initialization is now backed by Nix Flake templates.
    Template files for new clusters can be found at ./nix/templates/
    cluster-repo.
    
    The cluster repository layout is changed in such a way that the
    ./config directory is completely handled by the user and the ./inventory
    directory is completely generated and may be ignored from the VCS. A
    ./state directory is added which is both input and output of the
    inventory generation and which has to be added to VCS.
    
                       +---------+
                       | ./state |
                       +--+---^--+
                          |   |
                   +------v---+---------+
    +----------+   |                    |   +-------------+
    | ./config +--->     Nix module     +---> ./inventory |
    +----------+   |                    |   +-------------+
                   +--------------------+
    
    Resource request and limit handling has been changed such that
    unflattened arrays are used instead of individual options for each
    value.
    
    [1] https://flake.parts
To learn more about this project, read the wiki.
Loading