Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

<Briefly describe the problem being solved, not how the problem is solved, just focus on the problem. Think about why the feature is needed, and what is the relevant context to understand the problem.>

  • Preconditioning a device
  • Deployment conditioning

The purpose of this feature is to provide a mechanism that conditions the linux OS host on an edge device. There are several different kinds of conditioning that are needed:

  • Introspection of the device to derive the device capabilities and turn those capabilities into node properties.
  • Creation of resources (folders, docker volumes, networks) required by applications. These resources would persist across application restarts.
  • Installation of OS packages to ensure that the host has any packages that an application depends on.
  • Scan the host for security vulnerabilities.
  • Prevent installation of the OH agent or OH services based on the state of the device (e.g. it has software on it with a security vulnerability).
  • Apply an Accuknox security policy to the device.
  • ...

From the list above, it is clear that there are 2 points in the OH device lifecycle where conditioning is required. The first is near the point where the agent is initially installed. The second is where an agreement has been made and services are about to be deployed. Further, sometimes the required conditioning is not changing anything at all, just inspecting the device in various ways and possibly conditioning the OH metadata describing the device.

Is there a similar requirement for edge clusters?


Design

<Describe how the problem is fixed. Include all affected components. Include diagrams for clarity. This should be the longest section in the document. Use the sections below to call out specifics related to each aspect of the overall system, and refer back to this section for context. Provide links to any relevant external information.>

Some really rough ideas at this point:

  • Completely open pre and post conditioning - A device owner provides a bash script that executes before and after agent registration. A service developer provides a bash script that runs before and after a service is started.
  • A framework that invokes specifically named bash script functions at various points in the lifecycle, more closely related to the use cases described in the overview.
  • A completely metadata driven approach - There is no code to write, but instead the device owner and service developer provide a metadata description of what they want the system to do and how to handle the results.



User Experience

<Describe which user roles are related to the problem AND the solution, e.g. admin, deployer, node owner, etc. If you need to define a new role in your design, make that very clear. Remember this is about what a user is thinking when interacting with the system before and after this design change. This section is not about a UI, it's more abstract than that. This section should explain all the aspects of the proposed feature that will surface to users.>

Note to John W: the following user stories differ somewhat from the "conditioning" use cases in the overview. Applying user roles to the requirements helps focus the design by pointing to the point in the system where the requirement should be addressed. 


As a device owner, I want the agent to discover custom device attributes and add them to the device's node policy.

As an application developer, I want OH to create system resources (folders, docker volumes, etc) that will persist beyond the boundaries of an agreement.

As an application deployer, I want to avoid nodes that have certain known security vulnerabilities.

As a device owner, I want to apply a security policy to the node before any applications are deployed.




Command Line Interface

<Describe any changes to the hzn CLI, including before and after command examples for clarity. Include which users will use the changed CLI. This section should flow very naturally from the User Experience section.>

...