This metadata server emulates the OpenStack Nova metadata API for being used outside a normal OpenStack environment. As example this can be used if running OpenStack Ironic as a standalone service.
This metadata server can handle cloud-init and Cloudbase-Init at the moment.
Please feel free to add your own API services as datasource. Just raise a pull request and implement the interface.
package sources
type Source interface {
Type() string
Initialize(cfg SourceConfig) error
GetMetadata(ip net.IP) (*Metadata, error)
ReportLog(log ReportMessage) error
}
To run the metadata server use Docker or build the binary and run it on your infrastructure.
Our pre-build image is published automatically on Docker Hub. It is using Alpine Linux as base image and is also compatible to run on OpenShift or Kubernetes.
Currently, we do not provide a helm chart for this image but might be coming.
docker run --rm \
--pull always \
--platform linux/amd64 \
--name metadata-server \
--publish 0.0.0.0:80:8080 \
--volume `pwd`/default.config.yaml:/data/config.yaml \
gportal/metadata-server:latest
For getting the metadata server to work with Cloud-Init on bare metal you need at least version 23.1.1
of cloud-init installed on the machine.
Example /etc/cloud.cfg.d/01-metadata.cfg
configuration to use the metadata server with cloud-init. It
is important that only OpenStack is configured as datasource to bypass the platform checks of Cloud-Init.
datasource_list: [ OpenStack ]
reporting:
metadata:
type: webhook
endpoint: http://169.254.169.254/reporting/cloud-init
timeout: 10
retries: 1
Example C:\ProgramData\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf
configuration to use the metadata server with Cloudbase-Init.
[DEFAULT]
username=Administrator
groups=Administrators
first_logon_behaviour=no
inject_user_password=true
mtu_use_dhcp_config=true
ntp_use_dhcp_config=true
metadata_services=cloudbaseinit.metadata.services.httpservice.HttpService
bsdtar_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\bsdtar.exe
mtools_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\bin\
log-dir=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\log\
log-file=cloudbase-init.log
local_scripts_path=C:\Program Files\Cloudbase Solutions\Cloudbase-Init\LocalScripts\
default_log_levels=comtypes=INFO,suds=INFO,iso8601=WARN,requests=INFO
verbose=true
debug=true