| **cephadm**** [-h] [--image IMAGE] [--docker] [--data-dir DATA_DIR]
| [--log-dir LOG_DIR] [--logrotate-dir LOGROTATE_DIR]
| [--unit-dir UNIT_DIR] [--verbose] [--timeout TIMEOUT]
-| [--retry RETRY]
+| [--retry RETRY] [--no-container-init]
| {version,pull,inspect-image,ls,list-networks,adopt,rm-daemon,rm-cluster,run,shell,enter,ceph-volume,unit,logs,bootstrap,deploy,check-host,prepare-host,add-repo,rm-repo,install}
| ...
| **cephadm** **adopt** [-h] --name NAME --style STYLE [--cluster CLUSTER]
| [--legacy-dir LEGACY_DIR] [--config-json CONFIG_JSON]
| [--skip-firewalld] [--skip-pull]
-| [--container-init]
| **cephadm** **rm-daemon** [-h] --name NAME --fsid FSID [--force]
| [--force-delete-data]
| [--registry-username REGISTRY_USERNAME]
| [--registry-password REGISTRY_PASSWORD]
| [--registry-json REGISTRY_JSON]
-| [--container-init]
| [--config-json CONFIG_JSON] [--keyring KEYRING]
| [--key KEY] [--osd-fsid OSD_FSID] [--skip-firewalld]
| [--tcp-ports TCP_PORTS] [--reconfig] [--allow-ptrace]
-| [--container-init]
| **cephadm** **check-host** [-h] [--expect-hostname EXPECT_HOSTNAME]
max number of retries (default: 10)
+.. option:: --no-container-init
+
+ do not run podman/docker with `--init` (default: False)
+
Commands
========
* [--registry-username REGISTRY_USERNAME] username of account to login to on custom registry
* [--registry-password REGISTRY_PASSWORD] password of account to login to on custom registry
* [--registry-json REGISTRY_JSON] JSON file containing registry login info (see registry-login command documentation)
-* [--container-init] Run podman/docker with `--init`
ceph-volume
* [--tcp-ports List of tcp ports to open in the host firewall
* [--reconfig] Reconfigure a previously deployed daemon
* [--allow-ptrace] Allow SYS_PTRACE on daemon container
-* [--container-init] Run podman/docker with `--init`
enter
UNIT_DIR = '/etc/systemd/system'
LOG_DIR_MODE = 0o770
DATA_DIR_MODE = 0o700
+CONTAINER_INIT=True
CONTAINER_PREFERENCE = ['podman', 'docker'] # prefer podman to docker
MIN_PODMAN_VERSION = (2, 0, 2)
CUSTOM_PS1 = r'[ceph: \u@\h \W]\$ '
self.memory_request: Optional[int] = None
self.memory_limit: Optional[int] = None
+ self.container_init: bool = CONTAINER_INIT
self.container_path: str = ""
def set_from_args(self, args: argparse.Namespace):
envs=envs,
privileged=privileged,
ptrace=ptrace,
- init=ctx.container_init,
host_network=host_network,
)
privileged: bool = False,
ptrace: bool = False,
bind_mounts: Optional[List[List[str]]] = None,
- init: bool = False,
+ init: Optional[bool] = None,
host_network: bool = True,
memory_request: Optional[str] = None,
memory_limit: Optional[str] = None,
self.privileged = privileged
self.ptrace = ptrace
self.bind_mounts = bind_mounts if bind_mounts else []
- self.init = init
+ self.init = init if init else ctx.container_init
self.host_network = host_network
self.memory_request = memory_request
self.memory_limit = memory_limit
# let OSD etc read block devs that haven't been chowned
'--group-add=disk',
])
+ if self.init:
+ cmd_args.append('--init')
if self.envs:
for env in self.envs:
envs.extend(['-e', env])
cli(['config', 'set', 'mgr', 'mgr/cephadm/registry_username', ctx.registry_username, '--force'])
cli(['config', 'set', 'mgr', 'mgr/cephadm/registry_password', ctx.registry_password, '--force'])
- if ctx.container_init:
- cli(['config', 'set', 'mgr', 'mgr/cephadm/container_init', str(ctx.container_init), '--force'])
+ cli(['config', 'set', 'mgr', 'mgr/cephadm/container_init', str(ctx.container_init), '--force'])
if ctx.with_exporter:
cli(['config-key', 'set', 'mgr/cephadm/exporter_enabled', 'true'])
logger.info('Deploying cephadm exporter service with default placement...')
cli(['orch', 'apply', 'cephadm-exporter'])
-
if not ctx.skip_dashboard:
prepare_dashboard(ctx, uid, gid, cli, wait_for_mgr_restart)
action='append',
default=[],
help='set environment variable')
+ parser.add_argument(
+ '--no-container-init',
+ action='store_true',
+ default=not CONTAINER_INIT,
+ help='Do not run podman/docker with `--init`')
subparsers = parser.add_subparsers(help='sub-command')
parser_adopt.add_argument(
'--container-init',
action='store_true',
- help='Run podman/docker with `--init`')
+ default=CONTAINER_INIT,
+ help=argparse.SUPPRESS)
parser_rm_daemon = subparsers.add_parser(
'rm-daemon', help='remove daemon instance')
parser_bootstrap.add_argument(
'--container-init',
action='store_true',
- help='Run podman/docker with `--init`')
+ default=CONTAINER_INIT,
+ help=argparse.SUPPRESS)
parser_bootstrap.add_argument(
'--with-exporter',
action='store_true',
parser_deploy.add_argument(
'--container-init',
action='store_true',
- help='Run podman/docker with `--init`')
+ default=CONTAINER_INIT,
+ help=argparse.SUPPRESS)
parser_deploy.add_argument(
'--memory-request',
help='Container memory request/target'
def _parse_args(av):
parser = _get_parser()
+
args = parser.parse_args(av)
if 'command' in args and args.command and args.command[0] == "--":
args.command.pop(0)
+
+ # workaround argparse to deprecate the subparser `--container-init` flag
+ # container_init and no_container_init must always be mutually exclusive
+ container_init_args = ('--container-init', '--no-container-init')
+ if set(container_init_args).issubset(av):
+ parser.error('argument %s: not allowed with argument %s' % (container_init_args))
+ elif '--container-init' in av:
+ args.no_container_init = not args.container_init
+ else:
+ args.container_init = not args.no_container_init
+ assert args.container_init is not args.no_container_init
+
return args