Pulling the most recent script/file/asset from a remote host may be preferable, but you would like to provide a fallback to a local file just in case the remote pull fails.
This is relatively easy to do with Ansible by allowing the remote pull to ‘ignore_errors’ and then doing a local file copy if an error was sensed. Here is a snippet from playbook-try-url-first.yaml.
- name: try file from github first get_url: url: https://raw.githubusercontent.com/fabianlee/blogcode/master/README.md dest: "/tmp/README.md" mode: 0666 ignore_errors: true register: gitpull_result - debug: msg="{{gitpull_result}}" - name: uses local file when github not available copy: src: "{{playbook_dir}}/local-README.md" dest: "/tmp/README.md" when: gitpull_result.failed
The ‘get_url’ attempts to pull a file from github (with a lenient ignore_errors), and puts the result in ‘gitpull_results’. If this failed then a local file copy is allowed to execute.
If this copy task were part of a role, the ‘src’ attribute would not need to specify any path prefix as long as the local file was located in the standard ‘files’ directory.
REFERENCES
fabianlee github, playbook example