可以更改在阶段 2 生成的默认集群配置(请参见DeepSea 阶段说明)。例如,您可能需要更改网络设置,或默认安装在 Salt Master 上的软件。要执行前一项操作,可以修改在阶段 2 之后更新的 pillar;对于后一项操作,通常可以通过创建自定义 sls
文件并将其添加到 pillar 来完成。以下各节介绍了详细信息。
本节列出了需要添加/更改您自己的 sls
文件的多个任务。当您需要更改默认部署流程时,通常会使用这样的过程。
您的自定义 .sls 文件与 DeepSea 的 .sls 文件属于同一个子目录。为了防止从 DeepSea 包中新添加的文件重写您的 .sls 文件,请在您的文件名前面加上 custom-
字符串前缀。
如果您遇到一个不属于 DeepSea 部署过程的特定任务,因而需要跳过此任务,请按照下面的示例创建一个“no-operation”文件:
创建并保存包含以下内容的 /srv/salt/ceph/time/disabled.sls
:
disable time setting: test.nop
编辑 /srv/pillar/ceph/stack/global.yml
,添加下行,并保存该文件:
time_init: disabled
通过刷新 pillar 并运行以下步骤进行校验:
root@master #
salt target saltutil.pillar_refreshroot@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“disable time setting”可以是在 sls
文件中唯一的任何讯息。可通过指定唯一的说明来防止 ID 冲突。
如果需要将特定步骤的默认行为替换为自定义行为,请创建包含替换内容的自定义 sls
文件。
默认情况下,/srv/salt/ceph/pool/default.sls
会创建名为“demo”的 rbd 映像。在本示例中,我们不想创建此映像,而是需要以下两个映像:“archive1”和“archive2”。
创建并保存包含以下内容的 /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
要调用新建的自定义文件而不是默认文件,需要编辑 /srv/pillar/ceph/stack/ceph/cluster.yml
,添加下行,然后保存该文件:
pool_init: custom
通过刷新 pillar 并运行以下步骤进行校验:
root@master #
salt target saltutil.pillar_refreshroot@master #
salt 'admin.ceph' state.apply ceph.pool
创建存储池或映像需要有足够的授权。admin.ceph
Minion 具有管理密钥环。
另一种做法是更改 /srv/pillar/ceph/stack/ceph/roles/master.yml
中的变量。使用此文件可缓解其他 Minion 的 pillar 数据的混乱情况。
有时,您可能需要通过特定的步骤来执行某些附加任务。不建议修改相关的状态文件,因为这可能导致将来的升级变得复杂。应创建一个单独的文件来执行第 7.1.2 节 “替换部署步骤”中所述的相同附加任务。
为新的 sls
文件提供一个描述性名称。例如,如果除了 demo 映像以外,您还需要创建两个 rbd 映像,则可将文件命名为 archive.sls
。
创建并保存包含以下内容的 /srv/salt/ceph/pool/custom.sls
:
include: - .archive - .default
在本示例中,Salt 将会依次创建 archive 映像和 demo 映像。本示例中的顺序并不重要。要更改顺序,请颠倒 include:
指令后面的行。
可将 include 行直接添加到 archive.sls
,这样也会创建所有映像。但是,不管将 include 行放在哪个位置,Salt 都会先处理所包含文件中的步骤。尽管可以使用 requires 和 order 语句覆盖此行为,但使用包含其他语句的单独文件可保证顺序正确,并减少出现混淆的可能性。
编辑 /srv/pillar/ceph/stack/ceph/cluster.yml
,添加下行,并保存该文件:
pool_init: custom
通过刷新 pillar 并运行以下步骤进行校验:
root@master #
salt target saltutil.pillar_refreshroot@master #
salt 'admin.ceph' state.apply ceph.pool
如果需要添加完全独立的部署步骤,请创建 3 个新文件:用于执行命令的 sls
文件、编制文件,以及使新步骤与原始部署步骤保持一致的自定义文件。
例如,如果在执行准备阶段的过程中需要在所有 Minion 上运行 logrotate
:
首先创建一个 sls
文件并包含 logrotate
命令。
logrotate
#
创建一个目录,例如 /srv/salt/ceph/logrotate
。
创建并保存包含以下内容的 /srv/salt/ceph/logrotate/init.sls
:
rotate logs: cmd.run: - name: "/usr/sbin/logrotate /etc/logrotate.conf"
校验该命令是否在 Minion 上正常工作:
root@master #
salt 'admin.ceph' state.apply ceph.logrotate
由于编制文件需要在其他所有准备步骤之前运行,因此请将其添加到准备阶段 0:
创建并保存包含以下内容的 /srv/salt/ceph/stage/prep/logrotate.sls
:
logrotate: salt.state: - tgt: '*' - sls: ceph.logrotate
校验编制文件是否正常工作:
root@master #
salt-run state.orch ceph.stage.prep.logrotate
最后一个文件是自定义文件,其中包含附加步骤和原始步骤:
创建并保存包含以下内容的 /srv/salt/ceph/stage/prep/custom.sls
:
include: - .logrotate - .master - .minion
覆盖默认行为。编辑 /srv/pillar/ceph/stack/global.yml
,添加下行,并保存该文件:
stage_prep: custom
校验阶段 0 是否正常工作:
root@master #
salt-run state.orch ceph.stage.0
global.yml
?
之所以选择 global.yml
文件而不选择 cluster.yml
,是因为在准备阶段,所有 Minion 都不属于 Ceph 集群,并且无权访问 cluster.yml
中的任何设置。
阶段 0 期间(有关 DeepSea 阶段的详细信息,请参见DeepSea 阶段说明)。Salt Master 和 Salt Minion 可能会因新更新的包(例如 kernel)要求重引导系统而进行重引导。
为防止在阶段 0 期间更新或重引导集群节点,请编辑 /srv/pillar/ceph/stack/ceph/cluster.yml
并添加 stage_prep_master
或 stage_prep_minion
选项,具体取决于您是否需要修改 Salt Master、所有 Salt Minion 或所有节点的行为。
这两个选项接受以下值:
阻止节点更新其包和重引导。
阻止节点更新其包,但允许重引导。
阻止节点重引导,但允许更新其包。
允许更新节点包和重引导。
完成阶段 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
中存在存储了默认配置设置的平行目录树。请不要更改此处的值,否则会将其重写。
更改所收集的配置的典型过程如下:
找到需要更改的配置项目的所在位置。例如,如果需要更改集群网络等集群相关设置,请编辑文件 /srv/pillar/ceph/stack/ceph/cluster.yml
。
保存文件。
运行以下命令来校验所做的更改:
root@master #
salt target saltutil.pillar_refresh
,再输入
root@master #
salt target pillar.items