Making automation adaptable to changing conditions offers IT and network teams the opportunity to boost efficiency, speed incident response, ensure the accuracy of configurations and the soundness of security policies. In this recorded webinar, OpsMill Director of Product Management Brett Lykins takes you through how Infrahub enables event-driven infrastructure automation with powerful data management capabilities, including responsive abstractions. Check out the webinar as Brett covers:
New capabilities in Infrahub 1.2 including object templates, computed attributes, and customizable webhooks.
How generators work together with these new capabilities to enable event-driven automation
A way to integrate Infrahub and Ansible EDA to put event-driven automation into practice
Maintaining consistency and minimizing repetitive tasks are critical for efficiency and accuracy in the ever-evolving infrastructure management landscape. We’re thrilled to introduce a powerful new concept in Infrahub that empowers you to take charge of these challenges: Templates.
Templates in Infrahub provide the most flexible approach to defining and deploying infrastructure components. Imagine the ability to create reusable blueprints for any object within your infrastructure model. These blueprints capture standard configurations, attributes, and relationships, allowing you to rapidly provision and manage multiple instances with guaranteed uniformity.
What are Templates?
Think of Templates as master patterns for your infrastructure. They enable you to define a standard configuration for a specific object type – a server, a network switch, a virtual machine, or any other entity you manage. These templates encapsulate:
Node Attributes: Predefined values for standard properties like name, description, and default configurations.
Relationships: Pre-configured connections to other infrastructure objects, ensuring proper associations.
Components: Definitions for sub-elements belonging to the main object, such as server network interfaces or switch ports.
By adopting Templates, you can significantly reduce the manual effort involved in repeatedly configuring common elements, mitigate the risk of configuration drift, and ensure consistent deployments across your entire infrastructure.
Devices and More
One of the things that makes Infrahub templates different from what you’ve probably seen before is that they can create reusable blueprints for any object type, including complex relationships. NSoTs have previously offered a limited version of this capability, such as NetBox Device Types, which focused only on ensuring consistency in hardware device configurations and inventory management.
Infrahub’s templates provide greater flexibility and dynamic object creation, applicable across diverse infrastructure elements, not just devices. For example, you could use Infrahub templates for Sites or Services, allowing you to blueprint higher-level concepts in your environment easily. For example, templating Sites would enable you to have straightforward Small/Medium/Large site templates with related and common attributes populated for each Site you create in Infrahub. Alternatively, templating of Services would allow you to quickly and consistently re-create a higher-level service construct, such as an L3 VPN or a VPC and EC2 instances for an application.
How Templates Work
The process of creating and utilizing Templates involves a few key steps:
Enable Template Support in Your Schema
Create Templates in Infrahub
Create Object Instances from Templates
Enable Template Support in Your Schema
At the core, the ability to create templates starts with your infrastructure schema definition. By enabling a specific flag at the node level for an object type, you unlock the capability to generate templates for that object and its associated component relationships.
If you are familiar with Schema Development in Infrahub, enabling template generation is straightforward. At the node level, the generate_template property allows users to enable template generation for a given node and its associated components.
We can now load the example template schema below into an Infrahub instance for testing. For more details, refer to the Import Schema Guide.
# yaml-language-server:
$schema=https://schema.infrahub.app/infrahub/schema/latest.json
version: "1.0"
nodes:
- name: Device
namespace: Infra
generate_template: true # Enable template for Device and its Components
label: "Device"
icon: "mdi:server"
human_friendly_id: ["name__value"]
order_by:
- name__value
display_labels:
- name__value
attributes:
- name: name
kind: Text
unique: true
- name: description
kind: Text
optional: true
- name: serial
kind: Text
optional: true
relationships:
- name: device_type
label: device_type
peer: InfraDeviceType
optional: false
cardinality: one
kind: Attribute
- name: interfaces
peer: InfraInterface
optional: true
cardinality: many
kind: Component
Create a Template in Infrahub
Once template support is enabled, you can create specific template instances. When making a template, you can pre-fill attribute values and establish relationships. Crucially, the system automatically allows you to develop corresponding templates for component relationships, ensuring a holistic blueprint.
Consider the example of creating a template for a standard network switch model below.
Create a Device Type object to hold standard information about the switch (rack units, manufacturer, etc.)
Create a Device Template to use to instantiate instances of the switch.
Create Interface Templates to standardize interface configurations on the switch.
Create a Device instance to represent the switch itself.
Create a Device Type
Returning to the Infrahub web interface, you will notice new entries in the left-hand menu. Before entering template information, we will create a device type, which will be helpful later.
It is important to note that Infrahub’s implementation of the object template doesn’t hold any information about the device model (for example, the number of rack units). Infrahub stores this information in the device-type object. Fortunately, we can link the template to a device-type object, and Infrahub will transfer this information to the object.
Via the GraphQL API
Navigate to Device Type and add a new one.
Fill in details like Name: SwitchModel123 and Number of U: 2.
All template-related records are in the menu under the dedicated section Object Management > Templates.
It is important to note that you specify the device type object in the device template. Creating a device using your template will automatically establish a relationship between the new device and the selected device type. Some fields can be left empty because the device template doesn’t apply to them. For example, the serial number will, by definition, be different from one device to another.
Via the Web Interface
Go to the Templates section.
Click to add a new Object Template and select Device.
Enter Template Name: Template-SwitchModel123 and link it to the Device Type: SwitchModel123.
All template-related records are in the menu under the dedicated section Object Management > Templates.
It is important to note that you specify the device type object in the device template. Creating a device using your template will automatically establish a relationship between the new device and the selected device type. Some fields can be left empty because the device template doesn’t apply to them. For example, the serial number will, by definition, be different from one device to another.
Via the Web Interface
Go to the Templates section.
Click to add a new Object Template and select Device.
Enter Template Name: Template-SwitchModel123 and link it to the Device Type: SwitchModel123.
These are components of the Device Template, so ensure that you reference the device template created in the previous step. You can create multiple interface templates for demonstration purposes.
Via the Web Interface
Click to add a new Object Template and select Object template Interface.
With the device and interface templates in place, you’re all set to create new instances based on them! When you need to create new instances of an object, you can now leverage the power of templates. Simply select a predefined template during the creation process. The new object will automatically inherit all the attributes and relationships the template defines, including its associated components.
Via the Web Interface
Navigate to `Device` and click to add a new one.
Choose the “From Template” option.
Select the `Template-SwitchModel123` template you created.
The creation form will be pre-populated with data from the template. Fill in any unique information (e.g., the device’s serial number) and save it.
A small chip above the form inputs indicates information sourced from the template. You can override this information at any time.
Via the GraphQL API
mutation {
InfraDeviceCreate(
data: {
object_template: {hfid: ["Template-SwitchModel123"]},
serial: {value: "OWI62IUHQ"},
description: {value: "This is a Core Switch"}
}
) {
ok
}
}
Regardless of the method used (Web UI or GraphQL API), upon creation, the new device will have its essential attributes pre-filled and automatically have the `Ethernet1`, `Ethernet2`, and `Ethernet3` interfaces created as its components, linked according to the template definition.
When viewing your newly created device object, navigate to the Interfaces tab to see a list of interfaces pre-populated based on the template you defined.
Current Caveats
Currently, templates primarily support component relationships. Other types of relationships will continue to reference actual objects.
Modifications made to a template will not retroactively update objects previously created using that template.
Key Advantages of Using Templates
Boosted Productivity: With Templates, you can significantly reduce repetitive data entry and accelerate the deployment of infrastructure objects, saving you valuable time and increasing productivity.
Unwavering Consistency: Ensure uniformity across multiple instances of the same object type, eliminating configuration drift.
Minimized Errors: Templates help you reduce the likelihood of manual configuration mistakes, leading to a more stable environment and instilling confidence in your work.
Simplified Management: Streamline the management and deployment of standardized infrastructure components.
Clear Documentation: Templates serve as living documentation, providing precise blueprints for your infrastructure objects.
Try it Out!
Templates represent a significant step forward in simplifying infrastructure definition and deployment. By embracing this powerful concept, you can achieve greater efficiency, consistency, and accuracy in managing complex environments. Explore the possibilities and start building your infrastructure blueprints today!
Understanding the history of changes within your infrastructure is crucial for maintaining stability, troubleshooting issues, and ensuring compliance. We’re excited to introduce the Activity Log, a comprehensive feature that provides deep visibility into all actions and events occurring within your infrastructure environment, ensuring you are always well-informed and secure.
The Activity Log meticulously documents every change within the system, allowing you to track objects that have changed, precisely when the change occurred, and the user or system responsible. This detailed record empowers you to:
Troubleshoot Unforeseen Changes: Quickly identify the root cause of unexpected behavior by reviewing the sequence of recent events.
Conduct Audits: Maintain a clear history of operations for compliance and security purposes.
Comprehend Update Order: Understand the flow of updates across different parts of your infrastructure.
Centralized Tracking of Infrastructure Events
The Activity Log consolidates and organizes events from various branches and objects into a unified timeline, offering different perspectives to suit your needs:
Global View: This comprehensive list presents all activities (events) across all branches in a single, chronological feed.
Object-Level View: This is a focused timeline specific to a single infrastructure object, displaying only the events directly relevant to that object.
Filtering Capabilities: Our powerful filtering options allow you to narrow your search based on various criteria, including branch, event type, initiating account, primary affected node, related nodes, and a specific date range. This flexibility puts you in control, making your search efficient and effective.
Nested/Child Events: The Activity Log intelligently tracks and displays cascade actions, where a single top-level event triggers subsequent child events, providing a complete picture of complex operations.
Accessing the Activity Log
Accessing the Activity Log is a breeze. You can conveniently do so via the Global or Object-Level Activity Log pages in Infrahub. Regardless of how you access it, the timestamps display based on your web browser’s local time settings, putting you in control of your viewing experience.
The Activity/Event framework is a key component of the Activity Log, providing a structured way to view and understand the sequence of events. It also has a concept of hierarchy, and Activities that have triggered subsequent child Activities are easily identifiable by a distinct (blue) icon at the end of the log entry.
Global Activity Log
Menu Location: Navigate to Activity → Activity log.
Direct URL: Access it directly via https://<your-instance>/activities.
Object-Level Activity Log
When you view any infrastructure object (e.g., an IP address or a server) in detail, you will find either a dedicated “Activity logs” panel on the right-hand side or a separate “Activity” tab.
Refining Your View with Filters and Search
The global Activity Log provides a robust set of filters to help you pinpoint the information you need:
Branch: Select a specific branch (e.g., main) to view Activities within that context.
Event Type: Filter by categories of actions, such as Node Created or Branch Deleted. For a comprehensive list of event types, refer to the Infrahub Events documentation.
Account / User: Display only events initiated by a particular user account.
Primary / Related Node: Highlight activities associated with a specific infrastructure object.
Has Children: Filter will show only Activities that triggered subsequent child Activities.
Date Range: Define a specific start, end, and time to focus on Activities within that period.
Activity Log filtered by Primary Node.
Activity Log filtered by Children
Delving into Event Details
For a deeper understanding of any specific event, select “View more” from either the global or object-level Activity Log. Clicking on View More will open a detailed view, either on a separate page or as a popover, providing additional crucial information:
Event ID: A unique identifier (UUID) for the specific event.
Event Type: The technical type of the event (e.g., infrahub.node.updated). Consult the Infrahub Events documentation for more details.
Occurred At: The precise timestamp of when the event took place.
Account: The user account that initiated the activity.
Primary Node: The main infrastructure object affected by the event.
Related Nodes: Any other infrastructure objects also impacted by the event.
Changes: A detailed view of the changed attributes, including the “before” and “after” values for update events.
Activity details page with children
Activity log details.
Next Steps
The introduction of the Activity Log provides an invaluable tool for gaining comprehensive insight into the changes occurring within your infrastructure. By leveraging this feature, you can enhance your ability to troubleshoot, audit, and understand the dynamics of your infrastructure environment. Start exploring the Activity Log today and unlock a new level of visibility!
OpsMill is excited to announce the release of Infrahub 1.2, which introduces significant enhancements to Infrahub’s infrastructure data management capabilities. This release focuses on improving efficiency, transparency, and control by implementing new features and optimizations.
Key Features of Infrahub 1.2
Templates: Facilitates standardized and efficient object creation.
Activity Log: Provides a detailed audit trail for enhanced transparency.
Enhanced Webhooks: Expands event triggers and payload customization.
User Interface Refinements: Offers a cleaner and more organized experience.
Performance Optimizations: Includes object list retrieval speed-ups and query efficiency.
Templates: Accelerating and Standardizing Data Creation
One of the standout features in this release is the introduction of Templates. If you’ve ever found yourself repeatedly entering the same configurations for devices or components, you’ll appreciate this. Templates allow you to define reusable blueprints for complex objects, dramatically reducing manual data entry and ensuring consistency across your infrastructure.
Imagine setting up a new rack with a standardized patch panel configuration. With Infrahub 1.2, you can create a “PatchPanel” template with 48 pre-defined ports and any relevant metadata and then instantiate new panels with a single click. Templates aren’t just about saving time; they are about minimizing errors and ensuring your data is reliable.
Creating a Patch Panel with the option to use a Template
This feature is a game-changer for large-scale deployments and ongoing maintenance, allowing you to focus on strategic tasks rather than tedious data entry.
Not Just for Devices
One of the things that makes Infrahub templates different from what you’ve probably seen before is that they can create reusable blueprints for any object type, including complex relationships. NSoTs have previously offered a limited version of this capability, such as NetBox Device Types, which focused only on ensuring consistency in hardware device configurations and inventory management.
Infrahub’s templates provide greater flexibility and dynamic object creation, applicable across diverse infrastructure elements, not just devices. For example, you could use Infrahub templates for Sites or Services, allowing you to easily blueprint higher-level concepts in your environment. For example, templating Sites would enable you to have straightforward Small/Medium/Large site templates with related and common attributes populated for each Site you create in Infrahub. Alternatively, templating of Services would allow you to quickly and consistently re-create a higher-level service construct, such as an L3 VPN or a VPC and EC2 instances for an application.
Activity Log: Complete Transparency and Auditing
The Activity Log is a pivotal addition to Infrahub 1.2, a feature deeply integrated with our enhanced event system (from Infrahub 1.1). Maintaining a meticulous audit trail is essential in today’s compliance-driven landscape, and this log delivers just that. By capturing every event—creation, update, deletion, and more—the Activity Log provides a comprehensive, contextual view of all changes to your infrastructure data.
The Activity Log Page
This detailed record, powered by our robust event framework, allows for precise tracking and effective troubleshooting, ensuring unparalleled transparency and accountability. Also of note, this is just the beginning of the new event framework’s power, and more exciting things are on the horizon!
An Activity Log Entry
The Activity Log on an individual object
This feature is more than just a log; it’s a dynamic record of your infrastructure’s evolution, empowering you to understand and manage changes confidently. Think of it as a recorder for your infrastructure data; every create, update, and delete action is tracked, giving you precise power to see what happened in the past. This level of transparency is invaluable for maintaining data integrity and accountability.
Enhanced Webhooks: Greater Flexibility and Control
We’ve also significantly enhanced our Webhook functionality. You can trigger Webhooks based on various events, including node creation, updates, and deletions. This flexibility allows for deeper integration with your existing workflows and systems.
Moreover, the ability to execute custom Infrahub Transformations on Webhook payloads opens up a world of possibilities. You can tailor the data sent to your endpoints, ensuring seamless interoperability with your tools and services.
The new webhook view
UI and Performance Improvements
Beyond these significant features, we’ve made numerous UI enhancements and performance improvements. These changes reflect our commitment to providing a smooth and efficient user experience.
New and Improved Tables
One of the most immediately noticeable improvements in Infrahub 1.2 is the redesign of its object tables to improve usability and efficiency. Improvements include:
Infinite scrolling has replaced pagination.
Filtering capabilities have also expanded; users can now filter specific columns directly and utilize new conditional filters such as “contains,” “is empty,” and “is not empty.”
When available, the HFID (Human-Friendly Identifier) is now displayed as the lead column, aiding in precise object identification.
Finally, a new action menu has been added to each row to allow quick edits and deletions without going to the object’s detail page. These changes collectively contribute to a more streamlined and responsive data management experience within Infrahub.
Migration and Documentation
We provide detailed documentation and migration guides to help you seamlessly transition to Infrahub 1.2. As always, we recommend backing up your environment before performing any upgrades.
Infrahub 1.2 represents a significant advancement in Infrahub’s capabilities. OpsMill continues to prioritize developing features that improve operational efficiency and data integrity. User feedback remains integral to the ongoing evolution of Infrahub, and we look forward to hearing about your experience with this new release.
We’re excited to see how you use these new features to optimize your data and automation workflows!
Stay tuned for more updates, and happy automating!
We at OpsMill are excited to announce the General Availability of Infrahub 1.0!
With the release of Infrahub version 1.0, we are bringing our vision for infrastructure management and automation to even more organizations.
Infrahub provides a powerful Source of Truth (SoT) for infrastructure teams. It is built around a user-defined and flexible data schema, unified storage engine, with version control and validation of all data from design through deployment. These innovative capabilities make Infrahub a go-to automation solution for organizations with complex infrastructure.
You can also read our initial announcement blog for more information on why and how we built Infrahub.
Infrahub Essentials
Infrahub is a major evolutionary step forward in infrastructure automation. It includes the next generation of Source of Truth and goes far beyond being a simple SoT to address any organization’s infrastructure management challenges in a new way.
Below is an overview of Infrahub’s key components and capabilities.
Infrahub System Architecture
As its foundation, Infrahub provides users with a version-controlled Unified Storage engine driven by a completely user-defined schema for the data. This allows the engine to offer structured data and files to match the organization’s unique needs. The version control in the unified storage engine enables infrastructure teams to apply the same concepts in their Source of Truth as they do today in Git. This includes capabilities for branching/merging/diffing the configuration and data in Infrahub.
Raw data in a Source of Truth is valuable but needs more to be a complete solution. For example, Infrahub provides robust capabilities to turn this data into Artifacts. Artifacts are rendered configuration files that could be used for network equipment, server configuration, or even Terraform and are created programmatically based on the data in Infrahub and the templates provided by a user.
Another way Infrahub can help organizations get value from their data is by building additional objects in the database based on user-provided templates and logic. These Generators create dynamic objects and allow for complex design-driven automation.
In addition, Infrahub exposes Git-like capabilities for Peer Review natively and is coupled with a highly capable CI Pipeline to allow automated validation and tests of proposed changes. Applying a Peer Review and CI Pipeline process to the data in Infrahub will enable organizations to protect the data in their Source of Truth and, therefore, their infrastructure from unwanted changes.
These features are exposed through an intuitive and easy-to-use web interface, a REST API for system control, and deep GraphQL integration for managing the data stored in Infrahub.
New for 1.0
The above-listed basics of Infrahub (unified storage, version control, peer review, artifact generation, and more) have been implemented for our beta users for quite some time. The significant changes in Infrahub 1.0 focus on the polish and capabilities that our large-scale and demanding enterprise users require.
Single Sign-On and User Permissions
Early in the development of Infrahub, we consciously decided to focus on the groundbreaking and critical features that make Infrahub a uniquely world-class Source of Truth. As a result, we set aside some standard enterprise features, such as Single Sign-On, until later, knowing that they would be straightforward to implement in the system.
As we enter a new era with Infrahub 1.0, we have focused on rounding out the enterprise-grade features that our customers require. For example, we added Single Sign-On (SSO) integrations for OIDC/Oauth 2.0 and implemented a robust and granular permissions system. These two features combine to give organizations a level of control that allows them to trust their mission-critical data in Infrahub and bring even closer integration with existing enterprise systems and workflows.
SSO
The new OIDC/OAuth2 capabilities, tested and functioning in the field with many identity providers such as Keycloak, Authentik, and Google Auth, allow organizations to manage their users and groups centrally instead of in the Infrahub UI. Subsequent releases of Infrahub will soon include validated support for additional Identity Providers and other authentication methods (such as LDAP).
This functionality goes hand in hand with the feature we will discuss next: our new user permissions structure.
As users store more data in Infrahub and more teams interact with that data, it becomes crucial to protect it from accidental changes. By implementing a granular role-based permission system, Infrahub allows organizations to prevent unauthorized changes to the data behind critical infrastructure automation efforts.
In the permission structure introduced in Infrahub 1.0, Users are added to Groups, Groups are given Roles, and Permissions are finally allocated to those Roles. Permissions come in two fundamental varieties: Global Permissions and Object Permissions.
The diagram below lays out the relationship between each of these entities. A user can belong to one or more groups, a group can have multiple roles assigned to it, and each role can be granted one or more global or object permissions.
Infrahub Permission Structure
Global vs. Object Permissions
It is also worth mentioning the difference between Global Permissions and Object Permissions.
Global Permissions are specific permission sets that can give users system-wide rights to perform particular actions, for example:
Editing the default Branch
Editing Permissions
Allowing the merging of proposed changes
Account management
Object Permissions are tied to individual objects within Infrahub and control what actions users can take on those objects; examples could include:
Allow read-only access to all objects
Deny the ability to update Tags
Allow editing on any object type that starts with `DataCenter`
For either style, Permissions are structured to be robust and granular by allowing complete control over the Action, Decision, and Role of a given Permission set (plus the Object Type for Object Permissions).
Documentation
This is a significant topic on a new feature that enables complex workflows to meet organizational needs. Because of this, we strongly recommend diving into the documentation links below.
Our design philosophy at OpsMill has always been driven by long experience as network practitioners or admins in Unix-like systems: “Make it work, make it right, make it fast.”
In Infrahub 1.0, we focused on the last part, “Make it fast.”
As our early beta testers began to utilize Infrahub in increasingly large infrastructures (greater than 50,000 nodes), we expected (and found) opportunities for performance improvements. This was especially true when performing Version Control actions on large data sets. As a result of the intensive testing, we made dramatic improvements to branch change management.
Infrahub 1.0 has improved how Infrahub computes a difference between two branches, re-bases a branch, and handles the merge. For example, in the “diff” generation for a proposed change, we have seen a 30% increase in performance over earlier versions. As a result, the proposed change functionality can now reliably handle much larger data sets for comparison.
These performance improvements are only the beginning of our optimization efforts, but they have already improved the experience of Infrahub users of all infrastructure sizes.
Updated UI
While the UI in Infrahub before 1.0 served its purpose well, there was room for improvement. A corollary fourth phrase to our design philosophy might be, “Now, make it pretty!”
We didn’t just change around some colors or styles; we worked closely with our beta testers and a dedicated User Experience professional to ensure that using Infrahub 1.0 would be an experience that our users enjoyed. Infrahub 1.0 UI
We also provided capabilities for complete customization of the navigation menu. We continue to emphasize that Infrahub is a powerful, fully customizable system that meets your organization where it needs to be.
This is just the beginning of OpsMill’s journey with Infrahub. We aim to bring its power to organizations worldwide and continue to add innovative and disruptive capabilities.
Shortly, we will bring even more performance improvements and features to Infrahub, including:
Attribute Permissions and Metadata Permissions will allow even more granular control over the actions a user or group can perform in Infrahub
Computed Attributes will allow even more dynamic control/generation of the data in Infrahub
Enhanced Task Framework will allow users even more visibility and control over the actions happening inside of Infrahub, from the execution of Generators to the syncing of Git repositories
To provide the best experience, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent may adversely affect certain features and functions.
Functional
Always active
The technical storage or access that is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical analysis..The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access that's required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
To provide the best experiences, we use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us to process data such as browsing behavior or unique IDs on this site. Not consenting or withdrawing consent, may adversely affect certain features and functions.
Functional
Always active
The technical storage or access that is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical analysis..The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access that's required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.