温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-13 00:36:03 来源:网络 阅读:280 作者:seventeen_ 栏目:系统运维

一、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.highstate yw02: ----------           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 file Summary for yw02 ------------ Succeeded: 1 (changed=1) Failed:    0 ------------ Total states run:     1 Total 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_dir base:   '*':     - test_dir  # salt 'yw02' state.highstate

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

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI