added examples
This commit is contained in:
56
examples/01_create_server.rhai
Normal file
56
examples/01_create_server.rhai
Normal file
@@ -0,0 +1,56 @@
|
||||
// This script demonstrates how to create a new server using the Hetzner Cloud API.
|
||||
// It showcases the use of the `ServerBuilder` to configure the server's properties.
|
||||
|
||||
// Initialize the Hetzner client with your API token.
|
||||
// It's recommended to use an environment variable for the token for security.
|
||||
let client = new_hetzner_client(get_env("HETZNER_API_TOKEN"));
|
||||
|
||||
// Create a new server builder.
|
||||
// The `new_server_builder` function requires three arguments:
|
||||
// 1. name: The name of the server (e.g., "my-server").
|
||||
// 2. server_type: The type of server (e.g., "cx11" for a basic server).
|
||||
// 3. image: The OS image to use (e.g., "ubuntu-22.04").
|
||||
let server_builder = new_server_builder("my-awesome-server", "cx22", "ubuntu-24.04");
|
||||
|
||||
// The `ServerBuilder` provides several optional methods to customize the server.
|
||||
// You can chain these methods to configure the server as needed.
|
||||
|
||||
// .with_location(location: string):
|
||||
// Specifies the location to create the server in (e.g., "nbg1", "fsn1", "hel1").
|
||||
// If not specified, the server will be created in a default location.
|
||||
//
|
||||
// .with_datacenter(datacenter: string):
|
||||
// Specifies the datacenter to create the server in (e.g., "nbg1-dc3", "fsn1-dc14").
|
||||
// This is more specific than the location.
|
||||
//
|
||||
// .with_start_after_create(start: bool):
|
||||
// Determines whether the server should be started immediately after creation.
|
||||
// Defaults to `true`.
|
||||
//
|
||||
// .with_user_data(user_data: string):
|
||||
// Provides cloud-init user data to configure the server on its first boot.
|
||||
// This is useful for automating setup tasks.
|
||||
// Example: "#cloud-config\nruncmd:\n - [ ls, -l, / ]"
|
||||
//
|
||||
// .with_ssh_keys(ssh_keys: array):
|
||||
// An array of SSH key IDs to associate with the server.
|
||||
// If this method is not called, all available SSH keys in your account will be added.
|
||||
// Example: .with_ssh_keys([12345, 67890])
|
||||
|
||||
// Example of chaining optional builder methods:
|
||||
let server_builder = server_builder
|
||||
.with_location("fsn1")
|
||||
.with_user_data("#cloud-config\nruncmd:\n - [ apt-get, update ]\n - [ apt-get, install, -y, htop ]");
|
||||
|
||||
// Create the server using the configured builder.
|
||||
let response = client.create_server(server_builder);
|
||||
|
||||
// Print the details of the server creation response.
|
||||
print(`Server creation initiated for: ${response.name}`);
|
||||
print(` ID: ${response.id}`);
|
||||
print(` Status: ${response.status}`);
|
||||
if response.root_password != "" {
|
||||
print(` Root Password: ${response.root_password}`);
|
||||
} else {
|
||||
print(" Root Password: Not set (SSH key was provided)");
|
||||
}
|
11
examples/02_list_servers.rhai
Normal file
11
examples/02_list_servers.rhai
Normal file
@@ -0,0 +1,11 @@
|
||||
// This script demonstrates how to list all servers in your Hetzner Cloud project.
|
||||
|
||||
// Initialize the Hetzner client with your API token.
|
||||
let client = new_hetzner_client(get_env("HETZNER_API_TOKEN"));
|
||||
|
||||
// Retrieve the list of all servers.
|
||||
print("Listing all servers...");
|
||||
let servers = client.list_servers();
|
||||
|
||||
// The `show_table` method formats the server list into a user-friendly table.
|
||||
print(servers.show_table());
|
15
examples/03_get_server_details.rhai
Normal file
15
examples/03_get_server_details.rhai
Normal file
@@ -0,0 +1,15 @@
|
||||
// This script demonstrates how to retrieve detailed information for a specific server.
|
||||
|
||||
// Initialize the Hetzner client with your API token.
|
||||
let client = new_hetzner_client(get_env("HETZNER_API_TOKEN"));
|
||||
|
||||
// Replace this with the ID of the server you want to inspect.
|
||||
// You can get the server ID by listing all servers (see 02_list_servers.rhai).
|
||||
let server_id = 104298257; // FIXME: Replace with your own ID
|
||||
|
||||
// Get the server object by its ID.
|
||||
print(`Fetching details for server with ID: ${server_id}...`);
|
||||
let server = client.get_server(server_id);
|
||||
|
||||
// The `show_details` method provides a comprehensive overview of the server's properties.
|
||||
print(server.show_details());
|
43
examples/04_server_actions.rhai
Normal file
43
examples/04_server_actions.rhai
Normal file
@@ -0,0 +1,43 @@
|
||||
// This script demonstrates how to perform various actions on a server,
|
||||
// such as rebooting, resetting, and managing rescue mode.
|
||||
|
||||
// Initialize the Hetzner client with your API token.
|
||||
let client = new_hetzner_client(get_env("HETZNER_API_TOKEN"));
|
||||
|
||||
// Replace this with the ID of the server you want to manage.
|
||||
let server_id = 1234567; // FIXME: Replace with a real server ID
|
||||
|
||||
// --- Reboot Server ---
|
||||
// A soft reboot is attempted first. If it doesn't succeed, a hard reset is performed.
|
||||
print(`Rebooting server with ID: ${server_id}...`);
|
||||
client.reboot(server_id);
|
||||
print("Reboot command sent.");
|
||||
|
||||
// --- Reset Server ---
|
||||
// This is equivalent to a hard reset (power cycle).
|
||||
// print(`Resetting server with ID: ${server_id}...`);
|
||||
// client.reset(server_id);
|
||||
// print("Reset command sent.");
|
||||
|
||||
// --- Enable Rescue Mode ---
|
||||
// Enables rescue mode for a server. This is useful for maintenance and recovery.
|
||||
// The `enable_rescue_mode` function can be called in three ways:
|
||||
|
||||
// 1. With only the server ID:
|
||||
// This will enable rescue mode and add all SSH keys from your account to the rescue system.
|
||||
// let root_password = client.enable_rescue_mode(server_id);
|
||||
|
||||
// 2. With a single SSH key ID:
|
||||
// let ssh_key_id = 98765; // FIXME: Replace with your SSH key ID
|
||||
// let root_password = client.enable_rescue_mode(server_id, ssh_key_id);
|
||||
|
||||
// 3. With an array of SSH key IDs:
|
||||
// let ssh_key_ids = [98765, 54321]; // FIXME: Replace with your SSH key IDs
|
||||
// let root_password = client.enable_rescue_mode(server_id, ssh_key_ids);
|
||||
// print(`Rescue mode enabled. Root password: ${root_password}`);
|
||||
|
||||
// --- Disable Rescue Mode ---
|
||||
// Disables rescue mode and reboots the server back into its normal OS.
|
||||
// print(`Disabling rescue mode for server ID: ${server_id}...`);
|
||||
// client.disable_rescue_mode(server_id);
|
||||
// print("Rescue mode disabled.");
|
11
examples/05_list_ssh_keys.rhai
Normal file
11
examples/05_list_ssh_keys.rhai
Normal file
@@ -0,0 +1,11 @@
|
||||
// This script demonstrates how to list all SSH keys in your Hetzner Cloud project.
|
||||
|
||||
// Initialize the Hetzner client with your API token.
|
||||
let client = new_hetzner_client(get_env("HETZNER_API_TOKEN"));
|
||||
|
||||
// Retrieve the list of all SSH keys.
|
||||
print("Listing all SSH keys...");
|
||||
let ssh_keys = client.list_ssh_keys();
|
||||
|
||||
// The `show_table` method formats the SSH key list into a user-friendly table.
|
||||
print(ssh_keys.show_table());
|
58
examples/06_list_images.rhai
Normal file
58
examples/06_list_images.rhai
Normal file
@@ -0,0 +1,58 @@
|
||||
// This script demonstrates how to list available images using various filters.
|
||||
// It showcases the `ListImagesParamsBuilder` for customizing the query.
|
||||
|
||||
// Initialize the Hetzner client with your API token.
|
||||
let client = new_hetzner_client(get_env("HETZNER_API_TOKEN"));
|
||||
|
||||
// Create a new builder for listing images.
|
||||
// You can use this builder to filter and sort the results.
|
||||
let params_builder = new_list_images_params_builder();
|
||||
|
||||
// The `ListImagesParamsBuilder` provides several optional methods:
|
||||
//
|
||||
// .with_status(status: string):
|
||||
// Filters images by status. Can be "available" or "creating".
|
||||
//
|
||||
// .with_type(type: string):
|
||||
// Filters images by type. Can be "system", "snapshot", or "backup".
|
||||
//
|
||||
// .with_sort(sort: string):
|
||||
// Sorts the results. Can be "id", "id:asc", "id:desc", "name", "name:asc",
|
||||
// "name:desc", "created", "created:asc", "created:desc".
|
||||
//
|
||||
// .with_bound_to(server_id: string):
|
||||
// Filters images bound to a specific server ID.
|
||||
//
|
||||
// .with_include_deprecated(include: bool):
|
||||
// Determines whether to include deprecated images. Defaults to `false`.
|
||||
//
|
||||
// .with_name(name: string):
|
||||
// Filters images by name.
|
||||
//
|
||||
// .with_label_selector(selector: string):
|
||||
// Filters by label selector.
|
||||
//
|
||||
// .with_architecture(architecture: string):
|
||||
// Filters by architecture. Can be "x86" or "arm".
|
||||
|
||||
// Example: List all available snapshots, sorted by creation date.
|
||||
let params = params_builder
|
||||
.with_type("snapshot")
|
||||
.with_status("available")
|
||||
.with_sort("created:desc");
|
||||
|
||||
// List the images using the configured parameters.
|
||||
print("Listing all available snapshots...");
|
||||
let images = client.list_images(params);
|
||||
|
||||
// Display the results in a table.
|
||||
print(images.show_table());
|
||||
|
||||
// Example 2: Find a specific system image by name.
|
||||
let params2 = new_list_images_params_builder()
|
||||
.with_type("system")
|
||||
.with_name("ubuntu-24.04");
|
||||
|
||||
print("\nFinding Ubuntu 24.04 image...");
|
||||
let ubuntu_image = client.list_images(params2);
|
||||
print(ubuntu_image.show_table());
|
Reference in New Issue
Block a user