Replies: 14 comments 24 replies
-
Prototype implementation #2339 |
Beta Was this translation helpful? Give feedback.
-
For repro support, I understand with our current repro architecture (spin up a node based on the task/pool config) it wouldn't be possible for the reason you mention that the image might not exist in azure. But, an idea was brought up in #2399 of reimplementing the script generation for repros to be on VM rather than server side. By letting the agent generate the scripts, I think we could unblock repro support for unmanaged nodes. It might be out of scope for this first iteration of this feature, but it could be worth calling out as a possibility for future iterations if we decide to prioritize it. |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Right now pool is defined by Hardware and OS
In unmanaged case Pool is defined only by OS ? If that is the case - can we have consistent Pool design across Managed/Unmanaged so there are no "special cases" ? |
Beta Was this translation helpful? Give feedback.
-
Is there any protection provided to users of unmanaged pool from other users ? Or I am free to add my |
Beta Was this translation helpful? Give feedback.
-
If I deploy a Mac as unmanaged node, or a linux flavor that OneFuzz agent does not work on, do I build my own ? |
Beta Was this translation helpful? Give feedback.
-
Any protection from other users of OneFuzz to schedule to my unmanaged pool ? or DOS my pool ? |
Beta Was this translation helpful? Give feedback.
-
What's the task management situation if I trip on a cord and unplug my "unmanaged node" ? Do we fail the task or let it resume when node is back online ? If user wants to delete the node altogether, do they run CLI command to delete the node ? |
Beta Was this translation helpful? Give feedback.
-
Can an unmanged node be in several unamanged pools ? |
Beta Was this translation helpful? Give feedback.
-
Having unmanaged node means that moving to file shares becomes impossible (my internet provider does not let me mount azure file share on my machine at home). |
Beta Was this translation helpful? Give feedback.
-
Would be nice to have Testing that adds/improves on top of existing testing rather than just using existing tests that are not very good in the first place.... |
Beta Was this translation helpful? Give feedback.
-
Can I move a node between unmanaged pools ? Move node from one Pool to another ? |
Beta Was this translation helpful? Give feedback.
-
What's agent upgrade story ? If we release a newer version of agent and it is different in major version number - the agent will be rejected from OneFuzz. Is it up to the user to manually upgrade all agents they have ? If they have 10,000,000 nodes ? |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
An unmanaged node is an external compute resource created outside of the service and used for scheduling tasks in the OneFuzz.
This new type of node is expected to behave the same as the existing nodes except for the following.
Node management
As the name indicates, the creation and lifetime of these nodes will not be managed by the service and will be the responsibility of the user.
The unmanaged node can only be assigned to an unmanaged pool. It will not be involved in the cleanup process that reimages nodes based on their version or their heartbeat status.
Node Registration
The node will report their OS when registering to the service.
The service will check the OS against the one configured in the pool.
Authentication/Authorization
The nodes will authenticate by using the client credential flow from the machine.
The user will create an application registration and generate a secret for the authentication.
The application registration will be assigned the approle "Unmanaged node" via a helper script.
AAD will add this role as a claim to each authenticated request from the machine.
The service will authorize the request coming from the machine by verifying the presence of the "Unmanaged node" claim.
The service will also check the ClientId of the request against the one configured in the pool
Proxy and Repro
proxy will be disabled because the user already has access to the node and the service has no control over the location of that node
repro will be disabled because the nodes might use a sku or os not available in azure.
Workflow
These are the steps to use an unmanaged node in OneFuzz
Create a new application registration in azure to serve as the authentication
Register that application to the OneFuzz instance to allow the authentication of the nodes (with the helper script)
Create a new unmanaged pool and assign the clientId of the application registration
Download the configuration file to connect to the pool from the OneFuzz instance
Download the agent from the OneFuzz instance
Create a login (client_secret) from the application registration and adds it to the configuration downloaded earlier
Run the agent on a machine with the configuration files
The nodes receive works scheduled to the pool.
Testing
We can leverage our existing functional tests in check-pr by running them on an unmanaged pool.
The process will be as follow:
Note: Since we expect the same behavior from the agent after the registration we can limit our testing to a single test for each os.
Beta Was this translation helpful? Give feedback.
All reactions