Ansibleでファイルのバックアップを作成する

Ansibleでファイルをバックアップしたいことがある。 失敗することを考えるとバックアップは一度だけ実行したい。 シェル上ならばcpするときに -n を指定すれば2回め移行は上書きされないことを保証できる。

       -n, --no-clobber
              do not overwrite an existing file (overrides a previous -i option)

Ansibleでも同じようにshellモジュールで実行すればよいという話もあるが、 可能な限りshellを避けるべきだと思う。 --diff で差分でないし。

そこでマニュアルとにらめっこして考えだしたのが以下となる。 http://docs.ansible.com/ansible/latest/copy_module.html

      copy:
        src: /path/to/src_file
        dest: /path/to/dst_file
        remote_src: yes
        force: no

remote でサーバ上のファイルを指定してバックアップできる。 force で上書きしないようにできる。