phoenixNAP Bare Metal Cloud and Pulumi Integration

The convergence of physical hardware performance and cloud-native agility has culminated in the integration of phoenixNAP’s Bare Metal Cloud with the Pulumi infrastructure as code (IaC) platform. This synergy allows organizations to deploy non-virtualized, single-tenant infrastructure using the same programmatic workflows typically reserved for virtual machines or serverless functions. By treating physical servers as code, engineers can eliminate the manual overhead associated with traditional hardware procurement and configuration. This integration is specifically designed for organizations that rely heavily on IT automation and require the raw computational power of physical servers without sacrificing the scalability and flexibility of a cloud-native environment. The result is a system where infrastructure management is no longer a bottleneck but a catalyst for accelerating CI/CD pipelines and reducing the time-to-market for high-performance applications.

Bare Metal Cloud Infrastructure Architecture

The phoenixNAP Bare Metal Cloud is a dedicated platform that utilizes automation to facilitate seamless infrastructure deployment. Unlike traditional cloud environments that rely on hypervisors and shared hardware, this is a non-virtualized, single-tenant infrastructure. This means that each client has exclusive access to the physical server, removing the "noisy neighbor" effect and ensuring consistent performance.

The infrastructure provides direct hardware access, which is critical for workloads that require maximum I/O performance, GPU acceleration, or specific hardware configurations. This raw power is delivered through a cloud-native ready IaaS platform.

To ensure flexibility for various business models, the platform supports multiple billing structures:

  • Hourly billing: Allows for short-term scaling and experimentation.
  • Reserved instances: Provides cost predictability for long-term deployments.

The impact of this architecture on a business is profound. By combining the performance of a dedicated server with the pricing and provisioning models of the cloud, companies can modernize their infrastructure stacks while improving performance. This removes the friction between the need for physical power and the desire for operational agility.

Pulumi as the Orchestration Engine

Pulumi serves as the modern infrastructure as code platform that provides the "superpowers" necessary to manage the Bare Metal Cloud at scale. The core differentiator of Pulumi is its move away from domain-specific languages (DSL) or static templates. Instead, it allows operators and application developers to use general-purpose programming languages to define their infrastructure.

This approach eliminates the complexity inherent in learning proprietary configuration languages. When developers and operations teams speak the same language, the entire organization can ship faster to all clouds.

