# 第 05 册 · cephadm 部署与运维篇 > 基于 Ceph 官方文档整理 | 文档版本:**Tentacle v20.2.4** | 抓取日期:2026-09-17 | 源文:ceph/ceph@v20.2.4 `doc/cephadm/` > 官网入口:https://docs.ceph.com/en/tentacle/cephadm/ --- ## 本册导读 本册覆盖 Ceph Tentacle 官方文档 `doc/cephadm/` 目录下的全部 25 个页面(根目录 10 页 + `services/` 子目录 15 页),系统讲解如何用 **cephadm** 完成 Ceph 集群的部署、扩容、服务编排、OSD 管理、升级、证书管理与日常运维。 ### 覆盖页面清单 | 源文文件 | 页面标题 | 对应本册章节 | |---|---|---| | `index.rst` | Cephadm | 一、二 | | `compatibility.rst` | Compatibility and Stability | 一(前提)、十三 | | `install.rst` | Using cephadm to Deploy a New Ceph Cluster | 三 | | `adoption.rst` | Converting an existing cluster to cephadm | 十二 | | `host-management.rst` | Host Management | 四 | | `services/index.rst` | Service Management | 五 | | `services/mon.rst` | MON Service | 七 | | `services/mgr.rst` | MGR Service | 七 | | `services/mds.rst` | MDS Service | 七 | | `services/rgw.rst` | RGW Service | 七 | | `services/nfs.rst` | NFS Service | 七 | | `services/iscsi.rst` | iSCSI Service | 七 | | `services/smb.rst` | SMB Service | 七 | | `services/snmp-gateway.rst` | SNMP Gateway Service | 七 | | `services/monitoring.rst` | Monitoring Services | 七 | | `services/mgmt-gateway.rst` | Management Gateway | 七 | | `services/oauth2-proxy.rst` | OAuth2 Proxy | 七 | | `services/tracing.rst` | Tracing Services | 七 | | `services/custom-container.rst` | Custom Container Service | 七 | | `services/osd.rst` | OSD Service | 六 | | `certmgr.rst` | Certificate Management | 十 | | `upgrade.rst` | Upgrading Ceph | 九 | | `operations.rst` | Cephadm Operations | 八 | | `client-setup.rst` | Basic Ceph Client Setup | 十一 | | `troubleshooting.rst` | Troubleshooting | 十四 | ### 建议阅读顺序 1. **第一次部署**:一 → 三 → 四 → 六(OSD)→ 七(按需选服务)→ 十一(客户端)。 2. **已有集群迁移**:一 → 十三(兼容性核对)→ 十二(adoption)→ 八。 3. **日常运维**:四(主机/label/maintenance/drain)→ 五(orch 命令与 spec)→ 八(日志、健康检查、keyring)。 4. **变更与风险操作**:九(升级)→ 十(证书)→ 十四(排障)。 5. **速查**:直接跳到十五(命令速查表)。 ### 本册约定 - 中文叙述;**命令、参数名、配置项、默认值、spec 字段名一律保留英文原文**不翻译。 - 代码块按语言标注:`bash` / `yaml` / `ini` / `json` / `text`。 - 官方源文未写明、由本册补充的内容,以 `> 💡 补充:...` 标注。 - 源文未涉及或无法从源文确认的内容,明确写「文档未明确」,不做推测。 --- ## 一、cephadm 是什么 ### 1.1 定位 `cephadm` 是一个用于管理 Ceph 集群的实用程序(utility)。官方对它的能力描述是: - `cephadm` can add a Ceph container to the cluster.(向集群添加 Ceph 容器) - `cephadm` can remove a Ceph container from the cluster.(从集群移除 Ceph 容器) - `cephadm` can update Ceph containers.(更新 Ceph 容器) `cephadm` 管理 Ceph 集群的**完整生命周期**:从 bootstrapping 开始(在单节点上创建一个最小集群:一个 monitor + 一个 manager),随后通过 orchestration interface 扩展集群、添加主机、供给(provision)Ceph 守护进程与服务。整个生命周期管理既可以通过 Ceph CLI 完成,也可以通过 Dashboard(GUI)完成。 关键事实: - `cephadm` 于 **Ceph v15.2.0(Octopus)** 引入,**不支持更老的 Ceph 版本**。 - `cephadm` **不依赖** Ansible、Rook、Salt 这类外部配置管理工具;但这些工具仍可用于自动化 cephadm 自身未覆盖的操作: - cephadm-ansible:https://github.com/ceph/cephadm-ansible - Rook:https://rook.io/docs/rook/v1.10/Getting-Started/intro/ - ceph-salt:https://github.com/ceph/ceph-salt > 引自:[Cephadm](https://docs.ceph.com/en/tentacle/cephadm/) ### 1.2 与 ceph-deploy / ceph-ansible / Rook 的对比 > 💡 补充:下面表格中的「cephadm」一列依据本册源文(index.rst / install.rst / adoption.rst);ceph-deploy、ceph-ansible、Rook 三列属于本册源文范围之外的工具,源文仅出现名称、未做能力对比,因此相关格子标注「文档未明确(本册源文未覆盖)」,以免编造。 | 维度 | cephadm | ceph-deploy | ceph-ansible | Rook | |---|---|---|---|---| | 官方引入版本 | v15.2.0 (Octopus) | 文档未明确(本册源文未覆盖) | 文档未明确(本册源文未覆盖) | 文档未明确(本册源文未覆盖) | | 部署形态 | 容器(Podman / Docker),守护进程以容器运行 | 文档未明确(本册源文未覆盖) | 文档未明确(本册源文未覆盖) | Kubernetes Operator 形态,文档未明确细节 | | 是否依赖外部配置管理工具 | **不依赖** Ansible / Rook / Salt | 文档未明确 | 文档未明确 | 文档未明确 | | 主机纳管方式 | SSH + 容器运行时,主机需满足 `cephadm-host-requirements` | 文档未明确 | 文档未明确 | 文档未明确 | | 集群生命周期管理 | 完整生命周期:bootstrap → 加主机 → 供给守护进程/服务 → 升级 | 文档未明确 | 文档未明确 | 文档未明确 | | 旧集群纳管 | 支持,见 `adoption.rst`;**仅支持 BlueStore OSD** | 文档未明确 | 文档未明确 | 文档未明确 | | 配置来源 | Monitor 的集中配置数据库(`ceph config ...`),而非 `ceph.conf` | 文档未明确 | 文档未明确 | 文档未明确 | | 官方替代关系 | Octopus 之后官方主推的部署方式 | 文档未明确 | 文档未明确 | 文档未明确 | ### 1.3 适用场景与前提 **适用场景:** - 新建 Ceph 集群(单节点起步再扩展)。 - 把由 `ceph-deploy`、`ceph-ansible`、`DeepSea` 部署的**部分**已有集群转换为 cephadm 管理(见第十二章,限制:仅 BlueStore OSD)。 - 需要声明式(declarative)管理服务与守护进程数量的场景(ServiceSpec + placement)。 **主机前提(`cephadm-host-requirements`):** | 前提项 | 要求 | |---|---| | Python | Python 3(`cephadm` 具体要求 **Python 3.6 或更高**) | | init 系统 | Systemd | | 容器运行时 | Podman 或 Docker | | 时间同步 | 需要,例如 Chrony 或传统的 `ntpd` | | 存储供给 | LVM2(用于 provisioning storage devices) | | Linux 发行版 | 任何现代 Linux 发行版均可;依赖项由 bootstrap 过程自动安装 | | SSH | `ssh` 必须已安装并处于运行状态,否则 bootstrap 会失败 | 其他相关前提与说明: - **Podman 版本兼容性**:并非每个 Podman 版本都与 Ceph 兼容,详见第十三章的 Podman 版本矩阵。 - **Docker Live Restore**:可选特性,允许重启 Docker Engine 而不重启所有运行中的容器,参见 Docker 官方文档。 - **`cephadm` 新版本形态**:较新版本的 `cephadm` 是由源码编译出的可执行文件;**不再**能简单地从 Ceph git 树里复制单个脚本来运行。若要运行开发版本,需要自行构建 cephadm 独立可执行文件(源文指向 `compiling-cephadm`)。 - **部署 OSD 时**:目标主机上**不要**安装 `ceph-osd` 包,否则可能与 cephadm 的管理控制产生冲突,导致错误或异常行为(`osd.rst` 的 warning)。 - **`ssh` 用户**:默认是 `root`;若使用非 root 用户,该用户必须具备 **passwordless sudo** 权限。 > 引自:[Using cephadm to Deploy a New Ceph Cluster](https://docs.ceph.com/en/tentacle/cephadm/install/)、[Compatibility and Stability](https://docs.ceph.com/en/tentacle/cephadm/compatibility/)、[Converting an existing cluster to cephadm](https://docs.ceph.com/en/tentacle/cephadm/adoption/) --- ## 二、cephadm 架构 ### 2.1 组件构成 | 组件 | 说明 | |---|---| | `cephadm` 二进制 / 可执行文件 | 在主机上直接执行的命令行工具。负责 bootstrap、add-repo、install、prepare-host、adopt、shell、enter、logs、rm-cluster、deploy 等本地动作。较新版本为**由源码编译出的可执行文件**。 | | `cephadm` mgr module | Ceph Manager 中的一个模块(`mgr module`),是编排能力的实际执行者。可用 `ceph mgr module enable/disable cephadm` 启停;用 `ceph orch set backend cephadm` 指定为编排后端。 | | orchestrator(编排器)与 `ceph orch ...` CLI | 通过 orchestration interface 与 mgr module 交互;所有 `ceph orch *` 命令都经由它。用 `ceph orch set backend ''` + `ceph mgr module disable cephadm` 可完全禁用。 | | ServiceSpec(服务规格) | 描述「部署什么服务、放在哪里、用什么配置」的数据结构,通常以 YAML 提交给 `ceph orch apply -i`。 | | placement(放置规格) | ServiceSpec 的一部分,决定在哪些主机上部署多少个守护进程(`count` / `label` / `hosts` / `host_pattern` / `count_per_host`)。 | | DriveGroupSpec(OSD 服务规格) | `service_type: osd` 的特殊 spec,用磁盘属性(model / vendor / size / rotational / paths …)描述集群布局。 | | 守护进程容器化机制 | 每个守护进程是一个 systemd unit + 一个容器:unit 名形如 `ceph-@`;容器执行命令可从 `/var/lib/ceph///unit.run` 查看。 | | 声明式状态(Declarative State) | cephadm 持续比对「实际运行的守护进程列表」与「服务规格声明的列表」,按差异新增/删除守护进程。 | ### 2.2 声明式协调循环(Algorithm description) cephadm 的声明式状态由一组「包含 placement 的 service specifications」构成。它持续把集群中实际运行的守护进程列表与规格列表对比,必要时增加新守护进程、移除旧守护进程。 候选主机的选择顺序(优先级从高到低): 1. 显式的主机名(`hosts:` / 命令行直接给主机名)——找到就用它们; 2. 否则找 label 规格(`label:`); 3. 再否则按 host pattern(`host_pattern`)匹配; 4. 最后兜底:选择所有已知主机作为候选。 其他行为要点: - cephadm **知道**现有守护进程的位置,并**尽量避免移动**它们。 - 支持部署指定数量的服务;若候选主机上的守护进程数少于 `count`,则在候选主机中**随机**选择主机部署新的;多于 `count` 则**移除**已有守护进程;最后移除落在候选主机列表之外的守护进程。 - 特例:当 placement 选出的主机数**少于** `count` 要求时,cephadm 只在被选中的主机上部署。 ### 2.3 数据落地位置 | 路径 | 内容 | |---|---| | `/var/log/ceph/` | 全部集群日志(默认走 stderr / journald,除非启用 log to file) | | `/var/lib/ceph/` | 全部集群守护进程数据(日志除外) | | `/var/lib/ceph//` | 单个守护进程的数据 | | `/var/lib/ceph//crash` | 集群 crash 报告 | | `/var/lib/ceph//removed` | 被 cephadm 移除的有状态守护进程(如 monitor、prometheus)的旧数据目录 | | `/var/lib/ceph///unit.run` | 容器实际执行命令 | | `/var/log/ceph/cephadm.log` | `cephadm` 可执行文件自身的日志(默认) | | `/etc/ceph/ceph.conf`、`/etc/ceph/ceph.client.admin.keyring` | bootstrap 写入的访问集群所需文件 | | `/var/lib/ceph//config` | 自 16.2.10(Pacific) / 17.2.1(Quincy) 起,cephadm 额外保存的 config 与 keyring 目录(cephadm 专用) | | `var/lib/ceph/{FSID}/cephadm.{DIGEST}` | cephadm 二进制的本地副本(`{DIGEST}` 为当前运行 Ceph 版本的字母数字串) | > 💡 补充:由于 monitor、prometheus 等守护进程会在 `/var/lib/ceph` 下存放大量数据,官方建议把该目录单独放到独立的磁盘、分区或逻辑卷上,避免撑爆根文件系统。 > 引自:[Service Management](https://docs.ceph.com/en/tentacle/cephadm/services/index/)、[Cephadm Operations](https://docs.ceph.com/en/tentacle/cephadm/operations/) --- ## 三、安装 cephadm 与 bootstrap ### 3.1 获取 cephadm 有两种获取初始 `cephadm` 的方式,**二者互斥**,不要在同一系统上混用: 1. **发行版包安装**(distribution-specific installation) 2. **curl 下载**(curl-based installation) #### 3.1.1 发行版包安装 ```bash # Ubuntu apt install -y cephadm # CentOS Stream dnf search release-ceph dnf install --assumeyes centos-release-ceph- dnf install --assumeyes cephadm # Fedora dnf -y install cephadm # SUSE zypper install -y cephadm ``` #### 3.1.2 curl 方式 ```bash CEPH_RELEASE=18.2.0 # replace this with the active release curl --silent --remote-name --location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm chmod +x cephadm ./cephadm ``` > 说明:源文示例中 `CEPH_RELEASE=18.2.0`,并提示应从 releases 页面的 "latest active releases" 中确定实际版本。 若 `cephadm` 运行报错(含 `bad interpreter` 字样),通常是 Python 版本不对;可显式指定 Python 运行: ```bash python3.8 ./cephadm ``` #### 3.1.3 把 cephadm 安装到主机上 独立 `cephadm` 足以 bootstrap 集群,但官方建议把 `cephadm` 命令安装到主机: ```bash ./cephadm add-repo --release ./cephadm install which cephadm # 期望输出 /usr/sbin/cephadm ``` ### 3.2 Bootstrap 新集群 #### 3.2.1 前置说明 - 第一步是在集群的第一台主机上运行 `cephadm bootstrap`,该动作会创建集群的第一个 Monitor 守护进程。 - **必须**把第一台主机的 IP 地址传给 bootstrap(`--mon-ip`)。 - **`ssh` 必须已安装并运行**,否则 bootstrap 失败。 - 若主机有多个网络/网卡,务必选择一个所有需要访问该集群的主机都能连通的地址。 - 官方建议:典型集群部署 3 或 5 个 Monitor 分散在不同主机;若集群有 5 个及以上节点,建议部署 5 个 Monitor;绝大多数集群不需要 7 个或更多。 #### 3.2.2 基本命令 ```bash cephadm bootstrap --mon-ip ** ``` 该命令会: 1. 在本地主机上为新集群创建 Monitor 与 Manager 守护进程; 2. 为集群生成新的 SSH key,并加入 root 用户的 `/root/.ssh/authorized_keys`; 3. 把公钥副本写到 `/etc/ceph/ceph.pub`; 4. 把最小配置文件写到 `/etc/ceph/ceph.conf`(与 Ceph 守护进程通信所需); 5. 把 `client.admin` 管理密钥(特权!)写到 `/etc/ceph/ceph.client.admin.keyring`; 6. 给 bootstrap 主机打上 `_admin` label。默认任何带该 label 的主机都会(也)获得 `ceph.conf` 与 `ceph.client.admin.keyring` 的副本。 #### 3.2.3 bootstrap 参数逐项表 > 说明:源文以散文 + 示例形式介绍 bootstrap 选项,并提示可用 `cephadm bootstrap -h` 查看全部可用选项。下表逐项列出本册源文中**明确出现**的参数;「默认值」一列为源文明确写出的默认值,源文未写默认值的标注「文档未明确」。 | 参数 | 默认值 | 含义 | |---|---|---| | `--mon-ip **` | 无(必填) | 集群第一台主机的 IP 地址,用于创建第一个 MON。 | | `--cluster-network **` | 文档未明确(不指定则源文未说明) | 定义 cluster network(承载 OSD 之间的复制、恢复、心跳)。**必须是 CIDR 表示的子网**,例如 `10.90.90.0/24` 或 `fe80::/64`。 | | `--ssh-user **` | root(源文称 root 为 default option) | 指定 cephadm 用于连接主机的 SSH 用户;对应 SSH key 会加入 `~/.ssh/authorized_keys`;该用户必须具备 passwordless sudo 权限。 | | `--ssh-private-key ` | 文档未明确 | 使用自定义 SSH 私钥(不再让 cephadm 自动生成密钥对)。 | | `--ssh-public-key ` | 文档未明确 | 使用自定义 SSH 公钥;与 `--ssh-private-key` 配对使用。**与 `--ssh-signed-cert` 互斥**:同时传 `--ssh-public-key` 会被 cephadm 拒绝。 | | `--ssh-signed-cert ` | 文档未明确 | 使用 CA 签名的 SSH 证书替代普通公钥认证。 | | `--registry-json ` | 文档未明确 | 需要登录的私有镜像仓库:JSON 文件内容形如 `{"url":"REGISTRY_URL", "username":"REGISTRY_USERNAME", "password":"REGISTRY_PASSWORD"}`。cephadm 会尝试登录并把登录信息存入其 config database,后续加入集群的主机也可以使用该认证仓库。 | | `--registry-url` | **本册源文未出现该参数** | 源文中对应能力由 `--registry-json`(登录信息 JSON)与 `ceph cephadm registry-login`(集群运行后登录仓库)提供。`--registry-url` 是否仍存在于 `cephadm bootstrap -h` 中,**文档未明确**。 | | `--single-host-defaults` | 不设置 | 单主机部署专用,等价于设置以下三项配置(见 3.5)。 | | `--config **` | 文档未明确 | 以标准 ini 风格配置文件向新集群传入初始 Ceph 配置项。 | | `--output-dir **` | `/etc/ceph` | 指定写入 `ceph.conf` / keyring 等文件的目录(例如传 `.` 放到当前目录),避免与主机上已有的 Ceph 配置冲突。守护进程容器本身不需要 `/etc/ceph`。 | | `--log-to-file` | 不启用(默认日志走 stdout/stderr,被容器运行时捕获,多数系统上进入 journald) | 让 Ceph 写传统日志文件到 `/var/log/ceph/$fsid`。 | | `--log-dest=file` / `--log-dest=syslog`(或两者) | 文档未明确 | `cephadm` 可执行文件自身的日志落盘位置;在 bootstrap 时指定会被记录,供后续 cephadm 编排模块调用 cephadm 时复用。 | | `--image **` | 文档未明确 | 指定容器镜像(隔离环境部署时使用,例如 `cephadm --image :5000/ceph/ceph bootstrap --mon-ip `)。 | | `--skip-monitoring-stack` | 不设置(默认会部署基础监控栈) | 跳过监控栈部署。 | | `--apply-spec` | 不设置 | bootstrap 期间直接应用集群 spec 文件(与 `ceph orch apply -i` 的多文档 YAML 配合使用)。 | | `--skip-mon-network` | 文档未明确 | 排障章节出现的错误提示中提到该参数(`ERROR: Failed to infer CIDR network for mon ip ***; pass --skip-mon-network to configure it later`),可让 MON 网络稍后再配置。 | > 💡 补充:`cephadm bootstrap -h` 是获取当前版本完整参数清单与默认值的权威方式;上表只覆盖本册源文中出现过的参数。 #### 3.2.4 通过 `--config` 传入初始配置 ```bash cat < initial-ceph.conf [global] osd crush chooseleaf type = 0 EOF ./cephadm bootstrap --config initial-ceph.conf ... ``` 也可用同样机制设置 cephadm 自身日志目标: ```bash cat >/tmp/bootstrap.conf < 可把主机上的文件或目录挂到容器内 /mnt 下 # 方式二:直接执行命令 cephadm shell -- ceph -s # 方式三:安装 ceph-common 包(含 ceph / rbd / mount.ceph 等) cephadm add-repo --release cephadm install ceph-common ``` 验证: ```bash ceph -v ceph status ``` ### 3.4 后续步骤 ```bash # 给更多主机加 _admin label,便于多机使用 Ceph CLI ceph orch host label add ** _admin # 添加主机(详见第四章) ceph orch host add --labels _admin # 添加 MON(详见第七章) # 添加存储 ceph orch apply osd --all-available-devices ``` ### 3.5 不同部署场景 #### 3.5.1 单主机(Single host) ```bash cephadm bootstrap --mon-ip --single-host-defaults ``` `--single-host-defaults` 会设置以下配置: ```ini global/osd_crush_chooseleaf_type = 0 global/osd_pool_default_size = 2 mgr/mgr_standby_modules = False ``` > 源文提示:此类集群通常**不适合生产环境**。 #### 3.5.2 隔离环境 / 离线部署(airgapped) 步骤: 1. 运行本地容器仓库: ```bash podman run --privileged -d --name registry -p 5000:5000 -v /var/lib/registry:/var/lib/registry --restart=always registry:2 ``` 2. 若使用 insecure registry,需要在 Podman/Docker 中配置仓库的 hostname 与 port(**每台**访问该仓库的主机都要做)。 3. 把镜像推入本地仓库,需要准备的镜像包括:Ceph container image、Prometheus、Node exporter、Grafana、Alertmanager。 4. 创建临时配置文件保存监控镜像名: ```ini [mgr] mgr/cephadm/container_image_prometheus = :5000/prometheus mgr/cephadm/container_image_node_exporter = :5000/node_exporter mgr/cephadm/container_image_grafana = :5000/grafana mgr/cephadm/container_image_alertmanager = :5000/alertmanger ``` 5. 用 `--image` 执行 bootstrap: ```bash cephadm --image :5000/ceph/ceph bootstrap --mon-ip ``` #### 3.5.3 使用自定义 SSH 密钥 ```bash cephadm bootstrap --mon-ip --ssh-private-key --ssh-public-key ``` > 前提:公钥必须已经作为目标主机 ssh 用户(通常 root)的 authorized key 分发到位。 #### 3.5.4 使用 CA 签名的 SSH 密钥 先在待加入集群的主机上把 CA 公钥设为可信 CA key: ```bash # 生成 CA key ssh-keygen -t rsa -f ca-key -N "" # 在本机安装并标记为可信 cp ca-key.pub /etc/ssh vi /etc/ssh/sshd_config # 增加:TrustedUserCAKeys /etc/ssh/ca-key.pub systemctl restart sshd # 分发到其他主机并做同样配置 scp /etc/ssh/ca-key.pub host2:/etc/ssh/ ``` 再生成密钥对并用 CA 签名(`-V +52w` 指定有效期): ```bash ssh-keygen -t rsa -f cephadm-ssh-key -N "" ssh-keygen -s ca-key -I user_root -n root -V +52w cephadm-ssh-key ls # ca-key ca-key.pub cephadm-ssh-key cephadm-ssh-key-cert.pub cephadm-ssh-key.pub # 验证:私钥与签名证书需在同一目录 ssh -i cephadm-ssh-key host2 ``` 最后传给 bootstrap: ```bash cephadm bootstrap --mon-ip --ssh-private-key cephadm-ssh-key --ssh-signed-cert cephadm-ssh-key-cert.pub ``` 要点: - 该方式**不需要**把对应公钥分发到其他节点; - cephadm 在收到 `--ssh-signed-cert` 时会**拒绝**同时传入的 `--ssh-public-key`; - 密钥轮换只需用同一 CA 再签一把新钥,把新的私钥与证书交给 cephadm 即可,无需再向节点分发密钥。 ### 3.6 OSD 内存自动调优(bootstrap 默认行为) > ⚠️ 官方 warning:默认情况下,cephadm 在 bootstrap 时**启用** `osd_memory_target_autotune`,且 `mgr/cephadm/autotune_memory_target_ratio` 设为 **`.7`**(即总内存的 70%)。这对于「Ceph 与计算共用节点」的融合(converged)架构通常不合适。 融合架构下建议先调低比例: ```bash # converged only: ceph config set mgr mgr/cephadm/autotune_memory_target_ratio 0.2 ``` 然后启用内存自动调优: ```bash ceph config set osd osd_memory_target_autotune true ``` > 引自:[Using cephadm to Deploy a New Ceph Cluster](https://docs.ceph.com/en/tentacle/cephadm/install/) --- ## 四、主机管理(Host Management) ### 4.1 查看主机 ```bash ceph orch host ls [--format yaml] [--host-pattern ] [--label