Skip to content

yosshy/ansible-bergenholm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ansible-bergenholm: Ansible modules for Bergenholm

はじめに

Bergenholm とは、以下の特長を持 つネットワークインストールサーバです。

  • iPXE の利用: iPXE は x86/x86-64 用ネットワークブートローダです。iPXE は多数の機能を持っていますが、Bergenholm は、そのうち、 HTTPによるダ ウンロード、独自のスクリプト言語、ホスト依存パラメータ等の機能を使用 しています。
  • ローカルリポジトリ不要: Cobbler や MAAS には、それらが管理するインス トール用のローカルリポジトリがありますが、Bergenholm にはローカルリポ ジトリを必要としません。もちろん、ローカルリポジトリを作成して、 Bergenholm にそれを利用させる事も出来ます。
  • REST APIの提供: Bergenholm は、テンプレート用、ホスト用、グループ用、 iPXE用の各 RESTful API を持っています。なお、GUI/WebUI は今のところ ありません。
  • パラメータの継承: Bergenholm はホストとグループで JSON 型のパラメータ を扱います。ホストパラメータはグループのパラメータを(多重)継承する事 ができ、グループも別のグループのパラメータを継承する事ができます。グ ループの定義について特別な制限はありません。
  • Jinja2 テンプレート: Bergenholm は Jinja2 形式のテンプレートファイル とパラメータを扱う事ができます。Kickstart や Preseed ファイル用途で、 テンプレートファイルはホストやグループのパラメータを使用する事ができ ます。予約パラメータ を除き、パラメータ定義に制約はありません。
  • リモートファイルのストリーミング: Bergenholm はリモートサイト上のカー ネルや initrd イメージを取得し、インストール先サーバに対してそのファ イルを転送 (ストリーミング) する事ができます。
  • 電源制御:Bergenholm はインストール先サーバの電源状態を取得・変更する 機能があります。対応する電源の種別は IPMI、VMware、libvirt です。
  • Flask-PyMongo/Flask-Action ベース: バックエンド DB は MongoDB です。 また、Python で Bergenholm を開発する事ができます。

元々、Ansible のような構成管理システムから操作される前提で開発されたネッ トワークインストールサーバだったのですが、特に大きなニーズが無かったた め、これまで専用の Ansible モジュールが今まで存在しませんでした。しかし、 Ansible Advent Calendar 2017 の 12/22 分にエントリしたので、折角だから Bergenholm のホストとグループを操作する為のモジュールを書きました。

使い方

ホストの操作はこんな感じです。

- bergenholm_host:
    uuid: "fb0bafd4-b247-49ba-aabc-884386260e7f"
    params:
      groups:
        - centos7
        - centos.amd64
      hostname: "host1"
      ipaddr: "192.168.0.20"
      netif: ens192
    state: present

元々 Bergenholm は JSON 化したパラメータ群を Body として REST API に POST/PUT する事でホストを登録・更新しますが、この Ansible モジュールで は params: にホストのパラメータ群を YAML の complex 形式で記述します。

uuid: にはホストのシステム UUID を指定します。Linux OS インストール後で あれば sudo dmidecode -s system-uuid コマンドでシステム UUID を調 べる事ができます。また、VMware ESXi であれば pysphere モジュール等で、 Libvirt 環境であれば virsh dumpxml <ドメインID> で調べる事ができ ますし、物理マシンであれば BIOS 設定画面で調べられる場合があります。

state: には以下のいずれかを指定します。

  • present: エントリが存在する
  • absent: エントリが存在しない
  • installed: OS のインストールが完了している
  • uninstalled: OS のインストールが完了していない

グループの操作も似たり寄ったりです。

- bergenholm_group:
    name: centos7
    params:
      groups:
        - centos
      version: 7
    state: present

ホスト操作だけですが、VMware ESXi 上で VM を作成してインストールを行う Playbook (create.yml) を作成したので、参考にして下さい。

事前に playbook.yml 中の ESXi 用アカウント/パスワードと、host_vars/ 配下の ansibletest* ファイル中のインストール済み環境の SSH アカウント/ パスワード、IPアドレス等を設定して下さい。 設定後、以下のコマンドを実行して下さい。

ansible-playbook -i hosts.ini create.yml

delete.yml で作成した VM を削除します。

ansible-playbook -i hosts.ini delete.yml

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages