适用于 SUSE Enterprise Storage 5

7 自定义默认配置

可以更改在阶段 2 生成的默认集群配置(请参见DeepSea 阶段说明)。例如,您可能需要更改网络设置,或默认安装在 Salt Master 上的软件。要执行前一项操作,可以修改在阶段 2 之后更新的 pillar;对于后一项操作,通常可以通过创建自定义 sls 文件并将其添加到 pillar 来完成。以下各节介绍了详细信息。

7.1 使用自定义的配置文件

本节列出了需要添加/更改您自己的 sls 文件的多个任务。当您需要更改默认部署流程时,通常会使用这样的过程。

提示
提示:为自定义 .sls 文件添加前缀

您的自定义 .sls 文件与 DeepSea 的 .sls 文件属于同一个子目录。为了防止从 DeepSea 包中新添加的文件重写您的 .sls 文件,请在您的文件名前面加上 custom- 字符串前缀。

7.1.1 禁用部署步骤

如果您遇到一个不属于 DeepSea 部署过程的特定任务,因而需要跳过此任务,请按照下面的示例创建一个“no-operation”文件:

过程 7.1︰ 禁用时间同步
  1. 创建并保存包含以下内容的 /srv/salt/ceph/time/disabled.sls

    disable time setting:
    test.nop
  2. 编辑 /srv/pillar/ceph/stack/global.yml,添加下行,并保存该文件:

    time_init: disabled
  3. 通过刷新 pillar 并运行以下步骤进行校验:

    root@master # salt target saltutil.pillar_refresh
    root@master # salt 'admin.ceph' state.apply ceph.time
    admin.ceph:
      Name: disable time setting - Function: test.nop - Result: Clean
    
    Summary for admin.ceph
    ------------
    Succeeded: 1
    Failed:    0
    ------------
    Total states run:     1
    注意
    注意:唯一 ID

    任务 ID“disable time setting”可以是在 sls 文件中唯一的任何讯息。可通过指定唯一的说明来防止 ID 冲突。

7.1.2 替换部署步骤

如果需要将特定步骤的默认行为替换为自定义行为,请创建包含替换内容的自定义 sls 文件。

默认情况下,/srv/salt/ceph/pool/default.sls 会创建名为“demo”的 rbd 映像。在本示例中,我们不想创建此映像,而是需要以下两个映像:“archive1”和“archive2”。

过程 7.2︰ demo rbd 映像替换为两个自定义 rbd 映像
  1. 创建并保存包含以下内容的 /srv/salt/ceph/pool/custom.sls

    wait:
      module.run:
        - name: wait.out
        - kwargs:
            'status': "HEALTH_ERR"1
        - fire_event: True
    
    archive1:
      cmd.run:
        - name: "rbd -p rbd create archive1 --size=1024"2
        - unless: "rbd -p rbd ls | grep -q archive1$"
        - fire_event: True
    
    archive2:
      cmd.run:
        - name: "rbd -p rbd create archive2 --size=768"
        - unless: "rbd -p rbd ls | grep -q archive2$"
        - fire_event: True

    1

    wait 模块将会暂停,直到 Ceph 集群状态不是 HEALTH_ERR 为止。在全新安装中,当有足够数量的 OSD 可用且存储池创建完成之前,Ceph 集群可能会一直保持此状态。

    2

    rbd 命令不是幂等的。如果在提供映像之后重新运行同一个创建命令,则 Salt 状态将失败。unless 语句可防止这种情况。

  2. 要调用新建的自定义文件而不是默认文件,需要编辑 /srv/pillar/ceph/stack/ceph/cluster.yml,添加下行,然后保存该文件:

    pool_init: custom
  3. 通过刷新 pillar 并运行以下步骤进行校验:

    root@master # salt target saltutil.pillar_refresh
    root@master # salt 'admin.ceph' state.apply ceph.pool
注意
注意:授权

创建存储池或映像需要有足够的授权。admin.ceph Minion 具有管理密钥环。

提示
提示:替代方法

另一种做法是更改 /srv/pillar/ceph/stack/ceph/roles/master.yml 中的变量。使用此文件可缓解其他 Minion 的 pillar 数据的混乱情况。

7.1.3 修改部署步骤

有时,您可能需要通过特定的步骤来执行某些附加任务。不建议修改相关的状态文件,因为这可能导致将来的升级变得复杂。应创建一个单独的文件来执行第 7.1.2 节 “替换部署步骤”中所述的相同附加任务。

为新的 sls 文件提供一个描述性名称。例如,如果除了 demo 映像以外,您还需要创建两个 rbd 映像,则可将文件命名为 archive.sls

过程 7.3︰ 创建两个附加 rbd 映像
  1. 创建并保存包含以下内容的 /srv/salt/ceph/pool/custom.sls

    include:
     - .archive
     - .default
    提示
    提示:Include 优先顺序

    在本示例中,Salt 将会依次创建 archive 映像和 demo 映像。本示例中的顺序并不重要。要更改顺序,请颠倒 include: 指令后面的行。

    可将 include 行直接添加到 archive.sls,这样也会创建所有映像。但是,不管将 include 行放在哪个位置,Salt 都会先处理所包含文件中的步骤。尽管可以使用 requiresorder 语句覆盖此行为,但使用包含其他语句的单独文件可保证顺序正确,并减少出现混淆的可能性。

  2. 编辑 /srv/pillar/ceph/stack/ceph/cluster.yml,添加下行,并保存该文件:

    pool_init: custom
  3. 通过刷新 pillar 并运行以下步骤进行校验:

    root@master # salt target saltutil.pillar_refresh
    root@master # salt 'admin.ceph' state.apply ceph.pool

