Ceph has a dependency on distutils, which was removed from the
packaging since it was an undeclared package dependency. This
change adds setuptools package to work around this dependency.
Since distutils has been removed from python 12, this also reverts
to core22.
The main idea is to use the PostgreSQL charms with MicroCeph so users
can do backups through pgBackRest in bucket without a cloud service
subscription.
## Type of change
- [X] New feature (non-breaking change which adds functionality)
## How Has This Been Tested?
To test, I used the following steps:
1. Generate some SSL files:
```sh
sudo openssl genrsa -out /var/snap/microceph/common/ca.key 2048
sudo openssl req -x509 -new -nodes -key /var/snap/microceph/common/ca.key -days 1024 -out /var/snap/microceph/common/ca.crt -outform PEM
sudo openssl genrsa -out /var/snap/microceph/common/server.key 2048
sudo openssl req -new -key /var/snap/microceph/common/server.key -out /var/snap/microceph/common/server.csr
sudo nano /var/snap/microceph/common/extfile.cnf # and put the following content: subjectAltName = DNS:localhost
sudo openssl x509 -req -in /var/snap/microceph/common/server.csr -CA /var/snap/microceph/common/ca.crt -CAkey /var/snap/microceph/common/ca.key -CAcreateserial -out /var/snap/microceph/common/server.crt -days 365 -extfile /var/snap/microceph/common/extfile.cnf
```
2. Then bootstrap the MicroCeph cluster, enable the RadosGW service with
SSL enabled and create a user:
```sh
sudo microceph cluster bootstrap
sudo microceph disk add loop,4G,3
sudo microceph enable rgw --ssl-certificate=/var/snap/microceph/common/server.crt --ssl-private-key=/var/snap/microceph/common/server.key
sudo microceph.radosgw-admin user create --uid test --display-name test
```
3. To finish, test the access by creating a bucket:
```sh
aws configure # to configure the credentials from RadosGW.
AWS_CA_BUNDLE=/var/snap/microceph/common/ca.crt aws --endpoint-url=https://localhost s3 mb s3://test --region ""
```
## Contributor's Checklist
Please check that you have:
- [X] self-reviewed the code in this PR.
- [ ] added code comments, particularly in hard-to-understand areas.
- [X] updated the user documentation with corresponding changes.
- [X] added tests to verify effectiveness of this change.