I’m trying to deploy a RHEL8 custom image with MAAS 3.3.4. The image was built with Packer, (we use our own Packer templates and not the packer-maas repository).
You can see below the error message at the end of the installation output:
finish: cmd-install/stage-extract/builtin/cmd-extract: SUCCESS: acquiring and extracting image from http://172.16.37.254:5248/images/rhel/amd64/generic/rhel8-2.0-rc1-tgz/uploaded/root-tgz
Applying write_files from config.
finish: cmd-install/stage-extract/builtin/cmd-extract: SUCCESS: curtin command extract
start: cmd-install/stage-curthooks/builtin/cmd-curthooks: curtin command curthooks
Running curtin builtin curthooks
finish: cmd-install/stage-curthooks/builtin/cmd-curthooks: FAIL: curtin command curthooks
Traceback (most recent call last):
File "/curtin/curtin/commands/main.py", line 202, in main
ret = args.func(args)
File "/curtin/curtin/commands/curthooks.py", line 1886, in curthooks
builtin_curthooks(cfg, target, state)
File "/curtin/curtin/commands/curthooks.py", line 1681, in builtin_curthooks
distro_info = distro.get_distroinfo(target=target)
File "/curtin/curtin/distro.py", line 119, in get_distroinfo
variant_name = variant_os_release['ID']
KeyError: 'ID'
'ID'
curtin: Installation failed with exception: Unexpected error while running command.
Command: ['curtin', 'curthooks']
Exit code: 3
Reason: -
Stdout: start: cmd-install/stage-curthooks/builtin/cmd-curthooks: curtin command curthooks
Running curtin builtin curthooks
finish: cmd-install/stage-curthooks/builtin/cmd-curthooks: FAIL: curtin command curthooks
Traceback (most recent call last):
File "/curtin/curtin/commands/main.py", line 202, in main
ret = args.func(args)
File "/curtin/curtin/commands/curthooks.py", line 1886, in curthooks
builtin_curthooks(cfg, target, state)
File "/curtin/curtin/commands/curthooks.py", line 1681, in builtin_curthooks
distro_info = distro.get_distroinfo(target=target)
File "/curtin/curtin/distro.py", line 119, in get_distroinfo
variant_name = variant_os_release['ID']
KeyError: 'ID'
'ID'
Stderr: ''
I have used the following command to import the image as written in the docs:
Do I need to install curtin hooks in the image? The script fuse-tar-root in the packer-maas repo seems to do that but I don’t know where it gets the curtin hooks.
From what I see in the curtin source code, it tries to extract RHEL release information from etc/redhat-release file, so your assumption about custom partitioning might be correct.
Could you please check whether the issue occurs with the official packer template? Thanks!
Thanks for your reply @igor-brovtsin. I haven’t tried yet with the official packer template but I’m nearly sure that it will work.
I have multiple questions that I didn’t manage to find the answers in the official docs:
What does the parameter base_image when importing an image? When do we need to specify it? What are the possible values?
Regarding the image name, what is the difference between name=rhel/8-custom and name=custom/rhel8 for example? When to use the one or the other?
What is the difference between importing filetype='tgz' and filetype='ddgz'? When to use the one or the other?
I wonder if it is even possible to deploy an image with a custom partitioning with MAAS. How should the storage layout be managed: Do I need to build an image with a single root filesystem and create a custom storage layout with MAAS?
The curtin hook errors seem to indicate an issue with the image lacking proper RHEL identification in /etc/redhat-release. Try building the image using the official MAAS Packer templates as a baseline to include proper curtin hooks.
For your questions:
The base_image parameter specifies the parent image to derive from when importing custom images. This is only needed when importing an image derived from an existing MAAS image.
The name parameter controls the path location to store the image file. name=rhel/8-custom would place it under rhel/ while name=custom/rhel8 would place it under custom/.
filetype=tgz is a gzipped tar archive while ddgz is a gzipped disk image. Use tgz for filesystem archives and ddgz for full disk images.
Custom partitioning is possible but complex - easiest to start with a single root FS image and customize storage with MAAS.
I have modified my Packer template to use only one root FS and was able to deploy it with the default LVM storage layout configured by MAAS. I guess that now, I need to find out how to use the custom storage layout.
@tandrez, if you have any trouble making sense of it, let me know. I write the doc, so if it’s not well-explained, that’s something we should work on together.