Skip to main content

Configuration Objects

The scm CLI provides a consistent interface for managing configuration objects in Strata Cloud Manager. This guide explains the object categories, common operations, and how objects relate to each other.

Overview​

Configuration objects are the building blocks of your SCM environment. The CLI allows you to:

  • Create and update objects across multiple categories (object, network, security, sase)
  • Delete objects that are no longer needed
  • List and inspect existing objects
  • Bulk import objects from YAML files
  • Back up objects for migration or disaster recovery

Prerequisites​

Before working with configuration objects, ensure you have:

  • The scm CLI installed and authenticated (see Getting Started)
  • Appropriate permissions for the target SCM folders
  • An understanding of which object types your workflow requires

Core Concepts​

Object Categories​

The CLI organizes configuration management commands into logical categories:

CategoryDescriptionExample Resources
objectNetwork objectsAddress, address group, application, service, tag
networkNetwork configurationsSecurity zone
securitySecurity policiesSecurity rule, anti-spyware profile, decryption profile
saseSASE deployment settingsBandwidth allocation, remote network

Command Pattern​

All object commands follow a consistent pattern:

scm <action> <category> <object> [NAME] [OPTIONS]

The object name is a positional argument: required for set and delete, optional for show (omit it to list all objects). Most set, delete, and show commands accept exactly one container option: --folder, --snippet, or --device.

Object Relationships​

Configuration objects often have dependencies. For example:

  • Address groups reference address objects
  • Security rules reference zones, address objects, and address groups
  • Service groups reference service objects
warning

When creating objects, ensure that any referenced objects already exist. Creating an address group that references a nonexistent address will fail.

Examples​

Objects Category​

Address Objects​

$ scm set object address web-server \
--folder Shared \
--ip-netmask 10.1.1.10/32
---> 100%
Created address: web-server in folder Shared
$ scm delete object address web-server --folder Shared
---> 100%
Deleted address: web-server from folder Shared
$ scm load object address --file addresses.yaml --folder Shared
---> 100%
✓ Loaded address: web-server-1
✓ Loaded address: web-server-2

Successfully loaded 2 out of 2 addresses from 'addresses.yaml'

Address Groups​

$ scm set object address-group web-servers \
--folder Shared \
--type static \
--members web-server-1 --members web-server-2
---> 100%
Created address group: web-servers in folder Shared
$ scm delete object address-group web-servers --folder Shared
---> 100%
Deleted address group: web-servers from folder Shared
$ scm load object address-group --file address-groups.yaml --folder Shared
---> 100%
✓ Loaded address group: web-servers
✓ Loaded address group: db-servers

Successfully loaded 2 out of 2 address groups from 'address-groups.yaml'

Network Category​

Security Zones​

$ scm set network zone Trust \
--folder Shared \
--mode layer3
---> 100%
Created zone: Trust in folder Shared
$ scm delete network zone Trust --folder Shared
---> 100%
Deleted zone: Trust from folder Shared
$ scm load network zone --file security-zones.yaml --folder Shared
---> 100%
✓ Loaded zone: Trust
✓ Loaded zone: Untrust

Successfully loaded 2 out of 2 security-zones from 'security-zones.yaml'

Security Category​

Security Rules​

$ scm set security rule Allow-Web \
--folder Shared \
--source-zones Trust \
--destination-zones Untrust
---> 100%
Created security rule: Allow-Web in folder Shared
$ scm delete security rule Allow-Web --folder Shared
---> 100%
Deleted security rule: Allow-Web from folder Shared
$ scm load security rule --file security-rules.yaml --folder Shared
---> 100%
✓ Loaded security rule: Allow-Web
✓ Loaded security rule: Block-Malware

Successfully loaded 2 out of 2 security rules from 'security-rules.yaml'

Deployment Category​

Bandwidth Allocation​

$ scm set sase bandwidth-allocation Standard-Branch \
--bandwidth 100 \
--spn-name-list spn1,spn2
---> 100%
Created bandwidth allocation: Standard-Branch (100 Mbps)
$ scm delete sase bandwidth-allocation Standard-Branch --spn-name-list spn1,spn2
---> 100%
Deleted bandwidth allocation: Standard-Branch
$ scm load sase bandwidth-allocation --file bandwidth-allocations.yaml
---> 100%
✓ Loaded bandwidth: Standard-Branch
✓ Loaded bandwidth: Premium-Branch

Successfully loaded 2 out of 2 bandwidth allocations from 'bandwidth-allocations.yaml'

Common Operations​

Creating Objects​

Every object type has a set command with required and optional parameters:

$ scm set object address web-server \
--folder Shared \
--ip-netmask 10.1.1.10/32 \
--description "Web server" \
--tags web --tags production
---> 100%
Created address: web-server in folder Shared

Updating Objects​

Updating uses the same set command. The CLI updates the object if it already exists:

$ scm set object address web-server \
--folder Shared \
--ip-netmask 10.1.1.20/32 \
--description "Updated web server"
---> 100%
Updated address: web-server in folder Shared

Listing Objects​

List objects using the show command:

$ scm show object address --folder Shared
---> 100%
Addresses in folder 'Shared':
------------------------------------------------------------
Name: web-server-1
IP Netmask: 10.1.1.10/32
------------------------------------------------------------
Name: web-server-2
IP Netmask: 10.1.1.11/32
------------------------------------------------------------

Bulk Operations​

Load multiple objects from YAML files:

$ scm load object address --file addresses.yaml --folder Shared
---> 100%
✓ Loaded address: web-server-1
✓ Loaded address: web-server-2

Successfully loaded 2 out of 2 addresses from 'addresses.yaml'

Building Object Dependencies​

Create objects in the correct order to satisfy dependencies:

# First create the address objects
$ scm set object address web-server-1 \
--folder Shared \
--ip-netmask 10.1.1.10/32
---> 100%
Created address: web-server-1 in folder Shared

$ scm set object address web-server-2 \
--folder Shared \
--ip-netmask 10.1.1.11/32
---> 100%
Created address: web-server-2 in folder Shared

# Then create an address group that references them
$ scm set object address-group web-servers \
--folder Shared \
--type static \
--members web-server-1 --members web-server-2
---> 100%
Created address group: web-servers in folder Shared

Best Practices​

  1. Create dependencies first: Always create referenced objects before the objects that reference them (e.g., addresses before address groups).
  2. Use YAML for complex setups: Bulk loading from YAML files ensures consistency and is easier to maintain in version control.
  3. Validate with mock mode: Set SCM_MOCK=1 to test commands before making changes to production.
  4. Use descriptive names: Choose clear, meaningful names for objects to make policies easier to understand.
  5. Organize by folder: Use SCM folders to logically separate objects by environment or location.

Next Steps​