7.1.4 修改部署阶段

如果需要添加完全独立的部署步骤,请创建 3 个新文件:用于执行命令的 sls 文件、编制文件,以及使新步骤与原始部署步骤保持一致的自定义文件。

例如,如果在执行准备阶段的过程中需要在所有 Minion 上运行 logrotate

首先创建一个 sls 文件并包含 logrotate 命令。

过程 7.4︰ 在所有 Salt Minion 上运行 logrotate
  1. 创建一个目录,例如 /srv/salt/ceph/logrotate

  2. 创建并保存包含以下内容的 /srv/salt/ceph/logrotate/init.sls

    rotate logs:
      cmd.run:
        - name: "/usr/sbin/logrotate /etc/logrotate.conf"
  3. 校验该命令是否在 Minion 上正常工作:

    root@master # salt 'admin.ceph' state.apply ceph.logrotate

由于编制文件需要在其他所有准备步骤之前运行,因此请将其添加到准备阶段 0:

  1. 创建并保存包含以下内容的 /srv/salt/ceph/stage/prep/logrotate.sls

    logrotate:
      salt.state:
        - tgt: '*'
        - sls: ceph.logrotate
  2. 校验编制文件是否正常工作:

    root@master # salt-run state.orch ceph.stage.prep.logrotate

最后一个文件是自定义文件,其中包含附加步骤和原始步骤:

  1. 创建并保存包含以下内容的 /srv/salt/ceph/stage/prep/custom.sls

    include:
      - .logrotate
      - .master
      - .minion
  2. 覆盖默认行为。编辑 /srv/pillar/ceph/stack/global.yml,添加下行,并保存该文件:

    stage_prep: custom
  3. 校验阶段 0 是否正常工作:

    root@master # salt-run state.orch ceph.stage.0
注意
注意:为何使用 global.yml

之所以选择 global.yml 文件而不选择 cluster.yml,是因为在准备阶段,所有 Minion 都不属于 Ceph 集群,并且无权访问 cluster.yml 中的任何设置。

7.1.5 在阶段 0 期间禁用更新和重引导

阶段 0 期间(有关 DeepSea 阶段的详细信息,请参见DeepSea 阶段说明)。Salt Master 和 Salt Minion 可能会因新更新的包(例如 kernel)要求重引导系统而进行重引导。

为防止在阶段 0 期间更新或重引导集群节点,请编辑 /srv/pillar/ceph/stack/ceph/cluster.yml 并添加 stage_prep_masterstage_prep_minion 选项,具体取决于您是否需要修改 Salt Master、所有 Salt Minion 或所有节点的行为。

这两个选项接受以下值:

default-no-update-no-reboot

阻止节点更新其包和重引导。

default-no-update-reboot

阻止节点更新其包,但允许重引导。

default-update-no-reboot

阻止节点重引导,但允许更新其包。

default

允许更新节点包和重引导。

7.2 修改已发现的配置

完成阶段 2 之后,您可能需要更改已发现的配置。要查看当前设置,请运行:

root@master # salt target pillar.items

单个 Minion 的默认配置的输出通常类似下方所示:

----------
    available_roles:
        - admin
        - mon
        - storage
        - mds
        - igw
        - rgw
        - client-cephfs
        - client-radosgw
        - client-iscsi
        - mds-nfs
        - rgw-nfs
        - master
    cluster:
        ceph
    cluster_network:
        172.16.22.0/24
    fsid:
        e08ec63c-8268-3f04-bcdb-614921e94342
    master_minion:
        admin.ceph
    mon_host:
        - 172.16.21.13
        - 172.16.21.11
        - 172.16.21.12
    mon_initial_members:
        - mon3
        - mon1
        - mon2
    public_address:
        172.16.21.11
    public_network:
        172.16.21.0/24
    roles:
        - admin
        - mon
        - mds
    time_server:
        admin.ceph
    time_service:
        ntp

将在多个配置文件之间分布上述设置。包含这些文件的目录结构在 /srv/pillar/ceph/stack/stack.cfg 目录中定义。以下文件通常用于描述您的集群:

  • /srv/pillar/ceph/stack/global.yml - 该文件会影响 Salt 集群中的所有 Minion。

  • /srv/pillar/ceph/stack/ceph/cluster.yml - 该文件会影响名为 ceph 的 Ceph 集群中的所有 Minion。

  • /srv/pillar/ceph/stack/ceph/roles/role.yml - 会影响 ceph 集群中指定了特定角色的所有 Minion。

  • /srv/pillar/ceph/stack/cephminions/minion ID/yml - 会影响单个 Minion。

注意
注意:重写包含默认值的目录

/srv/pillar/ceph/stack/default 中存在存储了默认配置设置的平行目录树。请不要更改此处的值,否则会将其重写。

更改所收集的配置的典型过程如下:

  1. 找到需要更改的配置项目的所在位置。例如,如果需要更改集群网络等集群相关设置,请编辑文件 /srv/pillar/ceph/stack/ceph/cluster.yml

  2. 保存文件。

  3. 运行以下命令来校验所做的更改:

    root@master # salt target saltutil.pillar_refresh

    ,再输入

    root@master # salt target pillar.items
打印此页