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已经安装成功了。