ansibleでcommand モジュールを使ってコマンドを実行する時は気を付けましょう

普通にcommandを使って、ユーザのパスワードを変更しようと思ったところ、
なぜか上手くいかない。

"changed" と返ってくるんだけど、かわってない。という現象に遭遇。

- name: change {{user_name}} password # set password for ftp access
  command: echo "{{user_password}}" | passwd --stdin "{{user_name}}"

色々悩んだあげく、
公式サイトで下記のような記述を発見。


commandモジュールはシェルを通して実行されないので、パイプやリダイレクトをコマンドで使う場合はshell モジュールを使ってね

これかぁぁぁ!
というわけで、シンプルにコマンドする場合は、shellをつかっとけってことでした。

- name: change {{user_name}} password # set password for ftp access
  shell: echo "{{user_password}}" | passwd --stdin "{{user_name}}"