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

CentOS

管理パネル(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を使いました

ssh2のextensionをphp7にインストールする方法 - Qiita
ssh2 extensionを PHP7にインストールした手順です。 必要ライブラリ すでにこの辺のライブラリがある場合は重複ですが yum install make gcc glibc-devel zlib-devel op...

 

インストールが必要orz

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

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

 

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

 

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

コメント

タイトルとURLをコピーしました