(悩) OpenStack 設定ファイルの管理をどうするか

OpenStack の各コンポーネントの設定ファイルをどうやって管理するべきか悩んでいるので、現状やってることを整理としてメモ。

ペパボにおけるOpenStackHacks! を見て、"itamae" でやるのか。なら、ansible でってことで。

ansible playbook で管理してます。ディレクトリ構成は以下の感じ。

inventory/
    production
    dev

vars.yml
site.yml                  # master playbook
hoge-nodes.yml

configs/
    192.168.11.XX/
        etc/
            keystone/keystone.conf
            nova/nova.conf
    192.168.11.XX/
    192.168.11.XX/

roles/
    common/               
        tasks/            
            main.yml      
        handlers/         
            main.yml      
        templates/        
            ntp.conf.j2   
        files/            
            bar.txt       
            foo.sh        
    nova-api/             
    nova-compute/         
    keystone/
    horizon/

Ansibleのベストプラクティスを真似てみたらこうなりました。(形から入るのが好きなんですね。)

roles 以下に OpenStack の各コンポーネントを配置して、その中の files または templates に設定ファイルを入れています。変更を加えたら、copy または template モジュールで配置。

後、playbook 直下の configs ディレクトリには各ノードから fetch モジュールで集めた設定ファイルを入れるようにしてます。

設定ファイル管理の流れとしては、

  1. fetch モジュールで設定ファイル収集
  2. 必要に応じて編集、各 role 内に配置
  3. 設定適用 and テスト
  4. 最新の設定ファイル収集

テストに関しては、Serverspec でやってます。ansible との連携に関してはこちらを参考にしました。

テストすると言っても、以下のことくらいしか出来てません。

  • サービスの起動確認
  • ポートが Listen しているか
  • 各OpenStack Client でリソースのリストを表示(ex. neutron net-list とか)

やる意味があるのか?って感じですが、Serverspec 使ってみたかったのでやってます。

以上。今後どうなっていくのでしょうか。