Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Resource Management Introduction (Freeform)

SUMMARY You can manage resources in Freeform blueprints from the Resource Management tab. Resources include IPv4 addresses, IPv6 addresses, ASNs, VNIs and integers that are used in VLANs.

In Apstra version 4.1.1, you assign resources in Freeform blueprints using property sets. Property sets specify values for variables, in this case for the different resource types. For more information, see Property Sets (Freeform Blueprints).

Apstra version 4.1.2 introduces a resource management feature for Freeform similar to the one provided for Datacenter. With Datacenter the mechanism is set up for you, and with Freeform you’re responsible for setting it up yourself. You can set it up so resources are assigned and unassigned automatically as needed, just like in the Datacenter reference design.

Resource Types

In Apstra, resources are values that are assigned to various elements of the network. Resources include the following types:

  • IPv4 (including Host IPv4)

  • IPv6 (including Host IPv6)

  • ASN - (autonomous system number)

  • VNI (virtual network identifier)

  • VLAN (virtual local area network)

  • Integer - used for pool type VLAN in local pools (new in Apstra version 4.1.2)

Resource Groupings

Resources for Freeform blueprints are grouped and organized in the following ways:

Resource Pools

  • consist of one or more ranges of resource values.

  • contain one resource type (ASN, VNI, Integer, IPv4, or IPv6).

  • are created in the global Resources catalog.

  • can be used in one or more blueprints.

  • are associated with allocation groups.

Allocation Groups

  • consist of mappings to one or more resource pools.

  • contain one resource type (ASN, VNI, Integer, IPv4, or IPv6).

  • are created in the blueprint.

  • are specific to one blueprint.

  • provide the mechanism for pulling resources from pools and assigning them.

In the Datacenter reference design, templates determine the initial resource requirements. When you create a Datacenter blueprint (from a template) allocation groups are created automatically. Freefrom reference design doesn't use templates, so resource requirements can't be determined when you create a Freeform blueprint. You'll create them yourself in Freeform blueprints.

Groups (Folders)

  • are folders that are organized into a directory.

  • contain assigned resources (and resource generators, described below).

  • are used to arrange resources in any combination you like.

  • can be nested inside other groups.

  • can contain more than one resource type per group.

  • are created in the blueprint.

  • are specific to one blueprint.

  • can be created and deleted automatically as needed, using group generators (described below).

  • All resources must reside within a group (or group generator) that you create (not directly in the built-in Root group).

Local Pools

  • consist of one or more ranges of resource values.

  • contain only resource type Integer.

  • contain only pool type VLAN.

  • are created in the blueprint.

  • are specific to one blueprint.

  • can be created and deleted automatically as needed, with local pool generators (described below).

Generators

A generator in Apstra is a mechanism that automatically creates or deletes something based on your requirements so you don't have to do it manually. It can generate resources, local pools or groups for organizing resources and local pools. The graph database returns a set of objects based on a set of conditions that you specify. These conditions define the scope of what is added and/or removed.

Group Generator

You can put all of your resources in one group (folder), but if your design is complex, it's easier to manage resources in multiple groups. You can organize resources in any group combination that makes sense for you. You probably want to have nested groups, and you might want to have a group for every system in your network. Creating groups manually is simple enough; just click the group that you want to put your new group in and give it a name. Then you'd populate the group with your resources, either manually, or automatically with resource generators (described later). But, if you have many systems and you want a group for every system, creating each group manually is a lot of unnecessary work. You can automate this process with group generators.

To create a group generator, give it a name, then specify a scope based on how you want your groups to be created and managed. Our example of creating one group for every internal system uses the following scope:

This scope tells the graph database to find all internal systems and create a group for each one; and assign the applicable system name to each group. The state of the groups keeps in synch with the graph database as the fabric changes. If you subsequently delete a system, the group created for that system is also deleted. All resources in that group are released back to the pool they came from, ready to be re-used. Conversely, if you create a system after this group generator is created, a group for that system is automatically created (and if you created resource generators inside the group generator, resources are also allocated accordingly).

Resource Generator

When it matters what the value is, you can allocate a resource manually, but in most cases you'll want to automate the process with resource generators. Resource generators don't actually generate resources; they pull existing resources from resource pools via allocation groups, based on a specified scope. Before creating a resource generator create any resource pools and allocation groups that you'll need. Creating an allocation group is straightforward; give it a name and select one or more resource pools to include in the group.

Resource Generator in a Group

Resources must be inside a group (or group generator as described below) that you create. To put all resources generated from a resource generator in one group, select the group and create your resource generator from there.

To create a resource generator, give it a name, then specify a resource type, an allocation group, a subnet prefix length for IPv4 only, and a scope. For example, you might want a group to contain link IPs (/31 addresses) for the links between all internal systems (switches) . First, create any resource pools and allocation groups that you'll need. In the resource generator, specify resource type IPv4, an applicable allocation group, the subnet prefix length, and the following scope:

This scope tells the graph database to find all fabric-facing links. The generator specifies to create link IPs for them, and add them to the group. Resources are automatically generated or released as links are added or removed.

Resource Generator in a Group Generator

To put every generated resource in its own group automatically, you can put your resource generator inside a group generator. The resource generator inherits the scope of the group generator.

For example, to create a group for every system and put an ASN in each group, you'd select the group generator already created and create the resource generator from there. The resource generator inherits the scope from the group generator. In our example, the scope is:

The graph database finds every internal system, allocates an ASN to each one, then puts each ASN in the applicable group based on internal systems.

Multiple Resource Generators in a Group Generator

You can put multiple resource generators inside a group generator (or group). Let's continue our example that already has a group for every internal system and an ASN in every group. You might also want your internal system groups to include loopback IP addresses. You can create a resource generator for loopback IP addresses in the same group generator as for the ASNs; you'd just select resource type IPv4.

The process is the same as when you added the ASNs. From the same group generator as before create the resource generator.….….….….….….…..

Select a group to put the resource in, give it a name, specify the resource type and select an allocation group to pull the resource from. Then you'll have a resource in the specified folder. You can see the resource in the table and the allocation group it was pulled from. You an see if it's been assigned yet. Initially, it won't be. (put this in the task doc)

Local Pool Generator

You can create and assign a specific VLAN ID to a specific system (node) in your blueprint. If it doesn't matter what the specific value is, you can create a generator that will dynamically create and delete VLAN IDs based on the conditions you set. Values will be pulled from these pools as needed. These pools are specific to each blueprint.

Config Templates

(Add resources to config templeates.)

Resource Management Workflow

  1. Create resource pools (ASNs, VNIs, Integers, IPv4 addresses, IPv6 addresses) in the global Resources catalog. This is where you specify ranges of resource values.

  2. Create allocatio groups in the blueprint.

    This is where you specify one or more resource pools to be included in an allocation group. When you're ready to assign resources, you'll select resource pools from one of these allocation groups.
  3. Plan how you'd like to organize your resources, then create groups and group generators in the blueprint, as applicable.

  4. Create resources and resource generators in the blueprint, as applicable.

  5. Create local pools and local pool generators in the blueprint, as applicable.

  6. To render configuration, apply resources to Jinja2 config templates. For details, see Resource Allocation in Apstra Freeform lab guide.