Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFE] consumable library for integration with other provisioning agents #33

Open
2 of 5 tasks
t-lo opened this issue Jan 31, 2024 · 5 comments
Open
2 of 5 tasks
Labels
Epic A very large feature request or roadmap item. feature New feature or request

Comments

@t-lo
Copy link
Collaborator

t-lo commented Jan 31, 2024

Current situation

The provisioning agent implements all features in a single application.

Impact

Re-using the agent's functionality from other agents like e.g. Afterburn is challenging.
This impacts adoption of the agent by the larger Linux ecosystem and hinders its mission of being a reference implementation for a minimal Azure provisioning guest agent.

Ideal future situation

Follow-up tasks

  • The library is integrated with Afterburn (possibly in a WIP fork).
  • Afterburn using the library is integrated with Flatcar to move away from wa-agent supplied guest configuration.
  • Extended Afterburn support of Azure using the library is contributed upstream.
@t-lo t-lo added feature New feature or request Epic A very large feature request or roadmap item. labels Jan 31, 2024
@anhvoms
Copy link
Contributor

anhvoms commented Jan 31, 2024

This sounds great. A few comments:

  1. We should produce a library which has all the core functionality and the main application that consumes it so that anyone can just use the whole agent as-is and other agents who are interested only in the functionality can consume the library.
  2. We should think about making some of the functionality configurable. As an example: mounting the ISO to retrieve ovf file requires enabling UDF driver in the image, which might not be desirable for some users, especially if he/she does not have a need to provision the VM with password through Azure control plane. By making it configurable, the user can minimally customize the functionality of the agent/binary depending on his/her need

@dongsupark
Copy link
Collaborator

I have been looking into this issue.

For separate structure of a common library and a binary that depends on the lib, one approach would be to introduce workspace.
So we can move all libs (distro, goalstate, imds, etc.) to a subdirectory, keeping only src/main.rs in the current form, to combine bin and lib in a top-level Cargo.toml.
ue-rs already has a similar workspace structure.

@dongsupark
Copy link
Collaborator

Created a WIP PR #39.

@t-lo
Copy link
Collaborator Author

t-lo commented Feb 21, 2024 via email

@dongsupark
Copy link
Collaborator

Published v0.1.1 of libazureinit and azure-init.
The 2nd one, The library is built and tested in CI, versioned releases are published regularly is done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Epic A very large feature request or roadmap item. feature New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants