--- # Various ways users want to use binary data # Could integrate into individual modules but currently these don't all work. # Probably easier to see them all in a single block to know what we're testing. # When we can start testing v2 we should test that all of these work. # In v1: The following line will traceback if it's the first task in the role. # Does not traceback if it's the second or third etc task. - debug: msg="{{ utf8_simple_accents|b64decode}}" # Expected values of the written files - name: get checksums that we expect later files to have copy: src: from_playbook dest: "{{ remote_tmp_dir }}" - copy: src: b64_utf8 dest: "{{ remote_tmp_dir }}" - copy: src: b64_latin1 dest: "{{ remote_tmp_dir }}" - stat: path: "{{ remote_tmp_dir }}/from_playbook" register: from_playbook - stat: path: "{{ remote_tmp_dir }}/b64_utf8" register: b64_utf8 - stat: path: "{{ remote_tmp_dir }}/b64_latin1" register: b64_latin1 # Tests themselves - name: copy with utf-8 content in a playbook copy: content: "{{ simple_accents }}\n" dest: "{{ remote_tmp_dir }}/from_playbook.txt" - name: Check that copying utf-8 content matches stat: path: "{{ remote_tmp_dir }}/from_playbook.txt" register: results - assert: that: - 'results.stat.checksum == from_playbook.stat.checksum' - name: copy with utf8 in a base64 encoded string copy: content: "{{ utf8_simple_accents|b64decode }}\n" dest: "{{ remote_tmp_dir }}/b64_utf8.txt" - name: Check that utf8 in a base64 string matches stat: path: "{{ remote_tmp_dir }}/b64_utf8.txt" register: results - assert: that: - 'results.stat.checksum == b64_utf8.stat.checksum' - name: copy with latin1 in a base64 encoded string copy: content: "{{ latin1_simple_accents|b64decode }}\n" dest: "{{ remote_tmp_dir }}/b64_latin1.txt" - name: Check that latin1 in a base64 string matches stat: path: "{{ remote_tmp_dir }}/b64_latin1.txt" register: results - assert: that: - 'results.stat.checksum == b64_latin1.stat.checksum' # This one depends on being able to pass binary data through # Might be a while before we find a solution for this ignore_errors: True - name: Template with a unicode string from the playbook template: src: "from_playbook_template.j2" dest: "{{ remote_tmp_dir }}/from_playbook_template.txt" - name: Check that writing a template from a playbook var matches stat: path: "{{ remote_tmp_dir }}/from_playbook_template.txt" register: results - assert: that: - 'results.stat.checksum == from_playbook.stat.checksum' - name: Template with utf8 in a base64 encoded string template: src: "b64_utf8_template.j2" dest: "{{ remote_tmp_dir }}/b64_utf8_template.txt" - name: Check that writing a template from a base64 encoded utf8 string matches stat: path: "{{ remote_tmp_dir }}/b64_utf8_template.txt" register: results - assert: that: - 'results.stat.checksum == b64_utf8.stat.checksum' - name: Template with latin1 in a base64 encoded string template: src: "b64_latin1_template.j2" dest: "{{ remote_tmp_dir }}/b64_latin1_template.txt" - name: Check that writing a template from a base64 encoded latin1 string matches stat: path: "{{ remote_tmp_dir }}/b64_latin1_template.txt" register: results - assert: that: - 'results.stat.checksum == b64_latin1.stat.checksum' # This one depends on being able to pass binary data through # Might be a while before we find a solution for this ignore_errors: True # These might give garbled output but none of them should traceback - debug: var=simple_accents - debug: msg="{{ utf8_simple_accents|b64decode}}" - debug: msg="{{ latin1_simple_accents|b64decode}}"