Hello Team,
When i was checking for string comparison in failed_when condition.
the ansible task does not give any output if search is not found. but it will print stdout variable as stdout: “\e[0m”
But when i try to compare my ansible playbook gives error.
I tried two ways in codition:-
failed_when: “‘{{\e[0m}}’ in pulp.results.[0].stdout”
Error which i got:-
TASK [mobi_ansible_role_pulp : searching the rpm into pulp repo] ************************************************
task path: /etc/ansible/roles/mobi_ansible_role_pulp/tasks/pulp.yaml:4
Thursday 04 April 2019 06:55:59 +0000 (0:00:02.078) 0:00:06.052 ********
fatal: [pulp]: FAILED! =>
msg: “The conditional check ‘’{{\e[0m}}’ in pulp.results.[0].stdout’ failed. The error was: template error while templating string: unexpected char u’\x1b’ at 3. String: ‘{{\e[0m}}’ in pulp.results.[0].stdout”
2)failed_when: pulp.results.[0].stdout == “{{\e[0m}}”
fatal: [inplp01p2.infra.smf1.mobitv]: FAILED! =>
msg: |-
The conditional check ‘pulp.results.[0].stdout == “{{\e[0m}}”’ failed. The error was: unexpected char u’\’ at 30
line 1
task:-
or is there way we can compare empty string.
Gentle reminder, is anyone can help on this
sivel
(sivel)
April 5, 2019, 7:45pm
4
You would need to convert that value from a shell escape sequence, to a python escape sequence, for consumption by PyYAML.
The easiest way to express this will likely be:
name: searching the rpm into pulp repo
shell: pulp-admin rpm repo content rpm --repo-id=mobi-snapshots --match ‘filename={{ item }}’
with_items: “{{ rpmname | default( ) }}”
register: pulp
when: rpmsearch is defined
failed_when: escape in pulp.results.[0].stdout
vars:
escape: “\u001b[0m”
Hello Matt,
i tried with task
name: searching the rpm into {{ reponame }} repo
shell: pulp-admin rpm repo content rpm --repo-id={{reponame}} --match ‘filename={{ item }}’
with_items: “{{ rpmname | default( ) }}”
register: pulp
when: search is defined
failed_when: escape in pulp.results.[0].stdout
vars:
escape: “\u001b[0m”
But get jinja templating error as below:-
TASK [mobi_ansible_role_pulp : searching the rpm into infra] ******************************
task path: /etc/ansible/roles/mobi_ansible_role_pulp/tasks/pulp.yaml:5
Saturday 06 April 2019 09:55:41 +0000 (0:00:02.011) 0:00:02.434 ********
fatal: [node]: FAILED! =>
msg: ‘The conditional check ‘‘escape in pulp.results.[0].stdout’’ failed. The error was: template error while templating string: expected name or number. String: {% if escape in pulp.results.[0].stdout %} True {% else %} False {% endif %}’
I tried use following syntax also:-
name: searching the rpm into {{ reponame }} repo
shell: pulp-admin rpm repo content rpm --repo-id={{reponame}} --match ‘filename={{ item }}’
with_items: “{{ rpmname | default( ) }}”
register: pulp
when: search is defined
failed_when: ‘escape in pulp.results.[0].stdout’
vars:
escape: “\u001b[0m”
TASK [mobi_ansible_role_pulp : searching the rpm into infra] ******************************
task path: /etc/ansible/roles/mobi_ansible_role_pulp/tasks/pulp.yaml:5
Saturday 06 April 2019 09:56:37 +0000 (0:00:02.166) 0:00:02.655 ********
fatal: [node]: FAILED! =>
msg: ‘The conditional check ‘‘escape in pulp.results.[0].stdout’’ failed. The error was: template error while templating string: expected name or number. String: {% if escape in pulp.results.[0].stdout %} True {% else %} False {% endif %}’
Any Help will be much appreciated…
Hello Matt,
I was able to successfully do this task by following the instructions.
Thanks for matt to give some logic.
name: searching the rpm into {{ reponame }} repo
shell: pulp-admin rpm repo content rpm --repo-id={{reponame}} --match ‘filename={{ item }}’
loop: “{{ rpmname | default( ) }}”
register: pulp
when: search is defined
failed_when: pulp.stdout == “\u001b[0m”
Result:-
TASK [mobi_ansible_role_pulp : searching the rpm into infra] ******************************
task path: /etc/ansible/roles/mobi_ansible_role_pulp/tasks/pulp.yaml:5
Saturday 06 April 2019 10:07:15 +0000 (0:00:02.298) 0:00:02.709 ********
failed: [node] (item=GoIP-devel-1.6.11-201711302323.798cb6f.el7.centos.x86_64.rpm) => changed=true
cmd: pulp-admin rpm repo content rpm --repo-id=mobi-infra.smf1.mobitv --match ‘filename=GoIP-devel-1.6.11-201711302323.798cb6f.el7.centos.x86_64.rpm’
delta: ‘0:00:00.781775’
end: ‘2019-04-06 10:07:17.178794’
failed_when_result: true
item: GoIP-devel-1.6.11-201711302323.798cb6f.el7.centos.x86_64.rpm
rc: 0
start: ‘2019-04-06 10:07:16.397019’
stderr: ‘’
stderr_lines:
stdout: “\e[0m”
stdout_lines:
This issue is resolved now.