canonical / cloud-init

Official upstream for the cloud-init: cloud instance initialization
https://cloud-init.io/
Other
2.87k stars 856 forks source link

cloud-init schema should not require sudo #4709

Open paololazzari opened 9 months ago

paololazzari commented 9 months ago
$ cloud-init --version
/usr/bin/cloud-init 23.3.3-0ubuntu0~22.04.1

As a non-sudoer:

$ cloud-init schema --config-file test-conf.yaml
Traceback (most recent call last):
  File "/usr/bin/cloud-init", line 33, in <module>
    sys.exit(load_entry_point('cloud-init==23.3.3', 'console_scripts', 'cloud-init')())
  File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 1080, in main
    retval = util.log_time(
  File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 2833, in log_time
    ret = func(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/cloudinit/config/schema.py", line 1375, in handle_schema_args
    paths = read_cfg_paths(fetch_existing_datasource="trust")
  File "/usr/lib/python3/dist-packages/cloudinit/cmd/devel/__init__.py", line 30, in read_cfg_paths
    init.fetch(existing=fetch_existing_datasource)
  File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 466, in fetch
    return self._get_data_source(existing=existing)
  File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 357, in _get_data_source
    (ds, dsname) = sources.find_source(
  File "/usr/lib/python3/dist-packages/cloudinit/sources/__init__.py", line 1032, in find_source
    raise DataSourceNotFoundException(msg)
cloudinit.sources.DataSourceNotFoundException: Did not find any data source, searched classes: (DataSourceNone)

As a sudoer:

$ cloud-init schema --config-file test-conf.yaml
Valid cloud-config: test-conf.yaml
blackboxsw commented 9 months ago

Confirmed a slightly difference error/warning on cloud-init 24.1~1g1003d438 on Ubuntu Noble. We should sort non-root use of schema validation for files that do not require root read-only permission.

ubuntu@nnn:~$ cloud-init schema --config-file ud
2023-12-19 00:50:38,842 - sources[WARNING]: failed loading pickle in /var/lib/cloud/instance/obj.pkl: [Errno 13] Permission denied: '/var/lib/cloud/instance/obj.pkl'
Valid schema ud
ubuntu@nnn:~$ cloud-init --version
/usr/bin/cloud-init 24.1~1g1003d438-0ubuntu1