2016-04-29 11 views
0

複数のNodeJSアプリケーションをMicrosoft Azure上で動作するUbuntu 14.04.4仮想マシンに展開する必要があります。
shipitshipit-deployをタスクに使用しています。リモートAzure VMでshipit-deployをsudoとして実行

マイshipitfile.jsは、これまでに次のようになります。

module.exports = function (shipit) { 
    require('shipit-deploy')(shipit); 

    var stagingConfig = require('./config.staging').deploy; 
    var productionConfig = require('./config.prod').deploy; 

    shipit.initConfig({ 
    default: { 
     workspace: '/tmp/my-api', 
     deployTo: '/var/www/my-api', 
     repositoryUrl: 'https://githubrepoaddresshere.git', 
     ignores: ['.git', 'node_modules', 'migrations', 'dumpDB', 'logs', 'bin'], 
     rsync: ['--del'], 
     keepReleases: 2, 
     key: '~/.ssh/id_rsa.pem', 
     shallowClone: true 
    }, 
    staging: stagingConfig, 
    production: productionConfig 
    }); 

    shipit.on('init', function() { 
    console.log('Starting deployment...'); 
    }); 

    shipit.on('deployed', function() { 
    // npm install etc etc 
    }); 
}; 

stagingConfig変数を保持するオブジェクトの環境固有の情報である:

{ 
    "branch": "develop", 
    "servers": "[email protected]" 
} 

私はshipit staging deployコマンドを実行すると、私は

'deploy:update' errored after 3.41 s 
Error: Command failed: ssh -i ~/.ssh/id_rsa.pem "[email protected]" "mkdir -p /var/www/my-api/releases/20160429125114" 
mkdir: cannot create directory ‘/var/www/my-api/releases’: Permission denied 
を取得

1)/home/username
2)Use this workaroundrootとしてSSHセッションを開始するために展開するようにしてください。

私はまだ最初の試みをしなければならないし、確かに2番目を使用するつもりはありません。

私の質問は、sudoで展開中に実行するすべてのコマンドの接頭辞をそれぞれshipit-deployにするクリーンで非ハックな解決策ですか?

答えて

0

変数shipit.releasesPathをホームパスに変更して、コマンドに接頭辞sudoを付ける必要はありません。

したがって、展開タスクには管理者のアクセス許可が必要ないため、予期しないアクセス操作の問題も回避できます。

E.G.

shipit.initConfig({ 
    default: { 
     ... 
    }, 
    staging: { 
     servers: '<user>@<your_vm_name>.cloudapp.net' 
    } 
    }); 
    shipit.releasesPath = '/home/www/releases'; 
関連する問題