2010年2月22日月曜日

"haresources2cib.py"使うと"cidr_netmask"と"nic"が反対に

スズキです。

下記で、"/usr/lib/heartbeat/haresources2cib.py"を見はじめてしまったので、
http://blog.suz-lab.com/2010/02/heartbeat-mysql3.html
ずっと面倒だと思っていた、"cidr_netmask"と"nic"が反対になってしまう問題に
メスを入れていこうと思います。

問題は、次のような"haresources"を"haresources2cib.py"で変換すると、

--------【haresources】--------
ha-back-01 \
  IPaddr2::172.21.10.153/24/eth1
--------

以下のような、"cidr_netmask"と"nic"が入れ替わった"cib.xml"が作成されてしまいます。

--------【cib.xml】--------
<instance_attributes id="IPaddr2_5_inst_attr">
  <attributes>
    <nvpair id="IPaddr2_5_attr_0" name="ip" value="172.21.10.153"/>
    <nvpair id="IPaddr2_5_attr_1" name="nic" value="24"/>
    <nvpair id="IPaddr2_5_attr_2" name="cidr_netmask" value="eth1"/>
  </attributes>
</instance_attributes>
--------

今までは、それを手動で変更していたのですが、
これからは、下記のように"haresources2cib.py"を修正して対応です。

具体的には配列の
..., "nic", "cidr_netmask", ...
と並んでいる順番を、
..., "cidr_netmask", "nic", ...
と反対にするだけでOKです。

修正後のスクリプトは、こんな感じです。

--------【haresources2cib.py】--------
...
"IPaddr": {"params": [
  "ip",
  "cidr_netmask",
  "nic",
  "broadcast",
  "iflabel",
  "lvs_support",
  "local_stop_script",
  "local_start_script",
  "ARP_INTERVAL_MS",
  "ARP_REPEAT",
  "ARP_BACKGROUND",
  "ARP_NETMASK"
], "time": ["5s", "5s"]},
  "IPaddr2": {"params": [
  "ip",
  "cidr_netmask",
  "nic",
  "broadcast",
  "iflabel",
  "lvs_support",
  "mac",
  "clusterip_hash",
  "arp_interval",
  "arp_count",
  "arp_bg",
  "arp_mac"
], "time": ["5s","5s"]},
...
--------

で、この状態で"cib.xml"を作成すると、今度は、
"cidr_netmask"も"nic"も正しい状態で作成されています。

--------【cib.xml】--------
<instance_attributes id="IPaddr2_5_inst_attr">
  <attributes>
    <nvpair id="IPaddr2_5_attr_0" name="ip" value="172.21.10.153"/>
    <nvpair id="IPaddr2_5_attr_1" name="cidr_netmask" value="24"/>
    <nvpair id="IPaddr2_5_attr_2" name="nic" value="eth1"/>
  </attributes>
</instance_attributes>
--------

最終的には、この辺の設定は、Puppetでできたら... と思ってます。

--------
http://www.suz-lab.com

0 コメント: