boot-resources import fails

I did try restart several times

output of lsb_release

No LSB modules are available
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: Jammy

The temporal logs show a schema version compatibility check failed

Jun 25 13:33:55 campfire maas-temporal[600606]: 2025/06/25 13:33:55 WARNING: failed to set GOMAXPROCS: open /sys/fs/cgroup/system.slice/snap.maas.pebble.service/cpu.max: permission denied.
Jun 25 13:33:55 campfire maas-temporal[600606]: 2025/06/25 13:33:55 Loading config; env=production,zone=,configDir=/var/snap/maas/39328/temporal
Jun 25 13:33:55 campfire maas-temporal[600606]: 2025/06/25 13:33:55 Loading config files=[/var/snap/maas/39328/temporal/production.yaml]
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        fx.Lifecycle <= go.uber.org/fx.New.func1()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        fx.Shutdowner <= go.uber.org/fx.(*App).shutdowner-fm()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        fx.DotGraph <= go.uber.org/fx.(*App).dotGraph-fm()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        *temporal.ServerImpl <= go.temporal.io/server/temporal.NewServerFxImpl()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        *temporal.serverOptions <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        chan interface {} <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        temporal.synchronizationModeParams <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        *config.Config <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        *config.PProf <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        log.Config <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        resource.ServiceNames <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        resource.NamespaceLogger <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        resolver.ServiceResolver <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        client.AbstractDataStoreFactory <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        visibility.VisibilityStoreFactory <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        searchattribute.Mapper <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        []grpc.UnaryServerInterceptor <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        authorization.Authorizer <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        authorization.ClaimMapper <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        authorization.JWTAudienceMapper <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        map[primitives.ServiceName]static.Hosts <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        log.Logger <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        client.FactoryProvider <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        dynamicconfig.Client <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        encryption.TLSConfigProvider <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        *client.Config <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        client.Client <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        metrics.Handler <= go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        *dynamicconfig.Collection <= go.temporal.io/server/common/dynamicconfig.NewCollection()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        archiver.ArchivalMetadata <= go.temporal.io/server/common/resource.ArchivalMetadataProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        tasks.TaskCategoryRegistry <= go.temporal.io/server/temporal.TaskCategoryRegistryProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        client.FactoryProviderFn <= go.temporal.io/server/temporal.PersistenceFactoryProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.HistoryServiceProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.MatchingServiceProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.FrontendServiceProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.InternalFrontendServiceProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.WorkerServiceProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        *cluster.Config <= go.temporal.io/server/temporal.ApplyClusterMetadataConfigProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        config.Persistence <= go.temporal.io/server/temporal.ApplyClusterMetadataConfigProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        *pprof.PProfInitializerImpl <= go.temporal.io/server/common/pprof.NewInitializer()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] PROVIDE        []trace.SpanExporter <= go.temporal.io/server/temporal.init.func2()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] SUPPLY        []temporal.ServerOption
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] RUN        supply: stub([]temporal.ServerOption)
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] RUN        provide: go.temporal.io/server/temporal.ServerOptionsProvider()
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] Error returned: received non-nil error from function "go.temporal.io/server/temporal".ServerOptionsProvider
Jun 25 13:33:55 campfire maas-temporal[600606]:         /build/temporal-dq8CT2/temporal-1.24.2/src/temporal/fx.go:183:
Jun 25 13:33:55 campfire maas-temporal[600606]: sql schema version compatibility check failed: version mismatch for keyspace/database: "maasdb". Expected version: 1.6 cannot be greater than Actual version: 1.1
Jun 25 13:33:55 campfire maas-temporal[600606]: [Fx] ERROR                Failed to initialize custom logger: could not build arguments for function "go.uber.org/fx".(*module).constructCustomLogger.func2
Jun 25 13:33:55 campfire maas-temporal[600606]:         /build/temporal-dq8CT2/temporal-1.24.2/src/vendor/go.uber.org/fx/module.go:292:
Jun 25 13:33:55 campfire maas-temporal[600606]: failed to build fxevent.Logger:
Jun 25 13:33:55 campfire maas-temporal[600606]: could not build arguments for function "go.temporal.io/server/temporal".init.func8
Jun 25 13:33:55 campfire maas-temporal[600606]:         /build/temporal-dq8CT2/temporal-1.24.2/src/temporal/fx.go:1009:
Jun 25 13:33:55 campfire maas-temporal[600606]: failed to build log.Logger:
Jun 25 13:33:55 campfire maas-temporal[600606]: received non-nil error from function "go.temporal.io/server/temporal".ServerOptionsProvider
Jun 25 13:33:55 campfire maas-temporal[600606]:         /build/temporal-dq8CT2/temporal-1.24.2/src/temporal/fx.go:183:
Jun 25 13:33:55 campfire maas-temporal[600606]: sql schema version compatibility check failed: version mismatch for keyspace/database: "maasdb". Expected version: 1.6 cannot be greater than Actual version: 1.1
Jun 25 13:33:55 campfire maas-temporal[600606]: Unable to create server. Error: could not build arguments for function "go.uber.org/fx".(*module).constructCustomLogger.func2 (/build/temporal-dq8CT2/temporal-1.24.2/src/vendor/go.uber.org/fx/module.go:292): failed to build fxevent.Logger: could not build arguments for function "go.temporal.io/server/temporal".init.func8 (/build/temporal-dq8CT2/temporal-1.24.2/src/temporal/fx.go:1009): failed to build log.Logger: received non-nil error from function "go.temporal.io/server/temporal".ServerOptionsProvider (/build/temporal-dq8CT2/temporal-1.24.2/src/temporal/fx.go:183): sql schema version compatibility check failed: version mismatch for keyspace/database: "maasdb". Expected version: 1.6 cannot be greater than Actual version: 1.1.

