先日の質問の続きです。
複数ファイルについてログのS3へのコピーと削除(/dev/nullで上書き)を行う部分で、
その前にstatによる存在チェックを行い、
exists:true
であるもののみに処理を行うように改良したいと考えています。
- hosts: hoge vars: logs: - { path: '/path/to/log', logname: 'foo.log', rotation: '3', size: '10M' } - { path: '/path/to/log', logname: 'bar.log', rotation: '3', size: '10M' } - { path: '/path/to/log', logname: 'baz.log', rotation: '5', size: '100M' } tasks: - name: Check if log exists stat: path: "{{ item.path }}/{{ item.logname }}" with_items: "{{ logs }}" register: existence tags: checkfiles - debug: var=existence tags: checkfiles - name: Backup existing log to S3 with compression shell: gzip -c {{ item.path }}/{{ item.logname }} | aws s3 - s3://bucketname/{{ ansible_hostname }}/{{ item.logname }}.gz when: existence.stat.exists with_items: "{{ logs }}" ignore_errors: yes tags: backup_logs - name: Delete logs shell: cat /dev/null > {{ item.path }}/{{ item.logname }} when: existence.stat.exists with_items: "{{ logs }}" tags: delete_logs
というように、statsの結果をregisterで変数に入れてその後の処理で使おうとしたのですが、上記だとエラーになります。
TASK [Backup existing log to S3 with compression] ****************************** fatal: [xxx.xxx.xxx.xxx]: FAILED! => {"failed": true, "msg": "The conditional check 'existence.stat.exists == True' failed. The error was: error while evaluating conditional (existence.stat.exists == True): 'dict object' has no attribute 'stat'\n\nThe error appears to have been in '/home/foo/logrotate.yml': line 16, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n tags: checkfiles\n - name: Backup existing log to S3 with compression\n ^ here\n"} ...ignoring TASK [Delete logs] ************************************************************* fatal: [xxx.xxx.xxx.xxx]: FAILED! => {"failed": true, "msg": "The conditional check 'existence.stat.exists == True' failed. The error was: error while evaluating conditional (existence.stat.exists == True): 'dict object' has no attribute 'stat'\n\nThe error appears to have been in '/home/foo/logrotate.yml': line 23, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n tags: backuplogs\n - name: Delete logs\n ^ here\n"}
※一部内容を伏せるなどしています。
実現したいことはタイトルの通りです。
whenとwith_itemの記述順を入れ替えたりもしましたが、変わらずでした。
whenの指定が誤っているのか、そもそもこういった指定の仕方は不可能なのか、自分にはちょっとわかりませんでした。
どなたかご教示いただけますと幸いです。
参考
statモジュール
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/27 10:35