---
title: Charmhub | Deploy GitHub runner using Charmhub - The Open Operator Collection
description: Deploy the latest version of GitHub runner on any cloud.
url: https://charmhub.io/github-runner/docs/how-to-openstack-runner
---

# GitHub runner

[Canonical IS DevOps](https://charmhub.io/publisher/canonical-is-devops "View all packages from Canonical IS DevOps")

* [Canonical IS DevOps](https://charmhub.io/publisher/canonical-is-devops "View all packages from Canonical IS DevOps")

Platform:

24.04

22.04

20.04

stable 24801f1f

```
juju deploy github-runner
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

---

#### Contacts

##### Maintainers

+ [Launchpad Team](https://launchpad.net/~canonical-is-devops)

* [Submit a bug](https://github.com/canonical/github-runner-operator/issues)

---

Share your thoughts on this charm with the community on discourse.

[Join the discussion](https://discourse.charmhub.io/)

# How to spawn OpenStack runner

The charm can be configured to use OpenStack cloud for creating runners.
The charm must be deployed with the correct configuration, and once the OpenStack integration is
enabled, the charm cannot be changed to use other virtualization methods.

## [Configuration](https://charmhub.io/github-runner/docs/how-to-openstack-runner#p-32709-configuration)

There are three configuration that the charm needs to be deployed with to enable OpenStack integration: `openstack-clouds-yaml`, `openstack-flavor`, and `openstack-network`.

## [Integration](https://charmhub.io/github-runner/docs/how-to-openstack-runner#p-32709-integration)

The image will take about 10-15 minutes to build and be fully integrated. Deploy the
`github-runner-image-builder` charm and wait for the image to be successfully provided via the
relation data.

```
juju deploy github-runner-image-builder
juju integrate github-runner-image-builder github-runner
juju status github-runner
```

The image will take about 10-15 minutes to build and be ready via the relation.

### [OpenStack clouds.yaml](https://charmhub.io/github-runner/docs/how-to-openstack-runner#p-32709-openstack-cloudsyaml)

The `openstack-clouds-yaml` configuration contains the authorization information needed for the charm to log in to the OpenStack cloud.
The first cloud in the `clouds.yaml` is used by the charm.

Here is a sample of the `clouds.yaml`:

```
clouds:
  cloud:
    auth:
      auth_url: https://keystone.cloud.com:5000/v3
      project_name: github-runner
      username: github-runner
      password: PASSWORD
      user_domain_name: Default
      project_domain_name: Default
    region_name: cloud
```

The `clouds.yaml` documentation is [here](https://docs.openstack.org/python-openstackclient/pike/configuration/index.html#clouds-yaml).

### [OpenStack flavour](https://charmhub.io/github-runner/docs/how-to-openstack-runner#p-32709-openstack-flavour)

The `openstack-flavor` configuration sets the flavour used to create the OpenStack virtual machine when spawning new runners.
The flavour is tied with the vCPU, memory, and storage.
The flavours documentation is [here](https://docs.openstack.org/nova/rocky/user/flavors.html).

### [OpenStack network](https://charmhub.io/github-runner/docs/how-to-openstack-runner#p-32709-openstack-network)

The `openstack-network` configuration sets the network used to create the OpenStack virtual machine when spawning new runners.

Note that the network should be configured to allow traffic from the charm deployment (Juju machine) to the OpenStack virtual machine, and traffic from the OpenStack virtual machine to GitHub.

The network documentation is [here](https://docs.openstack.org/neutron/latest/admin/intro-os-networking.html).

> NOTE: The name of the application must not be longer than 48 characters. A valid runner name is 64 characters or less in length and does not include ‘"’, ‘/’, ‘:’,
> ‘<’, ‘>’, '', ‘|’, ‘\*’ and ‘?’. 16 characters are reserved for Juju unit number, unique identifier and other information.

---