Can you explain how you installed MAAS and what commands you executed?

I was creating this for someone to follow. This is based on issues I ran into and what I did to correct errors I ran into. I was originally running Ubuntu 20.04. However, when I had issues importing the Rocky 9 custom image, I did upgrade to 22.04 in order to use packer-maas. I did recently remove maas and reinstalled it. But, I didn’t remove postgres and reinstall. Here is essentially what I did

sudo apt full-upgrade -y

After the updates complete, you can install maas onto the server
If you’re running Ubuntu 16.04 LTS (Xenial Xerus) or later, including Ubuntu 18.04 LTS (Bionic Beaver) and Ubuntu 20.04 LTS (Focal Fossa), you don’t need to do anything. Snap is already installed and ready to go.
If snap and/or apt-get fail to install maas. Check your firewall and routing rules.(e.g. regional blocking, etc).

sudo snap install maas

If sudo snap install maas fails, try:

sudo apt-get -y install maas

Follow these steps to install and initialize postgres with MAAS
Disable conflicting NTP
sudo systemctl disable --now systemd-timesyncd

Install postgres
sudo apt install -y postgresql

Configure admin, password, and database name
Create variables DBUSER, DBPASS, DBNAME in the terminal. When creating a user password, don’t use the @ as part of the password. This will cause issues with postgres. 
DBUSER=<provide a user name>
DBPASS=<create a password for the user>
DBNAME=<create a database name>

Execute the following commands
sudo -i -u postgres psql -c "CREATE USER \"$DBUSER\" WITH ENCRYPTED PASSWORD '$DBPASS'"

sudo -i -u postgres createdb -O "$DBUSER" "$DBNAME"

Next you need to edit pg_hba.conf

sudo vi /etc/postgresql/12/main/pg_hba.conf

Add the following line under #replication privilege


host    $MAAS_DBNAME    $MAAS_DBUSER    0/0     md5


Next modify/verify postgresql.conf. Verify that listen_addresses is not commented out. Then modify listen_addresses.

sudo vi /etc/postgresql/12/main/postgresql.conf

listen_addresses = '*'
		
		After modification restart postgres

sudo systemctl restart postgresql
  	
Now run the following command to initialize postgres with maas

sudo maas init region+rack --database-uri "postgres://$DBUSER:$DBPASS@$HOSTNAME/$DBNAME"

If during initialization it fails to create the btree_gin
, execute the following commands to create the extension. Otherwise, continue to the next step.

sudo -i -u postgres

psql -d <name of database>

CREATE EXTENSION btree_gin;

\q

Re-run the initialization command 
	
	viii. Now create a maas admin

sudo maas createadmin --username=<create username> --email=<input email address>

Once this executes, it prompts you to create a password for the new admin role.

ix. Now check the maas status

sudo maas status
  	
This will return the status of maas services. You are looking for regiond and rackd to be enabled active . If both are enabled active MAAS is configured.

The next step is to setup MAAS CLI or UI. 
Here are steps to configure MAAS CLI
Create an API key.

maas apikey --username=(insert admin name created earlier) > ~/maas-api.key
    		
		After the api key is created, create an ssh key.

ssh-keygen -t rsa
		
		
Once the ssh key is created log into the MAAS server.

maas login <username> http://<ip addres>:5240/MAAS $(cat ~/maas-api.key)
 		
Next, you set the upstream dns. You can choose to use a local network dns or a public dns upstream target (e.g. 8.8.8.8). Using a public upstream dns ensures consistency.

maas <username> maas set-config name=upstream_dns value="8.8.8.8"
 
Add your ssh keys to MAAS.

maas <username> sshkeys create "key=$(cat ~/.ssh/id_rsa.pub)"

Once the CLI configuration is complete, you MUST enable DHCP. DHCP must be enabled before MAAS can commission and deploy machines.

Before enabling DHSCP, you need to identify the fabric and primary rack controller

		Run the following to find the fabric
maas <username> fabrics read

This will return a JSON, look for the fabric key. The value is used in the DHCP enabling command.  

The next value to find is the rack controller system_id. 

mass <username> rack-controllers read | grep system_id

This will return the system_id. 

Once have the fabric value and system_id, you can enable DHCP.

maas <username> vlan update <fabric value> untagged dhcp_on=True primary_rack=<system_id>

If the dynamic IP range is not configured, run the following command to find the subnet id.

maas <username> subnets read
	
This will return a JSON. In the JSON are nested values under vlan, ignore the vlan values and look for the id that is part of the top structure of the key value pairs.

Now, create a dynamic IP range. When creating your dynamic IP range, pick a range inside your subnet (but outside static assignments). The command below is providing an example of IP ranges.

maas <username> ipranges create type=dynamic start_ip=192.168.10.100 end_ip=192.168.10.199 subnet=<SUBNET_ID>
 	
Once this runs, you will see a JSON return of the dynamic IPs.

After running  maas <username> subnets read. if the gateway_up is null, you will need to set the default gateway. 

maas maasadmin subnet update 192.168.10.0/24 gateway_ip=192.168.10.1

I believe you messed up your environment by installing/uninstalling snaps and debs. I suggest to remove everything (danger zone - it will wipe also postgres and your databases) with

sudo DEBIAN_FRONTEND=noninteractive apt remove --purge -y 'maas*' 'postgresql*' && sudo DEBIAN_FRONTEND=noninteractive apt -y autoremove
sudo snap remove --purge maas

and start from scratch

okay, will do. @r00ta I need to send you your favorite tasty beverage. I really appreciate the help and insight. Thank you.

1 Like

reinstalling worked!

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.