Shell-Script
從鹽供應器編譯 nginx shell 失敗
我有一個鹽供應商,它正在呼叫一個 shell 腳本來編譯 Nginx 和一些需要的模組。這是對以下腳本的呼叫
.sls
:nginx: # pkg.installed: # - name: nginx file.directory: - name: /src/ - user: root - group: root - mode: 644 cmd.run: - name: /srv/salt/config/nginx/compiler.sh | bash - cwd: / - require: - pkg: nginx-compiler-base
所以它
/srv/salt/config/nginx/compiler.sh | bash
是執行的,它確實開始了。腳本執行是:#!/bin/bash cd ../../../../ cd /src/ nginxVersion="1.5.5" # set the value here from nginx website wget http://nginx.org/download/nginx-$nginxVersion.tar.gz tar -xzf nginx-$nginxVersion.tar.gz #rm nginx # removes the soft link ln -sf nginx-$nginxVersion nginx cd nginx ./configure --with-http_auth_request_module \ --with-http_gzip_static_module \ --with-http_stub_status_module \ --with-http_ssl_module \ --with-pcre \ --with-file-aio \ --with-http_realip_module \ --without-http_scgi_module \ --without-http_uwsgi_module \ --without-http_fastcgi_module make make install
這確實到達了去皮的部分。之後我得到這個作為輸出和失敗的消息:
如果我
ssh
進入伺服器,那麼su
,我可以執行腳本中的每一行並且它可以工作。我不確定為什麼當供應商失敗時它會失敗。
所以似乎原因是
| bash
我在呼叫腳本時正在使用。換句話說name: /srv/salt/config/nginx/compiler.sh | bash
應該是name: /srv/salt/config/nginx/compiler.sh
,所以鹽.sls
應該是:# Set Nginx to run in levels 2345. nginx: file.directory: - name: /src/ - user: root - group: root - mode: 644 cmd.run: - name: /srv/salt/config/nginx/compiler.sh - cwd: / - require: - pkg: nginx-compiler-base
然後是我轉向的文件:
#!/bin/bash cd /src nginxVersion="1.5.7" # set the value here from nginx website wget -N http://nginx.org/download/nginx-$nginxVersion.tar.gz tar -xzf nginx-$nginxVersion.tar.gz ln -sf nginx-$nginxVersion nginx cd /src/nginx #mkdir /tmp/nginx-modules #cd /tmp/nginx-modules #wget https://github.com/agentzh/headers-more-nginx-module/archive/v0.19.tar.gz #tar -xzvf v0.19.tar.gz ./configure --with-http_auth_request_module --with-http_dav_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-ipv6 --with-http_realip_module --without-http_scgi_module --without-http_uwsgi_module #\ #--add-module=/tmp/nginx-modules/headers-more-nginx-module-0.19 \ make make install
執行並按預期安裝。希望這可以節省一些時間。