| name | linode-cli |
| description | Linode CLI Documentation |
Linode CLI Skill
The official command-line interface for Linode/Akamai cloud infrastructure. Provides easy access to Linode API endpoints directly from the terminal for managing compute instances, Kubernetes clusters, volumes, networking, DNS, and more.
When to Use This Skill
This skill should be triggered when:
- Managing Linode compute instances (creating, listing, updating, deleting Linodes)
- Working with Linode Kubernetes Engine (LKE) clusters and node pools
- Configuring DNS domains and records through Linode's DNS Manager
- Managing Block Storage volumes and volume attachments
- Setting up NodeBalancers and networking infrastructure
- Automating Linode operations in scripts or CI/CD pipelines
- Learning Linode CLI commands and API interactions
- Debugging Linode CLI issues or authentication problems
- Formatting CLI output (JSON, tables, custom fields)
Key Concepts
CLI Architecture
- Auto-generated from OpenAPI: The CLI is automatically generated from Linode's OpenAPI specification, providing direct access to all API endpoints
- Python-based: Built with Python 3.10+, installed via pip
- Command structure:
linode-cli <resource> <action> [options]
- Authentication: Uses API tokens stored in configuration or environment variables
Core Resources
- linodes: Compute instances (virtual machines)
- lke: Linode Kubernetes Engine clusters
- domains: DNS domain management
- volumes: Block Storage volumes
- nodebalancers: Load balancers
- regions: Available data center locations
- images: OS images and custom images
Output Formatting
- Default: Organized tables with key information
- --json: Raw JSON output for scripting
- --pretty: Formatted JSON with indentation
- --format: Custom field selection
- --all: Show all available fields
Quick Reference
Installation and Setup
pip3 install linode-cli
linode-cli configure
export LINODE_CLI_TOKEN=your_api_token_here
Getting Help
linode-cli --help
linode-cli linodes --help
linode-cli linodes create --help
linode-cli regions list
linode-cli images list
Listing Resources
linode-cli linodes list
linode-cli domains list
linode-cli volumes list
linode-cli lke clusters-list
linode-cli linodes list --format "id,label,status,region"
linode-cli linodes list --json
linode-cli linodes list --all
Creating Compute Instances
linode-cli linodes create \
--type g6-standard-2 \
--region us-east \
--image linode/debian11 \
--label my-server \
--root_pass "SecurePassword123!"
linode-cli linodes create \
--type g6-standard-4 \
--region us-central \
--image linode/ubuntu22.04 \
--label production-web \
--root_pass "MySecurePass!" \
--group webservers
linode-cli linodes create \
--type g6-standard-2 \
--region us-west \
--image linode/debian11 \
--label secure-server \
--root_pass "Password123!" \
--authorized_keys "ssh-rsa AAAAB3Nz..."
Managing Kubernetes (LKE)
linode-cli lke cluster-create \
--label my-k8s-cluster \
--region us-central \
--k8s_version 1.28 \
--node_pools.type g6-standard-4 --node_pools.count 3 \
--node_pools.type g6-standard-8 --node_pools.count 2 \
--tags production
linode-cli lke clusters-list
linode-cli lke cluster-update $CLUSTER_ID \
--label renamed-cluster \
--tags production \
--tags monitoring \
--tags backup
linode-cli lke pool-update $CLUSTER_ID $POOL_ID \
--count 5
linode-cli lke cluster-delete $CLUSTER_ID
DNS Management
linode-cli domains create \
--type master \
--domain example.com \
--soa_email admin@example.com
linode-cli domains list
linode-cli domains records-create $DOMAIN_ID \
--type A \
--name www \
--target 192.0.2.1
linode-cli domains delete $DOMAIN_ID
Volume Management
linode-cli volumes create \
--label my-volume \
--size 100 \
--region us-east
linode-cli volumes list
linode-cli volumes attach $VOLUME_ID \
--linode_id $LINODE_ID
linode-cli volumes detach $VOLUME_ID
Advanced Usage
linode-cli linodes list --json | jq '.[] | select(.status=="running")'
LINODE_ID=$(linode-cli linodes list --json | jq -r '.[0].id')
echo "First Linode ID: $LINODE_ID"
for region in us-east us-west eu-central; do
linode-cli linodes create \
--type g6-nanode-1 \
--region $region \
--image linode/alpine3.18 \
--label "test-$region" \
--root_pass "TempPassword123!"
done
Reference Files
This skill includes comprehensive documentation in references/:
- other.md - Links to official Linode CLI Wiki on GitHub with additional documentation, guides, and community resources
Use view to read specific reference files when detailed information is needed.
Working with This Skill
For Beginners
- Start with installation: Run
pip3 install linode-cli and configure with linode-cli configure
- Learn the basics: Use
--help flag extensively to discover available commands
- Practice listing: Start with simple list commands like
linode-cli linodes list
- Test in safe mode: Use small, inexpensive instance types (g6-nanode-1) for testing
- Read the output: Default table output is designed to be human-readable
For Intermediate Users
- Master output formatting: Learn
--json, --format, and --all flags for scripting
- Automate common tasks: Create bash scripts for repetitive operations
- Combine with jq: Use jq for powerful JSON filtering and processing
- Manage multiple resources: Create infrastructure as code with shell scripts
- Use environment variables: Set
LINODE_CLI_TOKEN for non-interactive automation
For Advanced Users
- CI/CD integration: Incorporate linode-cli into deployment pipelines
- Infrastructure automation: Build complete infrastructure provisioning scripts
- API exploration: Use the CLI to understand Linode's API structure
- Custom tooling: Wrap linode-cli in your own management tools
- OpenAPI access: Contribute to the OpenAPI spec for new features
Navigation Tips
- Discover resources: Use
linode-cli --help to see all available resource types
- Action discovery: Each resource has different actions (list, create, update, delete, etc.)
- Parameter help: Use
--help on any action to see required and optional parameters
- JSON inspection: Use
--json to see all available fields for any resource
- Region planning: Run
linode-cli regions list before creating resources
Common Patterns
Authentication Setup
linode-cli configure
export LINODE_CLI_TOKEN=your_token_here
[DEFAULT]
token = your_token_here
region = us-east
type = g6-standard-2
image = linode/ubuntu22.04
Instance Lifecycle
linode-cli linodes create --label test --type g6-nanode-1 --region us-east --image linode/alpine3.18 --root_pass "Test123!"
LINODE_ID=$(linode-cli linodes list --json | jq -r '.[] | select(.label=="test") | .id')
linode-cli linodes shutdown $LINODE_ID
linode-cli linodes delete $LINODE_ID
Scripting Pattern
#!/bin/bash
set -e
REGION="us-central"
TYPE="g6-standard-2"
IMAGE="linode/debian11"
echo "Creating Linode..."
RESULT=$(linode-cli linodes create \
--type "$TYPE" \
--region "$REGION" \
--image "$IMAGE" \
--label "auto-server-$(date +%s)" \
--root_pass "$(openssl rand -base64 32)" \
--json)
LINODE_ID=$(echo "$RESULT" | jq -r '.[0].id')
echo "Created Linode ID: $LINODE_ID"
while true; do
STATUS=$(linode-cli linodes view $LINODE_ID --json | jq -r '.[0].status')
echo "Status: $STATUS"
[[ "$STATUS" == "running" ]] && break
sleep 5
done
echo "Linode is ready!"
Resources
Official Documentation
Key Features
- Auto-completion: Bash completion available for command discovery
- OpenAPI-driven: Always up-to-date with latest API features
- Cross-platform: Works on Linux, macOS, and Windows (via WSL)
- Scriptable: Perfect for automation and infrastructure as code
- Comprehensive: Access to all Linode API endpoints
Community
- Contributors: 49 active contributors
- License: BSD-3-Clause
- Language: Python (98.8%)
- Installation: PyPI package (pip installable)
Tips and Best Practices
Security
- Protect tokens: Never commit API tokens to version control
- Use environment variables: Store tokens in
.env files (git-ignored)
- Rotate regularly: Generate new tokens periodically
- Limit permissions: Use scoped tokens with minimal required permissions
- Strong passwords: Always use strong root passwords for instances
Cost Management
- Start small: Use nanode instances (g6-nanode-1) for testing
- Delete unused: Remove test instances to avoid unnecessary charges
- Monitor usage: Regularly check your account for active resources
- Use tags: Organize resources with tags for easier management
Debugging
- Verbose output: Add
--debug flag for detailed error information
- JSON inspection: Use
--json --pretty to see full API responses
- Check status: Use
view commands to inspect resource details
- API reference: Consult the API docs for endpoint specifics
Troubleshooting
Authentication Issues
echo $LINODE_CLI_TOKEN
linode-cli account view
linode-cli configure
Common Errors
- 401 Unauthorized: Invalid or expired API token
- 404 Not Found: Resource ID doesn't exist or wrong region
- 422 Unprocessable: Missing required parameters or validation error
- 429 Rate Limited: Too many requests, implement backoff
Getting Help
linode-cli --version
linode-cli linodes list --debug
cat ~/.config/linode-cli
Notes
- This skill was generated from official Linode CLI documentation
- The CLI is automatically generated from Linode's OpenAPI specification
- All commands and examples are based on the official Linode API v4
- Command syntax and available options may change with API updates
- Always refer to
--help for the most current command documentation
Updating
To stay current with Linode CLI:
pip3 install --upgrade linode-cli
linode-cli --help
pip3 show linode-cli
The CLI is regularly updated to reflect changes in the Linode API. Check the GitHub repository for release notes and breaking changes.