盐配方真的是什么*

时间:2018-11-29 09:44:21

标签: salt-stack

我正在尝试查看盐配方文档,似乎对盐配方的真正含义有根本的误解。

可以理解,这个问题似乎是these questions的重复,但是由于我未能掌握基本概念,因此我也在努力利用这些问题的答案问题。

认为,盐公式基本上只是一个实现额外功能的程序包,就像

#include <string.h>

在C中,或

import numpy as np

在Python中。因此,我想,我可以将salt-formula-linux下载到/srv/formulas/salt-formula-linux/,将其添加到file_roots,重新启动主服务器(全部按照docs进行操作),然后编写一个文件像swapoff.sls包含

disable_swap:
  linux:
    storage:
      swap:
        file:
          enabled: False

(上面的内容与存储库根目录中的示例有些相似),希望该公式能够处理从/etc/fstab中删除掉交换项并为我运行swapoff -a的情况。不用说,这没有用,显然是因为我不了解盐配方的含义。

那么,什么是盐配方,该如何使用?我也可以将其用作功能库吗?

1 个答案:

答案 0 :(得分:0)

这个答案在所有技术上可能都不完全正确,但这正是解决我问题的方法。

盐公式不是功能库。相反,它是状态文件的集合。虽然状态文件通常很简单,例如我的一些用户定义的

--> top.sls <--
base:
  '*':
    - docker

--> docker.sls <--
install_docker_1703:
  pkgrepo.managed:
    # stuff
  pkg.installed:
    - name: docker-ce

创建状态文件

--> swapoff.sls <--
disable_swap:
  linux.storage.swap: # and so on

也许不是路要走。好吧,至少对于缺乏知识的初学者来说可能不是。

相反,将一项添加到top.sls

    - linux.storage.swap

但是,这还不够。大多数公式(或其中的状态文件,如果需要的话)都是高度可参数化的,即它们充满了带有变量名的占位符,例如{{ swap.device }}。如果没有什么可以填补这个空白,那么状态填充将无能为力。这些空白由支柱填补。

剩下的就是在swap.sls中创建一个像/srv/pillar/这样的文件,其中包含类似(根据该公式的示例)

linux:
  storage:
    enabled: true
    swap:
      file:
        enabled: true
        engine: file
        device: /swapfile
        size: 1024

,还有/srv/pillar/top.sls

base:
  '*':
    - swap

也许/srv/pillar也应包含在pillar_roots的{​​{1}}中。

因此,现在/etc/salt/master运行/srv/salt/top.sls,它在/srv/formulas/salt-formula-linux/linux/storage/swap.sls的指导下从/srv/pillar/top.sls提取一些参数并启用交换文件。