ποΈ .infrahub.yml file format
infrahub-yaml}
ποΈ Architecture
Infrahub is deployed as a container-based architecture, composed of multiple components. A minimum deployment consists of the following architecture:
ποΈ Artifact
An artifact is the result of a Transformation for a specific context and/or object. It can be either plain text or JSON format.
ποΈ Check
Checks are user defined logic, stored in an external repository linked to Infrahub, that are run as part of a proposed change. It allows a user to perform any kind of data validation logic during a proposed change. If a check does not complete successfully, then the proposed change cannot be merged.
ποΈ Data lineage and metadata
Data lineage
ποΈ Database backup and restore
Infrahub provides a command-line interface tool to help backup and restore a full neo4j database. It is designed to be run from almost any host machine and has a much smaller set of requirements than running the full Infrahub application. We use docker containers to run commands against the Neo4j database to make this tool easier to install.
ποΈ Demo environment
A local environment based on Docker Compose is available for demo and testing.
ποΈ Generator
A Generator is a generic plugin that queries data and creates new nodes and relationships based on the result.
ποΈ GraphQL queries
The GraphQL interface is the main interface to interact with Infrahub. The GraphQL schema is automatically generated based on the core models and the user-defined schema models.
ποΈ Groups
Groups in Infrahub allow you to create and manage collections of objects, enabling organized and efficient handling of related entities within your infrastructure. They provide a flexible way to define relationships between different objects and can be extended to suit various use cases through inheritance and customization.
ποΈ Hardware requirements
The system on which you want to run Infrahub, has to meet the following hardware requirements:
ποΈ Immutability and version control
Infrahub integrate an immutable database with native support for version control that was designed with Infrastructure Management in mind.
ποΈ IP address management
IP address management, also known as IPAM, is a critical part of any infrastructure involving IP network and address allocations. Depending on the scale of networks, it can be challenging to keep track of all IP resources, how they are used, and which ones remain available.
ποΈ Object-storage
Infrahub provides an interface to store and retrieve files or objects in an object-storage. The object-storage is used internally within Infrahub to store rendered artifacts, but it can be used to store any text based file or content.
ποΈ Permissions and Roles
Roles and permissions are essential for controlling user access and behavior in Infrahub. Within the platform, they offer exact control over what users can see, modify, or control.
ποΈ Profiles
A profile in Infrahub allow you to define a common set of attributes that should be applied to nodes.
ποΈ Proposed change
A proposed change provides a way to review and discuss how two branches differ from each other and to merge a source branch into the target branch. For people with a development background, this will sound very familiar. Itβs like a pull or merge request. The proposed change lets you compare two branches, run tests, and finally merge one branch into another.
ποΈ Repository
Summary
ποΈ Resource manager
In Infrahub a resource manager is responsible for allocating resources out of a resource pool.
ποΈ Resources testing framework
Summary
ποΈ Schema
In Infrahub, the schema is at the center of most things and our goal is to provide as much flexibility as possible to allow users to extend and customize the schema.
ποΈ Transformation
A Transformation is a generic plugin to transform a dataset into a different format to simplify it's ingestion by third-party systems.
ποΈ User management and authentication
By default, Infrahub will allow anonymous access in read-only mode. It's possible to disable this via the configuration main.allowanonymousaccess or via the environment variable INFRAHUBALLOWANONYMOUS_ACCESS.