1.准备工作
我们来看一下一键部署jdk的脚本。
[root@bgs-5p173-wangwenting jdk]# more init.sls jdk-file: file.managed: - source: salt://jdk/jdk1.8.0_74.tar.gz //这里的salt:// 表示的salt的工作目录,在/etc/salt/master中file_roots有配置的。后面的目录文件是工作区下的安装包 - name: /opt/jdk1.8.0_74.tar.gz //这个参数的意思是拷贝到minion机器上的哪个位置上。我这里是放到/opt下面的。 - user: root //用是什么用户和用户组的权限去执行这个命令 - group: root jdk-install: cmd.run: - name: 'cd /opt && tar zxf jdk1.8.0_74.tar.gz && ln -s /opt/jdk1.8.0_74 /opt/java && chown -R root:root /opt/jdk* && chown -R j ava:java /opt/java' //解压,创建软件接,改变用户和用户组的指令 - unless: test -d /opt/jdk1.8.0_74 //unless:用于检查的命令,仅当``unless``选项指向的命令返回
false
时才执行name指向的命令,检查是否安装。
- require: //require要求jdk-file模块成功执行后,这里才会继续执行该模块。 - file: jdk-file jdk-rmtgz: file.absent: //删除minion机器上,上述jdk-file模块中copy过去的安装包,在安装完毕后,删除这个安装包。 - name: /opt/jdk1.8.0_74.tar.gz //制定删除的位置和包名。 - require: //依赖关系,先安装然后才删除。 - cmd: jdk-install /etc/profile: //修改环境变量。 file.append: - text: - export JAVA_HOME=/opt/java - export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH - export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar - require: - file: jdk-rmtgz
我们查看salt的入口文件,top.sls中的内容:
2.一键部署执行命令。
s2: ---------- ID: jdk-file Function: file.managed Name: /opt/jdk1.8.0_74.tar.gz Result: True Comment: File /opt/jdk1.8.0_74.tar.gz updated Started: 02:40:07.024556 Duration: 5037.368 ms Changes: ---------- diff: New file mode: 0644 ---------- ID: jdk-install Function: cmd.run Name: cd /opt && tar zxf jdk1.8.0_74.tar.gz && ln -s /opt/jdk1.8.0_74 /opt/java && chown -R root:root /opt/jdk* && chown -R hadoop:hadoop /opt/java Result: True Comment: unless execution succeeded Started: 02:40:12.063435 Duration: 15.891 ms Changes: ---------- ID: jdk-rmtgz Function: file.absent Name: /opt/jdk1.8.0_74.tar.gz Result: True Comment: Removed file /opt/jdk1.8.0_74.tar.gz Started: 02:40:12.080015 Duration: 32.4 ms Changes: ---------- removed: /opt/jdk1.8.0_74.tar.gz ---------- ID: /etc/profile Function: file.append Result: True Comment: File /etc/profile is in correct state Started: 02:40:12.112970 Duration: 6.612 ms Changes: Summary for s2 ------------ Succeeded: 4 (changed=2) Failed: 0 ------------ Total states run: 4 Total run time: 5.092 s
这样我们去s2机器上就可以看到jdk已经安装成功了。