本实验使用salt安装es6.0以上的head插件
ES6.0以上手动安装head插件参考:https://www.cnblogs.com/minseo/p/9117470.html
文件夹目录为
/srv/salt/prod/grunt
目录结构如下

install.sls内容如下
node-install:
file.managed:
- name: /opt/node-v8.0.0-linux-x64.tar.gz
- source: salt://grunt/files/node-v8.0.0-linux-x64.tar.gz
- mode: 755
- user: root
- group: root
cmd.run:
- name: cd /opt && tar -xf node-v8.0.0-linux-x64.tar.gz
#设置node环境变量
/etc/profile:
file.append:
- text:
- export NODE_HOME=/opt/node-v8.0.0-linux-x64
- export PATH=$PATH:$NODE_HOME/bin
- export NODE_PATH=$NODE_HOME/lib/node_modules
cmd.run:
- name: source /etc/profile
#安装head-master
head-install:
file.managed:
- name: /opt/master.zip
- source: salt://grunt/files/master.zip
- mode: 644
- user: root
- group: root
cmd.run:
- name: yum -y install unzip && cd /opt && unzip -o master.zip && sleep 5 && cd /opt/elasticsearch-head-master && source /etc/profile && npm install -g grunt-cli && npm install
#修改配置文件
Gruntfile.js:
file.managed:
- name: /opt/elasticsearch-head-master/Gruntfile.js
- source: salt://grunt/files/Gruntfile.js
- mode: 644
- user: root
- group: root
app.js:
file.managed:
- name: /opt/elasticsearch-head-master/_site/app.js
- source: salt://grunt/files/app.js
- mode: 644
- user: root
- group: root
#配置文件中需要使用grains取ip地址
- template: jinja
配置文件Gruntfile.js增加了一行

配置文件app.js使用grains赋值

PS:需要加[0]否则赋值为类似u[192.168.1.4]
salt安装命令为
salt 'salt-test' state.sls grunt.install saltenv=prod