KVMゲスト作成&セットアップツール作成

◎構想記録                                                                  
・KVMゲストを作成する手順をスクリプト化して簡単に何時でも作り直せるようにする。                              
・そのゲストでセットアップしたものを記録し自動で実行できるようにして自動で再現できるようにする。                       
・自分で作成したファイルをバックアップし、別のマシンで再現できるようにする。                                 
・スクリプトとバックアップデータを使って、別のマシンで再現できることを確認してみる。                             
・再現できていることを自動で確認するための、テストツールとテスト内容記述方法を検討する。                           
・双方で違いがあるときに、何が違うかを調べるツールを用意する。                                        
・ゲストマシンを継続的に使うときは、定期的にマシンを乗り換える。                                       
・ゲストマシンを使わなくなったら、スクリプトとバックアップのみ残して、ゲストマシンを削除する                         
・これらを通してサイトを継続的に運用するための雛型を確立する。                                        

◎TODO                                                                  
・ゲストマシンを手作業で作り、必要な作業を拾い出す。                                             
・phpのssh2を使ってそれを自動でできるようにする。(apiからssh2を起動する場合は「inotify」のイベントを使う)           
・rustのssh2に置き換える                                                       

◎ゲスト候補                                                                 
・とにかくrustを使ってみるマシン。                                                    
・とにかくgRPCをやってみるマシン。                                                    
・とにかくWebAssemblyをやってみるマシン。                                             
・これらを組み合わせたアプリを検証するマシン。                                                

◎環境                                                                    
・KVMホスト     ローカルKVMサーバー                                                
・コントロールパネル  www.ictmall.biz                                                    

◎期待するイメージ                                                              
・ブラウザでコントロールパネルを開き、メニューの新ゲストマシンをクリック。                                  
・必要な項目を入力して、作成ボタンをクリックするとゲストマシンが起動する。                                  

◎仕組みの概要                                                                
・ブラウザは入力された情報をajaxでポストする。                                                
・サーバは情報を受け取り、チェックした後、常駐ssh2プログラムに対してイベントを発行する。                           
・常駐ssh2プログラムはKVMホストにログインして、ゲストマシン作成に必要なファイルを作成して、virshのcreateコマンドを実行する。        
・常駐ssh2プログラムは結果をサーバに返す。                                                  
・サーバはブラウザに結果を返す。                                                       

◎アプリ化する前のテストTODO                                                       
・実際にゲストマシンを手で作成してみて、事前に決めなければいけないこと、決めるために調べる必要があること、やるべきことをリストアップする。  
・新しいゲストを作るために必要な設定ファイルで毎回書き換える必要があるところを確認する。                           

◎作業経過                                                                  
・検討                                                                    
  ・実際にゲストマシンを手で作成してみて、事前に決めなければいけないこと、決めるために調べる必要があること、やるべきことをリストアップする。
    ・使用するIPアドレス。←使用できるIPアドレス。DNSに登録済のアドレス。稼働中のマシンと使用IPアドレス。            
    ・空きディスク容量                                                          
    ・空きメモリー容量                                                          
    ・ホスト名                                                              
・要件の検討                                                                 
  ・全(稼働中、停止中)ゲストマシンのメモリ使用量、IPアドレス、ホストID、ホスト名、用途を一覧にしたものが必要。              
  ・全IPアドレスの使用状況が必要。                                                     
  ・全ホスト名の使用状況が必要。                                                      
・実現方法の検討                                                               
  ・全(稼働中、停止中)ゲストマシンのメモリ使用量、IPアドレス、ホストID、ホスト名、用途を一覧にしたものが必要。              
    ・KVMホストの所定の場所にCSV等で書かれたファイルを用意し、作成、起動、停止の度に書か替え、実際の稼働状況とも照合する      
  ・全IPアドレスの使用状況が必要。                                                     
    ・全てのIPアドレスに対してpingとnslookupを実行する。                                         
  ・全ホスト名の使用状況が必要。                                                      
    ・DNSサーバにログインして登録されている情報を取得できるようにする。また、登録、抹消もできるようにする。ssh2で実現。      
・実験用アプリの実装手順                                                           
  ・画面表示     必要になったものから順に                                               
    ・ログイン                                                              
    ・メニュー                                                              
      ・新規作成                                                            
      ・停止                                                              
      ・破棄                                                              
      ・複製                                                              
      ・別名動作チェック                                                        
      ・切り替え                                                            
      ・本番動作チェック                                                        
      ・ゲストマシン一覧取得                                                      
      ・IPアドレス一覧取得                                                      
      ・DNS登録名一覧取得                                                      
    ・ゲストマシン情報入力                                                        
    ・ゲストマシン一覧                                                          
    ・IPアドレス一覧                                                          
    ・DNS登録名一覧                                                          
  ・ログイン                                                                
  ・ゲストマシン一覧                                                            
  ・IPアドレス一覧                                                            
  ・DNS登録名一覧                                                            
  ・ゲストマシン情報入力                                                          
・実験用アプリの実装に関する考察                                                       
  ・他の用途でもアプリを作り掛けていて、同じようなところで止まって居たりするので、そろそろモジュール化して共通に使えるようにする      
  ・サーバサイドの開発言語をPHPのままで行くか、RUSTに変えるかを検討する                               
  → 当面はモジュール化せずPHPのままで行き、作成を急ぐ                                         

<TODOと状況>