phpでsshコマンドをたたいてansibleコマンドを実行させた

管理パネル(PHP)からansibleサーバーにコマンドを投げて、ansibleコマンドを走らせたかった。

 

phpからsshで別サーバーにコマンドを実行させる

phpで適当にインフォメーションを作成して、それをもとにコマンドを生成し

生成したコマンドをansibleサーバーで実行する。

 

最初は

$command = "ssh 192.168.xxx.xxx {コマンド}";
exec($command, $out, $return_ver);

var_dump($out);

こんな感じで行けるかな?と思いつつ実装and実行

 

どうやらapacheに権限がなくてsshでキー認証ができなくてダメ

 

じゃあ「sudo」つけたらええんかな?

$command = "sudo ssh 192.168.xxx.xxx {コマンド}";
exec($command, $out, $return_ver);

var_dump($out);

 

 

なんかsudoつかうなや的なエラー、、、

 

結局ssh2を使いました

https://qiita.com/bohebohechan/items/50f1546a20c9dde7efcb

 

インストールが必要orz

$command = "{コマンド}";
 
$conn = ssh2_connect("192.168.xxx.xxx", {ポート});
    ssh2_auth_pubkey_file(
        $conn,
        '{ユーザー名}',
        'id_rsa.pub',
        'id_rsa'
    );

    //コマンドを実行して配列に代入
    $output = ssh2_exec($conn, "$command");

 

最終こんな感じになった、、、

 

これで半日とられました。

CentOS, PHP, メモ

Posted by hapoopaka