nfsをマウントさせるときにサーバ上のmountのバージョンが古いとansibleのmountモジュールが使い物にならなかったのです。
ならば、commandモジュールでmountコマンドを叩こうとしたのですが、既にマウントされているときに実行してしまうとエラーになるのです。
(既にマウントされてるよって)
というわけでmountコマンドを叩く前にサーバ上のマウントポイントがマウントされているかを、
チェックしてマウントされてたら何もしない、されてなかったらマウントするみたいな感じのケースで書きますが、
応用はどうとでも聞くと思います。
※冪等性云々の話をするとcommandモジュールとかは使いたくないのですが致し方ないときだってあるのです。
mountコマンドの結果をレジスターに格納
1 2 3 |
- name: mount check command: "mount" register: result |
以降このresultの変数の中をみてく形です。
実際にmountするtask
1 2 3 |
- name: nfs mount command: "mount -t nfs 1.2.3.4:/nfs/exportpoint /tmp/mountpoint" when: "'/tmp/mountpoint' not in result.stdout" |
when
で実行するかを判断させてます。
最初に格納したresultのstdoutの中にmountコマンドの実行結果が格納されているので、
in
を使ってマウントポイントの文字列が含まれてるかをチェックしてます。
実際resultの中には色々な情報が入っているので必要に応じてdebugしてそのときに適したところを使って条件分岐できると思います。
いや、もちろんansibleにmountモジュールがあるんだからそれを使いたいのは山々なんですけどね。
どうしてもcommandに頼らないといけないときだってあると思うのでそんなときのtipsになっていただければと。
参考になるURL
http://qiita.com/szk3/items/29e827f90a543c764a5e(新規タブで開きます)
今日の一言
ファイルシステムの共有って便利ですよね。