千家信息网

二、grains、pillar、安装配置httpd、配置管理文件、配置管理目录

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,一、grainsgrains是在minion启动时收集到的一些信息,比如操作系统类型、网卡ip、内核版本、cpu架构等。# salt 'yw02' grains.ls 列出所有的grains项目名
千家信息网最后更新 2026年11月01日二、grains、pillar、安装配置httpd、配置管理文件、配置管理目录

一、grains

grains是在minion启动时收集到的一些信息,比如操作系统类型、网卡ip、内核版本、cpu架构等。

# salt 'yw02' grains.ls   列出所有的grains项目名字# salt 'aming-02' grains.items   列出所有grains项目以及值

grains的信息并不是动态的,并不会实时变更,它是在minion启动时收集到的。

我们可以根据grains收集到的一些信息,做配置管理工作。

grains支持自定义信息。


自定义grains

minion上:

# vim /etc/salt/grains  //添加,前面是item,后面是value。这都是自定义的。 role: nginx  env: test

重启minion服务

# systemctl restart salt-minion

master上:

获取grains:

 # salt '*' grains.item role env   //可以随便写一个item,如果minion端没有,就什么都不显示。

可以借助grains的item去匹配对应的主机来执行任务或命令

# salt -G role:nginx cmd.run 'hostname'


如果想把机器分组,就可以自定义一个grains。


二、pillar

pillar和grains不一样,是在master上定义的,并且是针对minion定义的一些信息。像一些比较重要的数据(密码)可以存在pillar里,还可以定义变量等。

配置自定义pillar

# vim  /etc/salt/master   找到如下配置://去掉前面的#号pillar_roots:     //可以认为是接下来要配置的项目。  base:   #此行前面有两个空格,项目里它的value叫base。    - /srv/pillar   #此行前面有4个空格,value里的值叫/srv/pillar。 重启master    //只有在修改了/etc/salt/master的情况下才需要重启服务,后面的只要刷新pillar配置即可。# systemctl  restart salt-master        # mkdir /srv/pillar# vim /srv/pillar/test.sls  //子配置文件,内容如下,saltstack的配置文件通常情况下以sls作为后缀名,方便区分。conf: /etc/123.conf # vi /srv/pillar/top.sls  //内容如下,这个top.sls文件作为一个总入口。base:   #base表示这是一个根  'yw02': #此行前面有两个空格,针对的机器的主机名。    - test #此行前面有4个空格,意思是要加载哪一个配置文件。-相当于是作为分隔符性质的。    - test1   #多个就写多行  'fuxi01':    #也可以写多个机器    - test2    这个文件的格式一定要注意,机器前空两gear,对应的配置文件空四格。


当更改完pillar配置文件后,通过刷新pillar配置来获取新的pillar状态:

# salt '*' saltutil.refresh_pillar验证:# salt  '*' pillar.item conf

pillar同样可以用来匹配对应的主机。

比如 salt -I 'conf:/etc/123.conf' test.ping;salt -I 'conf:/etc/123.conf' cmd.run w


三、安装配置httpd

master上

# vi /etc/salt/master //搜索找到file_roots,打开如下内容的注释:file_roots:  base: #前面有两个空格    - /srv/salt #前面有4个空格# mkdir /srv/salt ; cd /srv/salt# vi /srv/salt/top.sls  //定义总入口,加入如下内容base:  '*':  #前面有两个空格,    - httpd #前面有4个空格    # systemctl restart salt-master

'*'的意思是,在所有的minion客户端上执行httpd模块,也可以写单独的机器。


master上

# vi /srv/salt/httpd.sls  //加入如下内容,这个就是httpd模块的内容httpd-service:    #定义的服务名字  pkg.installed:   #salt自带的模块,类似于cmd.run。    - names:    #后面就是要安装的包的名字。这里如果只有一个服务,那么就可以写成 -name: httpd 不用再换一行了。      - httpd      - httpd-devel  service.running:  #这个模块的作用是为了启动服务的。    - name: httpd   #启动httpd这个服务    - enable: True  #True表示要启动,false不启动。

