ansibleコマンドを使って各ホストにコマンドを流すやり方

ちょっとしたTipsでしかないけれど、ansibleのinventory fileに登録されているホストにコマンド流したいときが割とあり、多用しているのでメモとして残しておく。

ansible -m shell -a "<command>" -i <inventory file> <host-pattern> [options]

より具体的にすると、たとえばこんな感じになる。(ファイル名などは変更している)

ansible -m shell -a "ls -l /etc/td-agent/conf.d/" -i development.ini api* -u taku -b -v

これは、td-agentの設定ファイルが各ホストで違う場合、何が違うのか知りたくなったりしたときに使った。

inventory file内で適切にグループやホストが書かれてさえすれば、host-patternの箇所を変更すれば自分の望みのホストの状況調査ができるし、commandの箇所を変更すれば知りたい情報を望みの形で出せるようになる。

シェル芸みたいなことを駆使できる人なら -a “<command>” のcommandの箇所をいじくり回して自由自在に活用できるのではないだろうかと思ったりしている。

だいたい Ctl + R をしてシェルの履歴から引っ張ってくるのだが、たまに ansible -m fetch などして中々履歴が出なかったりすることがあり、コマンドの詳細を忘れがちだったので一旦ここにメモしておきたくて書いた。