# Device Registration Skill How to register devices into NetBox. ## Prerequisites Load these skills: - `system-discovery` - Bash commands for gathering system info - `netbox-patterns` - Best practices for data quality - `mcp-tools-reference` - MCP tool reference ## Registration Workflow ### Phase 1: System Discovery Use commands from `system-discovery` skill to gather: - Hostname, OS, hardware model, serial number - CPU, memory, disk - Network interfaces with IPs - Running Docker containers ### Phase 2: Pre-Registration Checks 1. **Check if device exists:** ``` dcim_list_devices name= ``` If exists, suggest `/cmdb-sync` instead. 2. **Verify/Create site:** ``` dcim_list_sites name= ``` If not found, list available sites or offer to create. 3. **Verify/Create platform:** ``` dcim_list_platforms name= ``` Create if not exists with `dcim_create_platform`. 4. **Verify/Create device role:** ``` dcim_list_device_roles name= ``` ### Phase 3: Device Creation 1. **Get/Create manufacturer and device type:** ``` dcim_list_manufacturers name="" dcim_list_device_types manufacturer_id=X model="" ``` 2. **Create device:** ``` dcim_create_device name= device_type= role= site= platform= tenant= # if provided serial= description="Registered via cmdb-assistant" ``` 3. **Create interfaces:** For each network interface: ``` dcim_create_interface device= name= type= mac_address= enabled=true ``` 4. **Create IP addresses:** For each IP: ``` ipam_create_ip_address address= assigned_object_type="dcim.interface" assigned_object_id= status="active" ``` 5. **Set primary IP:** ``` dcim_update_device id= primary_ip4= ``` ### Phase 4: Container Registration (if Docker) 1. **Create/Get cluster type:** ``` virt_list_cluster_types name="Docker Compose" virt_create_cluster_type name="Docker Compose" slug="docker-compose" ``` 2. **Create cluster:** ``` virt_create_cluster name= type= site= description="Docker Compose stack on " ``` 3. **Create VMs for containers:** For each running container: ``` virt_create_vm name= cluster= site= role= status="active" vcpus= memory= disk= ``` ### Phase 5: Documentation Add journal entry: ``` extras_create_journal_entry assigned_object_type="dcim.device" assigned_object_id= comments="Device registered via /cmdb-register command\n\nDiscovered:\n- X network interfaces\n- Y IP addresses\n- Z Docker containers" ``` ## Summary Report Template ```markdown ## Machine Registration Complete ### Device Created - **Name:** - **Site:** - **Platform:** - **Role:** - **ID:** - **URL:** https://netbox.example.com/dcim/devices// ### Network Interfaces | Interface | Type | MAC | IP Address | |-----------|------|-----|------------| | eth0 | 1000base-t | aa:bb:cc:dd:ee:ff | 192.168.1.100/24 | ### Primary IP: 192.168.1.100 ### Docker Containers Registered (if applicable) **Cluster:** (ID: ) | Container | Role | vCPUs | Memory | Status | |-----------|------|-------|--------|--------| | media_jellyfin | Media Server | 2.0 | 2048MB | Active | ### Next Steps - Run `/cmdb-sync` periodically to keep data current - Run `/cmdb-audit` to check data quality - Add tags for classification ``` ## Error Handling | Error | Action | |-------|--------| | Device already exists | Suggest `/cmdb-sync` or ask to proceed | | Site not found | List available sites, offer to create new | | Docker not available | Skip container registration, note in summary | | Permission denied | Note which operations failed, suggest fixes |