### Summary

Alpine 3.18 is [expected](https://alpinelinux.org/releases/) in May. This is a remote VM addition and an in-place container update.

Alpine 3.18 has been [released](https://www.alpinelinux.org/posts/Alpine-3.18.0-released.html).

### Issue Type

Feature Idea

### Component Name

`ansible-test`
raise Exception('Use sudo, su, etc. as a non-root user to become root before running this test.')
        else:
            raise Exception()
    display.section(f'Bootstrapping {os_release}')
    bootstrapper = Bootstrapper.init()
    bootstrapper.run()
    result_dir = LOG_PATH
    if result_dir.exists():
        shutil.rmtree(result_dir)
    result_dir.mkdir()
    result_dir.chmod(0o777)
    scenarios = get_test_scenarios()
    results = [run_test(scenario) for scenario in scenarios]
    error_total = 0
    for name in sorted(result_dir.glob('*.log')):
        lines = name.read_text().strip().splitlines()
        error_count = len([line for line in lines if line.startswith('FAIL: ')])
        error_total += error_count
        display.section(f'Log ({error_count=}/{len(lines)}): {name.name}')
        for line in lines:
            if line.startswith('FAIL: '):
                display.show(line, display.RED)
            else:
                display.show(line)
    error_count = len([result for result in results if result.message])
    error_total += error_count
    duration = datetime.timedelta(seconds=int(sum(result.duration.total_seconds() for result in results)))
    display.section(f'Test Results ({error_count=}/{len(results)}) [{duration}]')
    for result in results:
        notes = f' <cleanup: {", ".join(result.cleanup)}>' if result.cleanup else ''