この記事はEucalyptus Advent Calendar 2014の12/18分の記事です。遅刻してすみません。
昨年2013年はひたすらインフラ管理というか、IaaS周りでお世話になったわけですが、どういうわけか今年2014年からはロボット(Pepperくん)の仕事もやらせていただいていたります。
そんな感じの年末、shidat1234さんのスライドを見て**自分もEucalyptusで書かねば・・・**となにか使命感のようなものが湧いてきてしまったので、今お気に入りのAnsibleたんにEucalyptusを組み立ててもらおうとしたのでそのメモを。まだできてなくてすみません。
#前提
自分らが運用するベアメタルクラウド上で物理マシン 5台を確保。
いずれもフロントに通じるNICとマシン間で通じるプライベートなNICを持ったマシンを作り、CentOS6.5イメージで初期化している。
これに https://github.com/eucalyptus/playbook でEucalyptusを生やせないのかと、そんな感じの実験をしてみる。
なお、これで構築できるEucalyptusのバージョンは(設定ファイル類の定数を見る限り)3.4っぽい。(最終更新9ヶ月前・・・)
#準備
Ansibleを動かすマシンに https://github.com/eucalyptus/playbook.git をcloneしてきて、 vars/main.yml
に関して、以下の作業を実施。
-
em1
とかem2
とか、NIC名を指定しているところを環境にあわせて書き換える -
nc_gateway:
あたりを環境にあわせて書き換える - ホスト情報をInventoryファイルに書く。なお、デプロイ元ホストで作ったキーペアの公開鍵を各ホストの
~/.ssh/authorized_keys
に加えておく
Inventoryはこんな感じ。euca.hosts
みたいなファイル名で作成。
[clc]
192.168.207.97 ansible_ssh_user=testuser
[walrus]
192.168.207.98 ansible_ssh_user=testuser
[sc]
192.168.207.99 ansible_ssh_user=testuser
[cc]
192.168.207.100 ansible_ssh_user=testuser
[nc]
192.168.207.101 ansible_ssh_user=testuser
とりあえず何も考えず各ロールに1マシンずつ割り振ってみる。
#実行してみる
ansible-playbook --sudo -i euca.hosts site.yml
みたいな感じでサクッと実行。
すると、Playbookが実行されていく。
PLAY [cc] *********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.207.100]
PLAY [nc] *********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.207.101]
TASK: [common | Template repo files (release)] ********************************
changed: [192.168.207.101] => (item=eucalyptus-release.repo)
changed: [192.168.207.101] => (item=euca2ools-release.repo)
changed: [192.168.207.101] => (item=elrepo.repo)
changed: [192.168.207.101] => (item=epel.repo)
TASK: [common | Template repo files (nightly)] ********************************
skipping: [192.168.207.101] => (item=eucalyptus-nightly.repo)
skipping: [192.168.207.101] => (item=euca2ools-release.repo)
skipping: [192.168.207.101] => (item=elrepo.repo)
skipping: [192.168.207.101] => (item=epel.repo)
...
TASK: [nc | Remove virbr0] ****************************************************
skipping: [192.168.207.101] => (item=net-destroy)
skipping: [192.168.207.101] => (item=net-undefine)
こんな感じで着々とtaskが進んでいくように見える。試しに、NCにしたマシンでサービスを確認してみると、「おー」という感じ。
[root@xxxxxxxxxx ~]# service eucalyptus-nc status
NC is running
なんとなくサービスも動いているっぽい。やはりAnsibleが自動的にガツガツデプロイしていくさまは少しかわいげがあります。
で、見守る。
GATHERING FACTS ***************************************************************
ok: [192.168.207.97]
TASK: [Check for Walrus] ******************************************************
failed: [192.168.207.97] => {"changed": true, "cmd": "/usr/sbin/euca_conf --list-walruses | grep -q 192.168.207.98", "delta": "0:00:44.916468", "end": "2014-12-19 01:40:43.791090", "rc": 1, "start": "2014-12-19 01:39:58.874622", "warnings": []}
stderr: warning: No credentials found; attempting local authentication
...ignoring
TASK: [Register Walrus] *******************************************************
fatal: [192.168.207.97] => with_items expects a list or a set
FATAL: all hosts have already failed -- aborting
・・・・・・うむ・・・・・・・時間は、あまり、ないな・・・・・・また来年よろしくお願いします!!!!