This repository accompanies the "Transforming Network Automation with Temporal" presentation delivered at the Network Automation Forum, Prague, May 2025. It provides a Temporal workflow for network automation using Containerlab. You can try it out easily in GitHub Codespaces to explore configuration management automation via Temporal workflows.
As mentioned during the presentation, the Temporal workflow will conclude with a codeword which will be a concatenation of strings from each activity. To win a $20 gift card, participants must identify and collect substrings returned by each activity and share it with me via naf slack or in-person!
Note: The
clab.yamltopology file and device configurations are sourced from the srl-labs telemetry lab repository.
This workflow demonstrates network automation with Temporal by pushing BGP configuration to spine1 to establish a BGP session between spine1 and leaf1.
- Linux environment (GitHub Codespaces recommended)
sudoprivileges- Internet access to download software packages
We use ContainerLab to simulate the network environment.
# Deploy the network topology
sudo containerlab deploy -t clab.yamlwget -O temporal.tar.gz "https://temporal.download/cli/archive/latest?platform=linux&arch=amd64"
tar -xzf temporal.tar.gz
sudo mv temporal /usr/local/bin/temporal server start-devTemporal UI will running on http://localhost:8233
If you are using github codespace, you can go to ports tab and click on the forwarded address link for port 8233.
curl -LsSf https://astral.sh/uv/install.sh | shuv run run_worker.pyuv run run_workflow.pyNote: While running the workflow, you may see exceptions related to BGP session verification. This is expected because the workflow retries with exponential backoff while waiting for the BGP session to establish. The workflow will complete either when verification succeeds or when the maximum number of retries is reached. If verification succeeds, run_workflow.py will print the final output; otherwise, the workflow will fail.
show network-instance protocols bgp neighborsudo containerlab destroy -t clab.yamlNote: If you're using GitHub Codespaces, remember to delete your workspace when finished to avoid charges beyond your free tier allocation.