sorry false alarm. my backup_archivelogs.sh file was completely off



> On 09/14/2022 4:03 PM CEST dulhaver via Ansible Project 
> <[email protected]> wrote:
> 
>  
> I am trying to use template module to send 2 shell scripts to a remote. 
> 
> ### TASK 
> ##################################################################################################
> 
>   - name: configure postgres - template backup scripts
>     ansible.builtin.template:
>       src: "{{ item }}.j2"
>       dest: "{{ postgres_base }}/tools/backup/{{ item }}"
>       backup: yes
>       owner: postgres
>       group: postgres
>       mode: 0600
>     become: yes
>     loop:
>       - backup_postgres10.sh
>       - backup_archivelogs.sh
> ### TASK 
> ##################################################################################################
> 
> while the first item is being templated out fine the second fails with a 
> "Missing end of comment tag. String: #!/bin/bash" error. With 0 experience 
> with jinja2 I can not make any sense of what I found in the documentation in 
> that respect.
> Content of both files it 100% original bash script content.
> 
> 
> ### backup_archivelogs.sh.j2 
> #############################################################################
> 
> #!/bin/bash
> #
> # $Header$
> #
> # backup postgres archivelogs to TSM
> 
> # source postgres env
> source /opt/db/postgres/bin/.pg.env
> 
> #set -x
> 
> # write logs to backup
> # do an incremental backup of the postgres archive/wal logs
> # take a bunch of 20 logs per dsmc incr call
> cd $PGARCH
> while mapfile -t -n 20 ARCHIVE_LOGS && ((${#ARCHIVE_LOGS[@]}))
> do
>         echo ">>> backing up: ${ARCHIVE_LOGS[@]}"
>         sudo /opt/tivoli/tsm/client/ba/bin/dsmc incr "${ARCHIVE_LOGS[@]}"
>         # check return code, if 0/true then purge logfile
>         RET=$?
>         if [ $RET -eq 0 ]; then
>                 echo
>                 echo ">>> TSM incremental backup successful, purging archive 
> logs up to ${ARCHIVE_LOGS[-1]} <<<"
>                 rm "${ARCHIVE_LOGS[@]}"
>         fi
>         sleep 2
> done < <(ls -1 0*)
> 
> 
> 
> ### OUTPUT 
> ################################################################################################
> 
> TASK [configure postgres - template backup scripts] 
> ********************************************************************
> task path: 
> /home/username/repos/ansible/open_source/postgres_create_service/postgres_create_service.yml:83
> <server.intern> ESTABLISH SSH CONNECTION FOR USER: None
> <server.intern> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s 
> -o KbdInteractiveAuthentication=no -o 
> PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o 
> PasswordAuthentication=no -o ConnectTimeout=10 -o 
> 'ControlPath="/home/username/.ansible/cp/8ca9f05e1f"' server.intern '/bin/sh 
> -c '"'"'echo ~ && sleep 0'"'"''
> <server.intern> (0, b'/home/username\n', b'')
> <server.intern> ESTABLISH SSH CONNECTION FOR USER: None
> <server.intern> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s 
> -o KbdInteractiveAuthentication=no -o 
> PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o 
> PasswordAuthentication=no -o ConnectTimeout=10 -o 
> 'ControlPath="/home/username/.ansible/cp/8ca9f05e1f"' server.intern '/bin/sh 
> -c '"'"'( umask 77 && mkdir -p "` echo /var/tmp `"&& mkdir "` echo 
> /var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610 `" && echo 
> ansible-tmp-1663162681.3683012-2675848-43258002595610="` echo 
> /var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610 `" ) && sleep 
> 0'"'"''
> <server.intern> (0, 
> b'ansible-tmp-1663162681.3683012-2675848-43258002595610=/var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610\n',
>  b'')
> Using module file /usr/lib/python3.8/site-packages/ansible/modules/stat.py
> <server.intern> PUT 
> /home/username/.ansible/tmp/ansible-local-2675679n2q7xy3g/tmpwcgv_g_c TO 
> /var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610/AnsiballZ_stat.py
> <server.intern> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o 
> ControlPersist=60s -o KbdInteractiveAuthentication=no -o 
> PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o 
> PasswordAuthentication=no -o ConnectTimeout=10 -o 
> 'ControlPath="/home/username/.ansible/cp/8ca9f05e1f"' '[server.intern]'
> <server.intern> (0, b'sftp> put 
> /home/username/.ansible/tmp/ansible-local-2675679n2q7xy3g/tmpwcgv_g_c 
> /var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610/AnsiballZ_stat.py\n',
>  b'')
> <server.intern> ESTABLISH SSH CONNECTION FOR USER: None
> <server.intern> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s 
> -o KbdInteractiveAuthentication=no -o 
> PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o 
> PasswordAuthentication=no -o ConnectTimeout=10 -o 
> 'ControlPath="/home/username/.ansible/cp/8ca9f05e1f"' server.intern '/bin/sh 
> -c '"'"'setfacl -m u:postgres:r-x 
> /var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610/ 
> /var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610/AnsiballZ_stat.py
>  && sleep 0'"'"''
> <server.intern> (0, b'', b'')
> <server.intern> ESTABLISH SSH CONNECTION FOR USER: None
> <server.intern> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s 
> -o KbdInteractiveAuthentication=no -o 
> PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o 
> PasswordAuthentication=no -o ConnectTimeout=10 -o 
> 'ControlPath="/home/username/.ansible/cp/8ca9f05e1f"' -tt server.intern 
> '/bin/sh -c '"'"'sudo -H -S -n  -u postgres /bin/sh -c '"'"'"'"'"'"'"'"'echo 
> BECOME-SUCCESS-ztbiuccpcrwstltpesmvsnlefldjhueu ; 
> /usr/libexec/platform-python 
> /var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610/AnsiballZ_stat.py'"'"'"'"'"'"'"'"'
>  && sleep 0'"'"''
> Escalation succeeded
> <server.intern> (0, b'\r\n\r\n{"changed": false, "stat": {"exists": true, 
> "path": "/opt/db/postgres/tools/backup/backup_postgres10.sh", "mode": "0600", 
> "isdir": false, "ischr": false, "isblk": false, "isreg": true, "isfifo": 
> false, "islnk": false, "issock": false, "uid": 1001, "gid": 1001, "size": 
> 9567, "inode": 6553734, "dev": 64772, "nlink": 1, "atime": 1663162307.594887, 
> "mtime": 1662108268.8151002, "ctime": 1662108269.4020917, "wusr": true, 
> "rusr": true, "xusr": false, "wgrp": false, "rgrp": false, "xgrp": false, 
> "woth": false, "roth": false, "xoth": false, "isuid": false, "isgid": false, 
> "blocks": 24, "block_size": 4096, "device_type": 0, "readable": true, 
> "writeable": true, "executable": false, "pw_name": "postgres", "gr_name": 
> "postgres", "checksum": "c25840eb364bd104b796679eef8082ad6887bae3", 
> "mimetype": "text/x-shellscript", "charset": "us-ascii", "version": 
> "3998925608", "attributes": [], "attr_flags": ""}, "invocation": 
> {"module_args": {"path": "/opt/db/postgres/tools/ba
 ck
>  up/backup_postgres10.sh", "follow": false, "get_checksum": true, 
> "checksum_algorithm": "sha1", "get_md5": false, "get_mime": true, 
> "get_attributes": true}}}\r\n', b'Shared connection to server.intern 
> closed.\r\n')
> Using module file /usr/lib/python3.8/site-packages/ansible/modules/file.py
> <server.intern> PUT 
> /home/username/.ansible/tmp/ansible-local-2675679n2q7xy3g/tmpafre2fjl TO 
> /var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610/AnsiballZ_file.py
> <server.intern> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o 
> ControlPersist=60s -o KbdInteractiveAuthentication=no -o 
> PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o 
> PasswordAuthentication=no -o ConnectTimeout=10 -o 
> 'ControlPath="/home/username/.ansible/cp/8ca9f05e1f"' '[server.intern]'
> <server.intern> (0, b'sftp> put 
> /home/username/.ansible/tmp/ansible-local-2675679n2q7xy3g/tmpafre2fjl 
> /var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610/AnsiballZ_file.py\n',
>  b'')
> <server.intern> ESTABLISH SSH CONNECTION FOR USER: None
> <server.intern> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s 
> -o KbdInteractiveAuthentication=no -o 
> PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o 
> PasswordAuthentication=no -o ConnectTimeout=10 -o 
> 'ControlPath="/home/username/.ansible/cp/8ca9f05e1f"' server.intern '/bin/sh 
> -c '"'"'setfacl -m u:postgres:r-x 
> /var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610/ 
> /var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610/AnsiballZ_file.py
>  && sleep 0'"'"''
> <server.intern> (0, b'', b'')
> <server.intern> ESTABLISH SSH CONNECTION FOR USER: None
> <server.intern> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s 
> -o KbdInteractiveAuthentication=no -o 
> PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o 
> PasswordAuthentication=no -o ConnectTimeout=10 -o 
> 'ControlPath="/home/username/.ansible/cp/8ca9f05e1f"' -tt server.intern 
> '/bin/sh -c '"'"'sudo -H -S -n  -u postgres /bin/sh -c '"'"'"'"'"'"'"'"'echo 
> BECOME-SUCCESS-qttckqlufxsixkcjmiiesbbvfedjlfuy ; 
> /usr/libexec/platform-python 
> /var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610/AnsiballZ_file.py'"'"'"'"'"'"'"'"'
>  && sleep 0'"'"''
> Escalation succeeded
> <server.intern> (0, b'\r\n{"path": 
> "/opt/db/postgres/tools/backup/backup_postgres10.sh", "changed": false, 
> "diff": {"before": {"path": 
> "/opt/db/postgres/tools/backup/backup_postgres10.sh"}, "after": {"path": 
> "/opt/db/postgres/tools/backup/backup_postgres10.sh"}}, "uid": 1001, "gid": 
> 1001, "owner": "postgres", "group": "postgres", "mode": "0600", "state": 
> "file", "secontext": "system_u:object_r:usr_t:s0", "size": 9567, 
> "invocation": {"module_args": {"owner": "postgres", "group": "postgres", 
> "mode": 384, "dest": "/opt/db/postgres/tools/backup/backup_postgres10.sh", 
> "_original_basename": "backup_postgres10.sh.j2", "recurse": false, "state": 
> "file", "path": "/opt/db/postgres/tools/backup/backup_postgres10.sh", 
> "force": false, "follow": true, "modification_time_format": "%Y%m%d%H%M.%S", 
> "access_time_format": "%Y%m%d%H%M.%S", "unsafe_writes": false, "_diff_peek": 
> null, "src": null, "modification_time": null, "access_time": null, "seuser": 
> null, "serole": null, "selevel": null, "setype": 
 nu
>  ll, "attributes": null}}}\r\n', b'Shared connection to server.intern 
> closed.\r\n')
> <server.intern> ESTABLISH SSH CONNECTION FOR USER: None
> <server.intern> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s 
> -o KbdInteractiveAuthentication=no -o 
> PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o 
> PasswordAuthentication=no -o ConnectTimeout=10 -o 
> 'ControlPath="/home/username/.ansible/cp/8ca9f05e1f"' server.intern '/bin/sh 
> -c '"'"'rm -f -r 
> /var/tmp/ansible-tmp-1663162681.3683012-2675848-43258002595610/ > /dev/null 
> 2>&1 && sleep 0'"'"''
> <server.intern> (0, b'', b'')
> ok: [server.intern] => (item=backup_postgres10.sh) => changed=false
>   ansible_loop_var: item
>   checksum: c25840eb364bd104b796679eef8082ad6887bae3
>   dest: /opt/db/postgres/tools/backup/backup_postgres10.sh
>   diff:
>     after:
>       path: /opt/db/postgres/tools/backup/backup_postgres10.sh
>     before:
>       path: /opt/db/postgres/tools/backup/backup_postgres10.sh
>   gid: 1001
>   group: postgres
>   invocation:
>     module_args:
>       _diff_peek: null
>       _original_basename: backup_postgres10.sh.j2
>       access_time: null
>       access_time_format: '%Y%m%d%H%M.%S'
>       attributes: null
>       dest: /opt/db/postgres/tools/backup/backup_postgres10.sh
>       follow: true
>       force: false
>       group: postgres
>       mode: 384
>       modification_time: null
>       modification_time_format: '%Y%m%d%H%M.%S'
>       owner: postgres
>       path: /opt/db/postgres/tools/backup/backup_postgres10.sh
>       recurse: false
>       selevel: null
>       serole: null
>       setype: null
>       seuser: null
>       src: null
>       state: file
>       unsafe_writes: false
>   item: backup_postgres10.sh
>   mode: '0600'
>   owner: postgres
>   path: /opt/db/postgres/tools/backup/backup_postgres10.sh
>   secontext: system_u:object_r:usr_t:s0
>   size: 9567
>   state: file
>   uid: 1001
> <server.intern> ESTABLISH SSH CONNECTION FOR USER: None
> <server.intern> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s 
> -o KbdInteractiveAuthentication=no -o 
> PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o 
> PasswordAuthentication=no -o ConnectTimeout=10 -o 
> 'ControlPath="/home/username/.ansible/cp/8ca9f05e1f"' server.intern '/bin/sh 
> -c '"'"'echo ~ && sleep 0'"'"''
> <server.intern> (0, b'/home/username\n', b'')
> <server.intern> ESTABLISH SSH CONNECTION FOR USER: None
> <server.intern> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s 
> -o KbdInteractiveAuthentication=no -o 
> PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o 
> PasswordAuthentication=no -o ConnectTimeout=10 -o 
> 'ControlPath="/home/username/.ansible/cp/8ca9f05e1f"' server.intern '/bin/sh 
> -c '"'"'( umask 77 && mkdir -p "` echo /var/tmp `"&& mkdir "` echo 
> /var/tmp/ansible-tmp-1663162682.168117-2675848-28324059801519 `" && echo 
> ansible-tmp-1663162682.168117-2675848-28324059801519="` echo 
> /var/tmp/ansible-tmp-1663162682.168117-2675848-28324059801519 `" ) && sleep 
> 0'"'"''
> <server.intern> (0, 
> b'ansible-tmp-1663162682.168117-2675848-28324059801519=/var/tmp/ansible-tmp-1663162682.168117-2675848-28324059801519\n',
>  b'')
> <server.intern> ESTABLISH SSH CONNECTION FOR USER: None
> <server.intern> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s 
> -o KbdInteractiveAuthentication=no -o 
> PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o 
> PasswordAuthentication=no -o ConnectTimeout=10 -o 
> 'ControlPath="/home/username/.ansible/cp/8ca9f05e1f"' server.intern '/bin/sh 
> -c '"'"'rm -f -r 
> /var/tmp/ansible-tmp-1663162682.168117-2675848-28324059801519/ > /dev/null 
> 2>&1 && sleep 0'"'"''
> <server.intern> (0, b'', b'')
> The full traceback is:
> Traceback (most recent call last):
>   File "/usr/lib/python3.8/site-packages/ansible/template/__init__.py", line 
> 1118, in do_template
>     t = myenv.from_string(data)
>   File "/usr/lib/python3.8/site-packages/jinja2/environment.py", line 880, in 
> from_string
>     return cls.from_code(self, self.compile(source), globals, None)
>   File "/usr/lib/python3.8/site-packages/jinja2/environment.py", line 591, in 
> compile
>     self.handle_exception(exc_info, source_hint=source_hint)
>   File "/usr/lib/python3.8/site-packages/jinja2/environment.py", line 780, in 
> handle_exception
>     reraise(exc_type, exc_value, tb)
>   File "/usr/lib/python3.8/site-packages/jinja2/_compat.py", line 37, in 
> reraise
>     raise value.with_traceback(tb)
>   File "<unknown>", line 17, in <module>
>   File "/usr/lib/python3.8/site-packages/jinja2/environment.py", line 497, in 
> _parse
>     return Parser(self, source, name, encode_filename(filename)).parse()
>   File "/usr/lib/python3.8/site-packages/jinja2/parser.py", line 901, in parse
>     result = nodes.Template(self.subparse(), lineno=1)
>   File "/usr/lib/python3.8/site-packages/jinja2/parser.py", line 872, in 
> subparse
>     next(self.stream)
>   File "/usr/lib/python3.8/site-packages/jinja2/lexer.py", line 359, in 
> __next__
>     self.current = next(self._iter)
>   File "/usr/lib/python3.8/site-packages/jinja2/lexer.py", line 562, in wrap
>     for lineno, token, value in stream:
>   File "/usr/lib/python3.8/site-packages/jinja2/lexer.py", line 646, in 
> tokeniter
>     raise token(lineno, filename)
>   File "/usr/lib/python3.8/site-packages/jinja2/lexer.py", line 229, in 
> __call__
>     raise self.error_class(self.message, lineno, filename)
> jinja2.exceptions.TemplateSyntaxError: Missing end of comment tag
> 
> During handling of the above exception, another exception occurred:
> 
> Traceback (most recent call last):
>   File "/usr/lib/python3.8/site-packages/ansible/plugins/action/template.py", 
> line 150, in run
>     resultant = templar.do_template(template_data, 
> preserve_trailing_newlines=True, escape_backslashes=False)
>   File "/usr/lib/python3.8/site-packages/ansible/template/__init__.py", line 
> 1120, in do_template
>     raise AnsibleError("template error while templating string: %s. String: 
> %s" % (to_native(e), to_native(data)))
> ansible.errors.AnsibleError: template error while templating string: Missing 
> end of comment tag. String: #!/bin/bash
> #
> # $Header$
> #
> # backup postgres archivelogs to TSM
> 
> # source postgres env
> source /opt/db/postgres/bin/.pg.env
> 
> #set -x
> 
> # write logs to backup
> # do an incremental backup of the postgres archive/wal logs
> # take a bunch of 20 logs per dsmc incr call
> cd $PGARCH
> while mapfile -t -n 20 ARCHIVE_LOGS && ((${#ARCHIVE_LOGS[@]}))
> do
>         echo ">>> backing up: ${ARCHIVE_LOGS[@]}"
>         sudo /opt/tivoli/tsm/client/ba/bin/dsmc incr "${ARCHIVE_LOGS[@]}"
>         # check return code, if 0/true then purge logfile
>         RET=$?
>         if [ $RET -eq 0 ]; then
>                 echo
>                 echo ">>> TSM incremental backup successful, purging archive 
> logs up to ${ARCHIVE_LOGS[-1]} <<<"
>                 rm "${ARCHIVE_LOGS[@]}"
>         fi
>         sleep 2
> done < <(ls -1 0*)
> 
> 
> failed: [server.intern] (item=backup_archivelogs.sh) => changed=false
>   ansible_loop_var: item
>   item: backup_archivelogs.sh
>   msg: |-
>     AnsibleError: template error while templating string: Missing end of 
> comment tag. String: #!/bin/bash
>     #
>     # $Header$
>     #
>     # backup postgres archivelogs to TSM
> 
>     # source postgres env
>     source /opt/db/postgres/bin/.pg.env
> 
>     #set -x
> 
>     # write logs to backup
>     # do an incremental backup of the postgres archive/wal logs
>     # take a bunch of 20 logs per dsmc incr call
>     cd $PGARCH
>     while mapfile -t -n 20 ARCHIVE_LOGS && ((${#ARCHIVE_LOGS[@]}))
>     do
>             echo ">>> backing up: ${ARCHIVE_LOGS[@]}"
>             sudo /opt/tivoli/tsm/client/ba/bin/dsmc incr "${ARCHIVE_LOGS[@]}"
>             # check return code, if 0/true then purge logfile
>             RET=$?
>             if [ $RET -eq 0 ]; then
>                     echo
>                     echo ">>> TSM incremental backup successful, purging 
> archive logs up to ${ARCHIVE_LOGS[-1]} <<<"
>                     rm "${ARCHIVE_LOGS[@]}"
>             fi
>             sleep 2
>     done < <(ls -1 0*)
> 
> ############################################################################################
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/ansible-project/1421900087.383940.1663164196876%40office.mailbox.org.

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/479103417.454909.1663235906233%40office.mailbox.org.

Reply via email to