说明: httpd-service是id的名字,自定义的。pkg.installed 为包安装函数,下面是要安装的包的名字。service.running也是一个函数,来保证指定的服务启动,enable表示开机启动。

执行: salt 'yw02' state.highstate //执行过程会比较慢,因为客户端上在yum install httpd httpd-devel,只要执行了这个state.highstate的命令,就会到/srv/salt目录下去找top.sls,这个配置文件里提到的相关的模块,都会去执行。

# ls /lib/systemd/system/httpd.service //安装完后,就有这个服务的包了。


四、配置管理文件

master上

# vi /srv/salt/test.sls   //加入如下内容file_test:  file.managed:   #引用到的模块    - name: /tmp/aminglinux.com   #minion端要给到的文件路径    - source: salt://test/123/1.txt    - user: root    #文件给过去以后,它的属主属组、权限。    - group: root    - mode: 600

说明:第一行的file_test为自定的名字,表示该配置段的名字,可以在别的配置段中引用它,source指定文件从哪里拷贝,来源文件,这里的salt://test/123/1.txt相当于是/srv/salt/test/123/1.txt,salt://这就表示在/etc/salt/master文件中的file_roots定义的根路径/srv/salt。

作用:比如,针对一组机器,改一个服务的配置文件,先把改好后的配置文件的模板搞过来,然后再告诉minion端,把这个文件要分发到机器上的哪一个目录下去,分发完后,可能还要做一些其他的操作,比如重启服务。

# mkdir /srv/salt/test/123# cp /etc/passwd /srv/salt/test/123/1.txt# vi /srv/salt/top.sls //因为salt默认找的是top.sls,它是总入口,top会告诉我们接下来要去找哪一个子配置文件,所以这里要改成test:base:  '*':    - test    # salt 'yw02' state.highstateyw02:----------          ID: file_test    Function: file.managed        Name: /tmp/aminglinux.com      Result: True     Comment: File /tmp/aminglinux.com updated     Started: 19:37:17.272462    Duration: 591.057 ms     Changes:                 ----------              diff:                  New fileSummary for yw02------------Succeeded: 1 (changed=1)Failed:    0------------Total states run:     1Total run time: 591.057 ms

检查yw02上是否有/tmp/aminglinux.com,检查内容以及权限。


五、配置管理目录

master上

# vi /srv/salt/test_dir.sls  //加入如下内容file_dir:  file.recurse:   #模块    - name: /tmp/testdir   #对方机器的目录    - source: salt://test/123   #模板目录    - user: root    #给过去后的目录、文件属主及权限    - file_mode: 640    - dir_mode: 750    - mkdir: True    - clean: True   ##加上它之后,删除源文件或目录,目标也会跟着删除,否则不会删除

修改top.sls,

# vi /srv/salt/top.sls //添加test_dirbase:  '*':    - test_dir # salt 'yw02' state.highstate

检查yw02上是否有/tmp/testdir,检查里面的目录、文件以及权限

说明:saltstack的一个特性,如果source对应的目录里有空目录的话,客户端上不会同步它,它会认为这是无用的。

文件 配置 目录 服务 内容 机器 空格 名字 模块 信息 两个 权限 项目 检查 管理 主机 入口 客户 客户端 是在 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南云网互联网络科技有限公司 北京路客互联网科技有限公司 互联网科技工作委员会副主任毛军 广州百单互联网科技有限公司 互联网下的科技发展 上海挚品互联网科技 智网互联网科技 互联网科技ppt模板 科技互联网创业计划书 左右互联网络科技 哈尔滨新华互联网科技 互联网校园科技培训 洛阳共同富裕互联网科技有限公司 上海同邻互联网科技有限公司规模 全球科技与互联网公司市值变化 万物互联网智能科技 张家口科技产业互联网平台 银川新华互联网科技学校原画 科技互联网经济论坛 互联网企业和网络科技有限公司 互联网科技财经 互联网科技会 互联网的科技创新 亿策互联网科技 北京禾田雨橡互联网科技 智腾互联网科技有限公司 广西互联网科技孵化中心 广西科技产业互联网是什么 互联网公司属于科技吗 东风日产互联网科技公司叫什么
0