Skip to content
This repository has been archived by the owner on Jun 24, 2021. It is now read-only.

Add jmespath and jinja2 precheck #802

Merged
merged 2 commits into from
Jul 2, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions roles/check_system_static/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,42 @@
fail:
msg: "It is not recommended to set vm.overcommit_memory to 2, set it to 0 or 1."
when: vm_overcommit_memory.stdout | int == 2

- name: Check ansible version
fail:
msg: "Stop if ansible version is too low, make sure that the Ansible version is 2.4.2 or later, otherwise a compatibility issue occurs. Current ansible version is {{ ansible_version.full }}"
when: ansible_version.full | version_compare('2.4.2', '<')

- name: Get if jmespath info[1]
shell: pip list | grep -i jmespath | wc -l
Copy link
Member

@sykp241095 sykp241095 Jul 2, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pip show <package> is more efficient.

and user jmespath_exist.rc == 0

Ref: https://pip.pypa.io/en/stable/reference/pip_show/

register: jmespath_exist

- name: Get if jinja2 exist[1]
shell: pip list | grep -i jinja2 | wc -l
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above.

But more, when there is a package named: jinja2-abc the shell command will succeed.

register: jinja2_exist

- name: Preflight check - Fail when jmespath or jinja2 doesn't exist
fail:
msg: "Jmespath or Jinja2 does not exist, Please run `pip install -r requirements.txt` to install."
when: jmespath_exist.stdout | int == 0 or jinja2_exist.stdout | int == 0

- name: Get jmespath info[2]
shell: pip show jmespath | grep Version |grep -v Metadata-Version
register: jmespath

- name: Get jmespath version
set_fact:
jmespath_version: "{{ jmespath.stdout_lines[0] | replace('Version: ', '') }}"

- name: Get jinja2 info[2]
shell: pip show jinja2 | grep Version |grep -v Metadata-Version
register: jinja2

- name: Get jinja2 version
set_fact:
jinja2_version: "{{ jinja2.stdout_lines[0] | replace('Version: ', '') }}"

- name: Preflight check - Fail when the versions of jmespath and jinja2 doesn't meet the requirements
fail:
msg: "Jmespath({{ jmespath_version }}) or jinja2({{ jinja2_version }}) version is too low, Please run `pip install --upgrade -r requirements.txt` to upgrade."
when: jmespath_version | version_compare('0.9.0', '<') or jinja2_version | version_compare('2.9.6', '<')