2016年6月5日日曜日

Ansible の yum で name にドットが含まれていると応答が無くなる

Ansibleでyumモジュールを利用してパッケージをインストールすると
パッケージ名にドット「.」が含まれている場合にリモートからの応答が
無くなり、以降のタスクが実行できなくなりました。

ドットが含まれていることが原因ではなく、試用環境によるネットワークの制限が
影響している可能性が高いことがわかりました。
問題の切り分けがうまくできなかったと反省です。

yumモジュールでインストールするパッケージはwith_itemsで指定しており
例えば32bit版を指定するための .i686 などドット「.」を含むパッケージが
2つ続けてあると発生しました。

対応としてはドット「.」を含むパッケージをダブルクォーテーション「"」で
囲むことでyumモジュールでのインストールは成功しました。

これまでドット「.」を含むパッケージは1つありましたが、問題は
発生していませんでした。
今回追加したパッケージ名にはドット「.」が含まれており、2つ続く
書き方にしたところ応答が無くなったのです。
# 応答が無くなる書き方
  - xxx.i686
  - yyy.zzz
# 動作した書き方
  - "xxx.i686"
  - "yyy.zzz"
2回続けてリモートからの応答がなくなったので直接リモートにログインし
ログを確認したところ、yum.logには追加したパッケージのインストールの
履歴はありましたが、それ以降インストールの履歴はありませんでした。
topでコマンドの実行を監視したところ確かにyumが実行されていることは
確認できましたが、何故かyum.logに残っている追加したパッケージ以降の
yumの実行を確認することができませんでした。

何かしらエラーが発生したのでは?と色んなログを見てみましたが原因に
なるようなログは見つからず。
しかもAnsibleがリモートで実行もされていませんでした。
エラーとして出力されていれば、解決策を探すこともできたのですが
何も出力されていなかったので、今回対応した方法が付け焼刃のような
感じで不安が残ります。

Ansibleのバージョン:1.9