初次使用 saltstack,若有语法什么的问题还请各位指点下。 sls 文件内容( https://github.com/fanne/salt)
目录结构:
[root@salt_master ~]# tree -Cv /srv/
/srv/
├── README.md
├── pillar
│ └── base
│ ├── jboss7.sls
│ └── top.sls
└── salt
└── base
├── bashrc_init
│ └── bashrc_init.sls
├── cp_file.sls
├── del_file.sls
├── jboss7
│ ├── file
│ │ ├── jboss-as-7.1.0.Final.zip
│ │ ├── jboss-as-standalone
│ │ ├── jboss-as.conf
│ │ └── standalone.conf
│ └── jboss7.sls
├── jdk_7_79
│ ├── file
│ │ ├── env_jdk.txt
│ │ └── jdk-7u79-linux-x64.rpm
│ └── jdk_7_79.sls
├── jdk_8_121
│ ├── file
│ │ ├── env_jdk.txt
│ │ └── jdk-8u121-linux-x64.rpm
│ └── jdk_8_121.sls
└── top.sls
11 directories, 18 files
现在对 salt_node_02 节点安装 jdk 和 jboss 内容。 安装 jdk 前,salt_node_02 上的 jdk 信息
[root@salt_node_02 ~]# java -version
-bash: java: command not found
在 master 端执行:
[root@salt_master ~]# salt 'salt_node_02' state.sls jdk_7_79.jdk_7_79 -l debug
输出结果:
[DEBUG ] LazyLoaded nested.output
[DEBUG ] LazyLoaded nested.output
[DEBUG ] LazyLoaded nested.output
[DEBUG ] LazyLoaded nested.output
salt_node_02:
----------
ID: jdk-install
Function: file.managed
Name: /usr/local/src/jdk-7u79-linux-x64.rpm
Result: True
Comment: File /usr/local/src/jdk-7u79-linux-x64.rpm updated
Started: 16:59:37.933787
Duration: 13352.812 ms
Changes:
----------
diff:
New file
mode:
0644
----------
ID: jdk-install
Function: cmd.run
Name: cd /usr/local/src && rpm -ivh jdk-7u79-linux-x64.rpm
Result: True
Comment: Command "cd /usr/local/src && rpm -ivh jdk-7u79-linux-x64.rpm" run
Started: 16:59:51.287182
Duration: 27559.508 ms
Changes:
----------
pid:
2009
retcode:
0
stderr:
stdout:
Preparing... ##################################################
jdk ##################################################
Unpacking JAR files...
rt.jar...
jsse.jar...
charsets.jar...
tools.jar...
localedata.jar...
jfxrt.jar...
----------
ID: jdk-evn
Function: file.append
Name: /etc/profile
Result: True
Comment: Appended 7 lines
Started: 17:00:18.846921
Duration: 153.225 ms
Changes:
----------
diff:
---
+++
@@ -76,3 +76,10 @@
unset i
unset -f pathmunge
+export PATH=$PATH:/usr/local/bin
+#set java environment
+JAVA_HOME=/usr/java/jdk1.7.0_79
+CLASSPATH=.:$JAVA_HOME/lib/tools.jar
+PATH=$JAVA_HOME/bin:$PATH
+LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
+export JAVA_HOME CLASSPATH PATH LD_LIBRARY_PATH
----------
ID: jdk-evn
Function: cmd.run
Name: source /etc/profile
Result: True
Comment: Command "source /etc/profile" run
Started: 17:00:19.000263
Duration: 202.819 ms
Changes:
----------
pid:
2203
retcode:
0
stderr:
stdout:
Summary for salt_node_02
------------
Succeeded: 4 (changed=4)
Failed: 0
------------
Total states run: 4
Total run time: 41.268 s
[DEBUG ] jid 20170524165954616622 found all minions set(['salt_node_02'])
此时,salt_node_02 上的 jdk 信息
[root@salt_node_02 ~]# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
然后安装 jboss7 内容,同样在 master 端执行命令: 然后 debug 日志一直打印以下信息
[root@salt_master ~]# salt 'salt_node_02' state.sls jboss7.jboss7 -l debug
[DEBUG ] Reading configuration from /etc/salt/master
[DEBUG ] Missing configuration file: /root/.saltrc
[DEBUG ] Configuration file path: /etc/salt/master
[WARNING ] Insecure logging configuration detected! Sensitive data may be logged.
[DEBUG ] Reading configuration from /etc/salt/master
[DEBUG ] Missing configuration file: /root/.saltrc
[DEBUG ] MasterEvent PUB socket URI: /var/run/salt/master/master_event_pub.ipc
[DEBUG ] MasterEvent PULL socket URI: /var/run/salt/master/master_event_pull.ipc
[DEBUG ] Initializing new AsyncZeroMQReqChannel for ('/etc/salt/pki/master', 'salt_master_master', 'tcp://127.0.0.1:4506', 'clear')
[DEBUG ] Initializing new IPCClient for path: /var/run/salt/master/master_event_pub.ipc
[DEBUG ] LazyLoaded local_cache.get_load
[DEBUG ] Reading minion list from /var/cache/salt/master/jobs/58/51c7350809d96364ef260721ee618e6765bf47830c9db82440105eeb919ced/.minions.p
[DEBUG ] get_iter_returns for jid 20170524170231748034 sent to set(['salt_node_02']) will timeout at 17:02:36.830281
[DEBUG ] Checking whether jid 20170524170231748034 is still running
[DEBUG ] Initializing new AsyncZeroMQReqChannel for ('/etc/salt/pki/master', 'salt_master_master', 'tcp://127.0.0.1:4506', 'clear')
[DEBUG ] Passing on saltutil error. This may be an error in saltclient. 'retcode'
[DEBUG ] Checking whether jid 20170524170231748034 is still running
[DEBUG ] Initializing new AsyncZeroMQReqChannel for ('/etc/salt/pki/master', 'salt_master_master', 'tcp://127.0.0.1:4506', 'clear')
[DEBUG ] Passing on saltutil error. This may be an error in saltclient. 'retcode'
[DEBUG ] Checking whether jid 20170524170231748034 is still running
[DEBUG ] Initializing new AsyncZeroMQReqChannel for ('/etc/salt/pki/master', 'salt_master_master', 'tcp://127.0.0.1:4506', 'clear')
[DEBUG ] Passing on saltutil error. This may be an error in saltclient. 'retcode'
[DEBUG ] Checking whether jid 20170524170231748034 is still running
[DEBUG ] Initializing new AsyncZeroMQReqChannel for ('/etc/salt/pki/master', 'salt_master_master', 'tcp://127.0.0.1:4506', 'clear')
[DEBUG ] Passing on saltutil error. This may be an error in saltclient. 'retcode'
[DEBUG ] Checking whether jid 20170524170231748034 is still running
[DEBUG ] Initializing new AsyncZeroMQReqChannel for ('/etc/salt/pki/master', 'salt_master_master', 'tcp://127.0.0.1:4506', 'clear')
[DEBUG ] Passing on saltutil error. This may be an error in saltclient. 'retcode'
master 端一直在执行,没法结束。
在 node 端查看信息,发现 jboss 已经安装上了:
[root@salt_node_02 ~]# ps -ef|grep java
root 2358 2305 1 17:02 ? 00:00:06 /usr/java/jdk1.7.0_79/bin/java -D[Standalone] -server -XX:+UseCompressedOops -XX:+TieredCompilation -Xms32m -Xmx256m -XX:MaxPermSize=128m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.server.default.config=standalone.xml -Dorg.jboss.boot.log.file=/usr/local/src/jboss-as-7.1.0.Final/standalone/log/boot.log -Dlogging.configuration=file:/usr/local/src/jboss-as-7.1.0.Final/standalone/configuration/logging.properties -jar /usr/local/src/jboss-as-7.1.0.Final/jboss-modules.jar -mp /usr/local/src/jboss-as-7.1.0.Final/modules -jaxpmodule javax.xml.jaxp-provider org.jboss.as.standalone -Djboss.home.dir=/usr/local/src/jboss-as-7.1.0.Final -c standalone.xml
root 2648 1968 0 17:12 pts/2 00:00:00 grep java
[root@salt_node_02 ~]# netstat -ntpl|grep java
tcp 0 0 127.0.0.1:9999 0.0.0.0:* LISTEN 2358/java
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2358/java
tcp 0 0 0.0.0.0:4447 0.0.0.0:* LISTEN 2358/java
tcp 0 0 127.0.0.1:9991 0.0.0.0:* LISTEN 2358/java
[root@salt_node_02 ~]#
然后 master 端就是没法退出来,问题是出现哪里的?
所有文件在:https://github.com/fanne/salt/blob/master/salt/ jboss7.sls内容:
install-jboss:
file.managed:
- source: salt://jboss7/file/jboss-as-7.1.0.Final.zip
- name: {{ pillar['jboss-dir']['Jboss_Dir'] }}/jboss-as-7.1.0.Final.zip
- user: root
- group: root
- mode: 644
cmd.run:
- name: cd {{ pillar['jboss-dir']['Jboss_Dir'] }} && unzip -q jboss-as-7.1.0.Final.zip && rm -rf jboss-as-7.1.0.Final.zip
- unless: test -d {{ pillar['jboss-dir']['Jboss_Dir'] }}/jboss-as-7.1.0.Final
/etc/jboss-as:
file.directory:
- user: root
- group: root
- dir_mode: 755
- file_mode: 644
- force: True
- recurse:
- user
- group
- mode
- require:
- file: install-jboss
/etc/jboss-as/jboss-as.conf:
file.managed:
- source: salt://jboss7/file/jboss-as.conf
- user: root
- group: root
- mode: 644
- require:
- file: install-jboss
- template: jinja
/etc/init.d/jboss-as-standalone:
file.managed:
- source: salt://jboss7/file/jboss-as-standalone
- user: root
- group: root
- mode: 755
- require:
- file: install-jboss
- template: jinja
{{ pillar['jboss-dir']['Jboss_Dir'] }}/jboss-as-7.1.0.Final/bin/standalone.conf:
file.managed:
- source: salt://jboss7/file/standalone.conf
- user: root
- group: root
- mode: 644
- require:
- file: install-jboss
- template: jinja
{{ pillar['jboss-dir']['Jboss_Dir'] }}/jboss-as-7.1.0.Final/bin/standalone.sh:
file.managed:
- user: root
- group: root
- mode: 755
- require:
- file: install-jboss
- template: jinja
jboss-as-standalone:
cmd.run:
- name: chkconfig --add jboss-as-standalone
- unless: chkconfig --list|grep jboss-as-standalone
- require:
- file: install-jboss
service.running:
- enable: True
1
yujianwjj 2017-05-24 17:59:34 +08:00
jboss7.sls 贴出来看一下
|
3
yujianwjj 2017-05-24 19:32:36 +08:00
{{ pillar['jboss-dir']['Jboss_Dir'] }}/jboss-as-7.1.0.Final/bin/standalone.sh:
这个 source 在哪。。 |
4
fanne OP @yujianwjj #3
貌似不是 source 的问题,我把 source 加上,也是一样的情况。 {{ pillar['jboss-dir']['Jboss_Dir'] }}/jboss-as-7.1.0.Final/bin/standalone.sh: file.managed: - source: salt://jboss7/file/standalone.sh - user: root - group: root - mode: 755 - require: - file: install-jboss - template: jinja [root@salt_master base]# tree -Cv jboss7/ jboss7/ ├── file │ ├── jboss-as-7.1.0.Final.zip │ ├── jboss-as-standalone │ ├── jboss-as.conf │ ├── standalone.conf │ └── standalone.sh └── jboss7.sls |
5
yujianwjj 2017-05-24 21:04:42 +08:00 via iPhone
你的 jboss 似乎没有安装吧,只有解压 zip 和删除 zip 的操作。
|
6
fanne OP @yujianwjj #5 安装了的,这个只要解压出来就可以的,而且在 node 端也看到 jboss 已经启动的
[root@salt_node_02 ~]# ps -ef|grep jboss root 1915 1 0 May24 ? 00:00:00 su - root -c LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=/var/run/jboss-as/jboss-as-standalone.pid /usr/local/src/jboss-as-7.1.0.Final/bin/standalone.sh -c standalone.xml root 1923 1915 0 May24 ? 00:00:00 /bin/sh /usr/local/src/jboss-as-7.1.0.Final/bin/standalone.sh -c standalone.xml root 1974 1923 0 May24 ? 00:00:43 /usr/java/jdk1.7.0_79/bin/java -D[Standalone] -server -XX:+UseCompressedOops -XX:+TieredCompilation -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.server.default.config=standalone.xml -Dorg.jboss.boot.log.file=/usr/local/src/jboss-as-7.1.0.Final/standalone/log/boot.log -Dlogging.configuration=file:/usr/local/src/jboss-as-7.1.0.Final/standalone/configuration/logging.properties -jar /usr/local/src/jboss-as-7.1.0.Final/jboss-modules.jar -mp /usr/local/src/jboss-as-7.1.0.Final/modules -jaxpmodule javax.xml.jaxp-provider org.jboss.as.standalone -Djboss.home.dir=/usr/local/src/jboss-as-7.1.0.Final -c standalone.xml root 20626 20610 0 09:47 pts/1 00:00:00 grep jboss [root@salt_node_02 ~]# |
8
yesono 2017-05-25 11:50:45 +08:00
可能启动脚本没写好导致。。。去掉这个看看是否被卡。。
|
9
fanne OP @yesono #8 是卡在启动这一块的,启动脚本用 jboss 自带的脚本 jboss-as-standalone
而且我直接在 node 上执行这个启动脚本,是正常可以启动的 这是在 node 下手动执行的情况 [root@salt_node_02 src]# service jboss-as-standalone start Starting jboss-as: [ OK ] [root@salt_node_02 src]# /etc/init.d/jboss-as-standalone stop Stopping jboss-as: *** JBossAS process (2750) received TERM signal *** [ OK ] [root@salt_node_02 src]# ps -ef|grep java |
10
yujianwjj 2017-05-25 12:08:55 +08:00
service.running:
- enable: True 这个应该是使用系统的包管理方式来启动 jbos,比如,如果你的系统是 centos6,那么会使用 service start jboss-as-standalone 这个方式来启动 jboos。 |
11
fanne OP @yujianwjj #10 是可以用 service 启动的
[root@salt_node_02 src]# service jboss-as-standalone stop Stopping jboss-as: [ OK ] [root@salt_node_02 src]# service jboss-as-standalone start Starting jboss-as: [ OK ] [root@salt_node_02 src]# |
12
fanne OP @yesono #8 可以用 service 启动的
[root@salt_node_02 src]# service jboss-as-standalone stop Stopping jboss-as: [ OK ] [root@salt_node_02 src]# service jboss-as-standalone start Starting jboss-as: [ OK ] [root@salt_node_02 src]# |
13
yujianwjj 2017-05-25 13:04:17 +08:00
jboss-as-standalone:
cmd.run: - name: chkconfig --add jboss-as-standalone - unless: chkconfig --list|grep jboss-as-standalone - require: - file: install-jboss - require: - file: /etc/init.d/jboss-as-standalone service.running: - enable: True - require: - file: /etc/init.d/jboss-as-standalone 改成上面这样再试试 |
14
fanne OP @yujianwjj #13 一样情况,也是会一直卡着的。
debug 日志 [DEBUG ] Checking whether jid 20170525133145602469 is still running [DEBUG ] Initializing new AsyncZeroMQReqChannel for ('/etc/salt/pki/master', 'salt_master_master', 'tcp://127.0.0.1:4506', 'clear') [DEBUG ] Passing on saltutil error. This may be an error in saltclient. 'retcode' [DEBUG ] Checking whether jid 20170525133145602469 is still running [DEBUG ] Initializing new AsyncZeroMQReqChannel for ('/etc/salt/pki/master', 'salt_master_master', 'tcp://127.0.0.1:4506', 'clear') [DEBUG ] Passing on saltutil error. This may be an error in saltclient. 'retcode' [DEBUG ] Checking whether jid 20170525133145602469 is still running [DEBUG ] Initializing new AsyncZeroMQReqChannel for ('/etc/salt/pki/master', 'salt_master_master', 'tcp://127.0.0.1:4506', 'clear') [DEBUG ] Passing on saltutil error. This may be an error in saltclient. 'retcode' [DEBUG ] Checking whether jid 20170525133145602469 is still running [DEBUG ] Initializing new AsyncZeroMQReqChannel for ('/etc/salt/pki/master', 'salt_master_master', 'tcp://127.0.0.1:4506', 'clear') [DEBUG ] Passing on saltutil error. This may be an error in saltclient. 'retcode' |
15
fanne OP @yujianwjj #13 又写了一个 nginx 的,https://github.com/fanne/salt/tree/master/salt/base/nginx_1_10
也是正常执行成功。 |
16
julyclyde 2017-05-25 17:23:46 +08:00
java 流派的很多程序默认不带 daemonize 功能吧
|
17
tongtf 2017-05-26 16:24:14 +08:00
jboss-as-standalone 脚本里面启动的那行改成 echo "nohup xxxxxxx &" | at now 应该就可已了,启动脚本没有返回,所以卡住了
需要提前开启 atd 服务 |
18
tongtf 2017-05-26 16:30:37 +08:00
if [ ! -z "$JBOSS_USER" ]; then
if [ -x /etc/rc.d/init.d/functions ]; then daemon --user $JBOSS_USER LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=$JBOSS_PIDFILE $JBOSS_SCRIPT -c $JBOSS_CONFIG 2>&1 > $JBOSS_CONSOLE_LOG & else su - $JBOSS_USER -c "LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=$JBOSS_PIDFILE $JBOSS_SCRIPT -c $JBOSS_CONFIG" 2>&1 > $JBOSS_CONSOLE_LOG & fi fi 应该是这段。后面 添加 |at now,不过结果只会是成功 |
19
fanne OP @tongtf #18 脚本没有返回是咋意思?
我今天又是了一个 mysql 的,用 yum 安装的,也是在启动步骤卡住了 https://segmentfault.com/q/1010000009566820 |
20
fanne OP @tongtf #18 添加了,也是一样,没有返回。
一直处于这个状态 [DEBUG ] Checking whether jid 20170526171632118302 is still running [DEBUG ] Initializing new AsyncZeroMQReqChannel for ('/etc/salt/pki/master', 'salt_master_master', 'tcp://127.0.0.1:4506', 'clear') [DEBUG ] Passing on saltutil error. This may be an error in saltclient. 'retcode' [DEBUG ] Checking whether jid 20170526171632118302 is still running [DEBUG ] Initializing new AsyncZeroMQReqChannel for ('/etc/salt/pki/master', 'salt_master_master', 'tcp://127.0.0.1:4506', 'clear') [DEBUG ] Passing on saltutil error. This may be an error in saltclient. 'retcode' [DEBUG ] Checking whether jid 20170526171632118302 is still running [DEBUG ] Initializing new AsyncZeroMQReqChannel for ('/etc/salt/pki/master', 'salt_master_master', 'tcp://127.0.0.1:4506', 'clear') [DEBUG ] Passing on saltutil error. This may be an error in saltclient. 'retcode' |
22
fanne OP @tongtf @yujianwjj
此问题已解决 90 行:daemon --user $JBOSS_USER LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=$JBOSS_PIDFILE $JBOSS_SCRIPT -c $JBOSS_CONFIG 2>&1 > $JBOSS_CONSOLE_LOG 2>&1 & 92 行:su - $JBOSS_USER -c "LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=$JBOSS_PIDFILE $JBOSS_SCRIPT -c $JBOSS_CONFIG" 2>&1 > $JBOSS_CONSOLE_LOG 2>&1 & mysql 的问题同样解决。 |