Pulumi supports a wide array of popular programming languages and communities, ensuring that engineers can leverage existing libraries and ecosystem tools:

  • Python
  • Node.js (including JavaScript and TypeScript)
  • Go
  • .NET (including C#, F#, and VB)

By using Pulumi to provision Bare Metal Cloud resources, teams can minimize infrastructure management bottlenecks. The automation of provisioning, rebuilding, and network configuration allows developers to focus on building applications rather than the tedious manual management of physical hardware.

Deployment and Configuration Requirements

To implement the Pulumi provider for Bare Metal Cloud, certain prerequisites must be met to ensure a stable and secure connection between the local orchestration environment and the cloud hardware.

The primary requirements include:

  • Bare Metal Cloud account: This is necessary to access the infrastructure resources. Users must navigate to the Bare Metal Cloud signup page, follow the setup prompts, and use their credentials to access the portal.
  • Pulumi CLI: The Command Line Interface is required to execute the infrastructure code and manage the state of the deployments.

The installation of the provider varies by language, as the package is available in standard packaging formats:

  • JavaScript or TypeScript (Node.js): Installation is handled via npm or yarn using the command npm install pulumi-pnap or yarn add pulumi-pnap.
  • Python: Installation is handled via pip using the command pip install pulumi-pnap.
  • Go: The library is acquired using go get github.com/phoenixnap/pulumi-pnap/sdk/go/....

A critical final step in the configuration process is the creation of a configuration file. This file must be named config.yaml and saved specifically in the user's home directory to ensure the Pulumi CLI can authenticate and communicate with the Bare Metal Cloud API.

Technical Implementation of Bare Metal Servers

Provisioning a bare metal server involves defining the hardware specifications, the operating system image, and the network configuration. In the Pulumi ecosystem, this is achieved by specifying the project and region IDs, along with the desired "flavor" of the server.

Server Provisioning Workflow

The provisioning process typically begins with the creation of security credentials. For instance, an SSH key is required for secure access to the server. In a TypeScript implementation, this is handled via the gcore.CloudSshKey resource:

typescript const myKey = new gcore.CloudSshKey("my_key", { projectId: 1, name: "my-keypair", publicKey: "ssh-ed25519 ...your public key... [email protected]", });

Once the key is established, the bare metal server is defined using the gcore.CloudBaremetalServer resource. The configuration includes the projectId, regionId, flavor (e.g., bm1-infrastructure-small), and the imageId.

typescript const server = new gcore.CloudBaremetalServer("server", { projectId: 1, regionId: 1, flavor: "bm1-infrastructure-small", name: "my-bare-metal", imageId: "0f25a566-91a4-4507-aa42-bdd732fb998d", sshKeyName: myKey.name, interfaces: [{ type: "external", ipFamily: "ipv4", }], });

Windows Bare Metal Configuration

For workloads requiring a Windows environment, the configuration differs slightly, specifically regarding authentication. Windows servers utilize a password instead of an SSH key for initial access.

In a Java implementation, the configuration is structured as follows:

java var windowsServer = new CloudBaremetalServer("windowsServer", CloudBaremetalServerArgs.builder() .projectId(1.0) .regionId(1.0) .flavor("bm1-infrastructure-small") .name("my-windows-bare-metal") .imageId("408a0e4d-6a28-4bae-93fa-f738d964f555") .passwordWo("my-s3cR3tP@ssw0rd") .passwordWoVersion(1.0) .interfaces(CloudBaremetalServerInterfaceArgs.builder() .type("external") .ipFamily("ipv4") .build()) .build());

This detailed specification ensures that the server is deployed with the correct image and network interface, providing an external IPv4 address for remote management.

Server Management and Resource Discovery

Beyond initial provisioning, Pulumi provides the ability to query and manage existing bare metal servers. This is essential for auditing infrastructure and performing automated updates across a fleet of servers.

The getCloudBaremetalServers function allows users to filter and retrieve specific server data based on a variety of parameters. This enables a highly granular approach to infrastructure discovery.

The following table outlines the parameters available for server discovery:

Parameter Description Example Value
projectId The unique identifier of the project 1
regionId The identifier of the cloud region 1
flavorId The specific hardware flavor bm2-hf-small
flavorPrefix Filter by flavor prefix bm2-
ip Filter by a specific IP address 192.168.0.1
name Filter by server name name
status Current state of the server ACTIVE
protectionStatus Protection level of the resource Active
uuid The unique universal identifier b5b4d65d-945f-4b98-ab6f-332319c724ef
onlyWithFixedExternalIp Boolean filter for fixed external IPs true
profileName Filter by profile name profile_name

Implementation of Resource Discovery in Go

In a Go environment, the retrieval of server information is implemented using the gcore.GetCloudBaremetalServers method. This allows for programmatic checks on the state of the infrastructure.

go _, err := gcore.GetCloudBaremetalServers(ctx, &gcore.GetCloudBaremetalServersArgs{ ProjectId: pulumi.Float64Ref(1), RegionId: pulumi.Float64Ref(1), ChangesBefore: pulumi.StringRef("2025-10-01T12:00:00Z"), ChangesSince: pulumi.StringRef("2025-10-01T12:00:00Z"), FlavorId: pulumi.StringRef("bm2-hf-small"), FlavorPrefix: pulumi.StringRef("bm2-"), Ip: pulumi.StringRef("192.168.0.1"), Name: pulumi.StringRef("name"), OnlyWithFixedExternalIp: pulumi.BoolRef(true), ProfileName: pulumi.StringRef("profile_name"), ProtectionStatus: pulumi.StringRef("Active"), Status: pulumi.StringRef("ACTIVE"), TagKeyValue: pulumi.StringRef("tag_key_value"), TagValues: []string{ "value1", "value2", }, Uuid: pulumi.StringRef("b5b4d65d-945f-4b98-ab6f-332319c724ef"), }, nil)

This capability allows DevOps teams to integrate their bare metal fleet into larger automation loops, such as health checks, automatic scaling triggers, or compliance auditing.

DevOps Integration and CI/CD Impact

The integration of Bare Metal Cloud with Pulumi is specifically designed to address the challenges faced by organizations adopting agile principles. In a traditional environment, provisioning a physical server could take days or weeks. By utilizing an API-driven, IaC-based approach, this process is reduced to minutes.

Impact on CI/CD Pipelines

The primary impact on the CI/CD pipeline is the ability to provision and tear down high-performance environments on demand. This allows teams to:

  • Accelerate Testing: Deploy a bare metal server that mirrors production hardware to perform high-fidelity stress tests.
  • Rapid Prototyping: Spin up new infrastructure flavors to evaluate performance gains before committing to a full-scale deployment.
  • Automated Recovery: Use Pulumi's state management to rebuild a physical server from a known good configuration in the event of a catastrophic failure.

Collaboration and Communication

Pulumi's use of standard programming languages bridges the gap between different technical roles. Application developers, who are typically proficient in Python or TypeScript, can now contribute directly to the infrastructure code. This eliminates the need for a "middleman" to translate developer requirements into a specific DSL.

The result is a more collaborative environment where the entire team shares the same language, reducing communication errors and speeding up the deployment cycle.

Analysis of Bare Metal vs. Virtualized Cloud

The shift toward Bare Metal Cloud via Pulumi represents a strategic decision to prioritize raw performance and security. While virtualized clouds offer high flexibility, they introduce overhead through the hypervisor layer and potential variability due to resource sharing.

Bare metal servers, as defined in this integration, offer:

  • Direct Hardware Access: This is critical for specialized workloads that cannot tolerate the latency of a virtualized environment.
  • Single-Tenancy: This eliminates the risk of "noisy neighbors" and provides a higher security posture, as the hardware is not shared with other customers.
  • High-Performance I/O: Physical servers typically outperform virtual machines in disk and network throughput, which is essential for database-heavy applications.

When combined with Pulumi's automation, the traditional downside of bare metal—the lack of agility—is completely neutralized. The infrastructure now behaves like a cloud resource, supporting hourly billing and near-instant setup, while maintaining the performance profile of a dedicated physical machine.

Conclusion

The integration of phoenixNAP’s Bare Metal Cloud with Pulumi transforms physical infrastructure into a programmable asset. By removing the limitations of domain-specific languages and providing a path to provision non-virtualized, single-tenant servers through popular programming languages, this synergy enables a new level of operational efficiency. The ability to define hardware, network, and OS configurations as code allows organizations to bridge the gap between high-performance physical computing and agile DevOps methodologies. For the cloud engineer, this means the power to deploy raw hardware with the confidence of a version-controlled software project, effectively eliminating the infrastructure bottleneck and accelerating the path to production for complex, resource-intensive applications.

Sources

  1. phoenixnap.com
  2. pulumi.com/registry/packages/gcore/api-docs/getcloudbaremetalservers/
  3. github.com/phoenixnap/pulumi-pnap
  4. pulumi.com/registry/packages/gcore/api-docs/cloudbaremetalserver/

Related Posts