CentOS 7下SaltStack安装配置详解(4)

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

重启服务

[root@saltstack ~]# systemctl restart salt-master

执行命令

[root@saltstack ~]# salt 'client1' state.highstate // 执行时间比较长,因为要安装httpd


 


如上图所示,说明 Apache 远程安装已成功。

文件目录管理

1、文件管理
服务端配置
编辑/srv/salt/目录下的top.sls 文件

[root@saltstack ~]# vi /srv/salt/top.sls // 修改为如下 base: 'client1': - filetest

新建 filetest.sls 文件

[root@saltstack ~]# vi /srv/salt/filetest.sls file-test: file.managed: - name: /tmp/filetest.txt - source: salt://test/123/1.txt - user: root - group: root - mode: 644

注意:第一行的 file-test 为自定的名字,表示该配置段的名字,可以在别的配置段中引用它;source指定文件从哪里拷贝,这里的 test 目录相当于是 /srv/salt/test 目录;name指定远程客户端要生成的文件。

新建所要测试的源文件

[root@saltstack ~]# mkdir -p /srv/salt/test/123 [root@saltstack ~]# vim /srv/salt/test/123/1.txt saltstack .... this is a test ....

执行命令:

[root@saltstack ~]# salt 'client1' state.highstate


 

客户端验证

[root@client1 ~]# ll /tmp/filetest.txt -rw-r--r-- 1 root root 34 4月 26 10:58 /tmp/filetest.txt [root@client1 ~]# cat /tmp/filetest.txt saltstack .... this is a test ...

2、目录管理
服务端配置
接着编辑/srv/salt/目录下的top.sls 文件

[root@saltstack ~]# vi /srv/salt/top.sls // 修改为如下 base: 'client1': - filedir

新建 filedir.sls 文件

[root@saltstack ~]# vi /srv/salt/filedir.sls file-dir: file.recurse: - name: /tmp/testdir - source: salt://test1/234 - user: root - file_mode: 644 - dir_mode: 755 - mkdir: True - clean: True

注意:clean: True 源删除文件或目录,目标也会跟着删除,否则不会删除。可以默认设置为 False。

新建所要测试的源目录

[root@saltstack ~]# mkdir -p /srv/salt/test1/234/ [root@saltstack ~]# vi /srv/salt/test1/234/2.txt filedir..........test and add delete select alter

执行命令:

[root@saltstack ~]# salt 'client1' state.highstate


 

客户端验证

[root@client1 ~]# ll /tmp/testdir/ 总用量 4 -rw-r--r-- 1 root root 50 4月 26 11:11 2.txt

测试增删功能

[root@saltstack ~]# mkdir /srv/salt/test1/234/mydir [root@saltstack ~]# touch /srv/salt/test1/234/mydir/111.txt [root@saltstack ~]# touch /srv/salt/test1/234/testdir.add [root@saltstack ~]# rm -rf /srv/salt/test1/234/2.txt

执行命令:

[root@saltstack ~]# salt 'client1' state.highstate


 

客户端验证

[root@client1 ~]# tree /tmp/testdir/ /tmp/testdir/ |-- mydir | `-- 111.txt `-- testdir.add 1 directory, 2 files

注意:由上图可知,成功在客户端 /tmp/testdir/ 目录下创建了 mydir 目录以及 testdir.add 文件,并删除 2.txt 文件。这里值得注意的是要成功创建 mydir 目录,前提是 mydir 目录下要有文件,如这里的111.txt 文件,如若没有,客户端是不会创建 mydir 目录的。

远程执行

前面提到远程执行命令 test.ping,cmd.run,点前面的是模块,点后面的是函数;这样总归是不太规范化,下面详细介绍怎么远程执行命令和脚本。
1、远程执行命令
服务端配置
接着编辑/srv/salt/目录下的top.sls 文件

[root@saltstack ~]# vi /srv/salt/top.sls // 修改为如下 base: 'client1': - cmdtest

新建 cmdtest.sls 文件

[root@saltstack ~]# vi /srv/salt/cmdtest.sls cmd-test: cmd.run: - onlyif: test -f /tmp/filetest.txt - names: - touch /tmp/cmdtest.txt - mkdir /tmp/cmdtest - user: root

注意:条件 onlyif 表示若 /tmp/filetest.txt 文件存在,则执行后面的命令;可以使用 unless,两者正好相反。

执行命令:

[root@saltstack ~]# salt 'client1' state.highstate


 

客户端验证

[root@client1 ~]# ll /tmp/ 总用量 156 drwxr-xr-x 2 root root 6 4月 26 11:45 cmdtest -rw-r--r-- 1 root root 0 4月 26 11:45 cmdtest.txt -rw-r--r-- 1 root root 34 4月 26 10:58 filetest.txt drwxr-xr-x 3 root root 38 4月 26 11:14 testdir

2、远程执行脚本
服务端配置
接着编辑/srv/salt/目录下的top.sls 文件

[root@saltstack ~]# vi /srv/salt/top.sls // 修改为如下 base: 'client1': - shelltest

新建 shelltest.sls 文件

[root@saltstack ~]# vi /srv/salt/shelltest.sls shell-test: cmd.script: - source: salt://test/1.sh - user: root

新建 1.sh 脚本文件

[root@saltstack ~]# vi /srv/salt/test/1.sh #!/bin/sh touch /tmp/shelltest.txt if [ -d /tmp/shelltest ] then rm -rf /tmp/shelltest else mkdir /tmp/shelltest fi

执行命令:

[root@saltstack ~]# salt 'client1' state.highstate


 

客户端验证

[root@client1 ~]# ll /tmp/ drwxr-xr-x 2 root root 6 4月 26 12:08 shelltest -rw-r--r-- 1 root root 0 4月 26 12:08 shelltest.txt

通过上面的例子,我们实现了远程执行脚本;如果我们想一键远程安装 LAMP 或者 LNMP,那么只需把本例中的 1.sh 脚本替换成 一键安装的脚本就行。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d65a2333685a5810abda9cb748a6e6b2.html