Migrate from the old Livepatch charm

The Juju framework offered a, now deprecated, way to write charms called reactive charms. The modern framework is known as the operator framework. Below, the process to identify which type of charm is running is explained.

Run juju status and observe the charm name and channel. The output will resemble the following. livepatch-status|800x31

Machine Charm

  • Charm name = canonical-livepatch-server

    • Channel = latest/* - Reactive charm (deprecated)

    • Channel = ops1.x/* - Operator charm (recommended for new deployments)

Kubernetes Charm

  • Charm name = canonical-livepatch-server-k8s

    • Channel = latest/* - Operator charm (recommended for new deployments)

    • Only an operator charm is available for Livepatch on K8s.

Migrate deployment

Currently there is no way to migrate existing data to a new deployment. Existing deployments will continue to function but will no longer receive new features. It is recommended that new deployments use the operator charms.

To migrate an existing reactive charm deployment, set up a new deployment and follow the steps below to migrate the configuration.

Migrate configuration

The new Livepatch charms have different configuration keys. Additionally, some options were removed in favour of a simpler structure. To migrate the old configuration to the new one, use this script.

To run the script:

python3 ./converter.py -i input.yaml -o converted.yaml

Where the input.yaml is the old configuration to convert. To extract it from the deployment, use this command:

juju config livepatch-server > input.yaml

The script creates or overwrites the output file specified by the -o parameter.

Old config

New config

Notes

log_level

server.log-level

Possible values:’debug’, ‘info’, ‘warn’, ‘error’.Default is ‘info’

url_template

server.url-template

Must be in the form:”http(s)://<hostname>:<port>/v1/patches/{filename}”

psql_dbname

NA

psql_roles

NA

blocklist_cache_refresh

patch-blocklist.refresh-interval

Make sure that patch-blocklist.enabled is set to true

contract_server_url

contracts.url

contract_server_user

contracts.user

contract_server_password

contracts.password

concurrency_limit

server.concurrency-limit

burst_limit

server.burst-limit

is_cloud_delay_enabled

cloud-delay.enabled

cloud_delay_default_delay_hours

cloud-delay.default-delay-hours

dbconn_max

database.connection-pool-max

dbconn_max_lifetime

database.connection-lifetime-max

patch_sync_enabled

patch-sync.enabled

patch_cache_ttl

patch-cache.cache-ttl

patch_cache_size

patch-cache.cache-size

patch_cache_on

patch-cache.enabled

http_proxy

patch-sync.proxy.http

Make sure that patch-sync.proxy.enabled is set to true.

https_proxy

patch-sync.proxy.https

no_proxy

patch-sync.proxy.no-proxy

event_bus_client_cert

machine-reports.event-bus.client-cert

Make sure: machine-reports.event-bus.enabled is set to true

event_bus_client_key

machine-reports.event-bus.client-key

event_bus_ca_cert

machine-reports.event-bus.ca-cert

event_bus_brokers

machine-reports.event-bus.brokers

auth_lp_teams

Removed

Removed. Ubuntu SSO authentication is no longer available for on-premises deployments. Use auth.basic.* instead.

auth_sso_public_key

Removed

Removed. See above.

auth_sso_location

Removed

Removed. See above.

auth_basic_users

auth.basic.users

Make sure that auth.basic.enabled is set to true

swift_container_name

patch-storage.swift-container

swift_auth_url

patch-storage.swift-auth-url

swift_username

patch-storage.swift-username

swift_apikey

patch-storage.swift-api-key

swift_tenant_name

patch-storage.swift-tenant

swift_region_name

patch-storage.swift-region

swift_domain_name

patch-storage.swift-domain

patchstore

patch-storage.type

default: filesystem The available options are: - filesystem - swift - postgres - s3

storage_path

patch-storage.filesystem-path

Path defaults to /var/snap/canonical-livepatch-server/common/patches

sync_token

patch-sync.token

sync_upstream

patch-sync.upstream-url

sync_identity

NA

sync_upstream_tier

NA

Upstream tier to download patch snapshots from. Default value is “updates”.

sync_interval

patch-sync.interval

sync_tier

NA

Tier to assign downloaded patches to. Defaults to “edge”.

sync_flavors

patch-sync.flavors

sync_architectures

patch-sync.architectures

sync_minimum_kernel_version

patch-sync.minimum-kernel-version

report_retention

machine-reports.database.retention-days

report_cleanup_interval

machine-reports.database.cleanup-interval

report_cleanup_row_limit

machine-reports.database.cleanup-row-limit

influxdb_url

influx.url

influxdb_token

influx.token

influxdb_bucket

influx.bucket

influxdb_organization

influx.organization

s3_bucket

patch-storage.s3-bucket

s3_endpoint

patch-storage.s3-endpoint

s3_region

patch-storage.s3-region

s3_access_key_id

patch-storage.s3-access-key

s3_secret_key

patch-storage.s3-secret-key

s3_secure

patch-storage.s3-secure

profiler_enabled

profiler.enabled

profiler_server_address

profiler.server_address

profiler_hostname

profiler.hostname

profiler_sample_rate

profiler.sample_rate

profiler_upload_rate

profiler.upload_rate

profiler_mutex_profile_fraction

profiler.mutex_profile_fraction

profiler_block_profile_rate

profiler.block_profile_rate

profiler_profile_allocations

profiler.profile_allocations

profiler_profile_inuse

profiler.profile_inuse

profiler_profile_mutexes

profiler.profile_mutexes

profiler_profile_blocks

profiler.profile_blocks

profiler_profile_goroutines

profiler.profile_goroutine