I overpaid the IRS. While package abstracts package managers to ease dealing with multiple distributions, package name often differs for the same software. Instead of using Ansible commands individually to remotely configure computers from the command line, you can configure entire complex environments by passing a script to one or more systems. The apt-mark method works with both installed and uninstalled packages. The default auto will use existing facts or try to autodetect it. I use vagrant to create VMs. Ansible can easily run and configure Unix-like systems as well as Windows systems to provide infrastructure as code. The easiest way to check ansible version is using ansible -version command. As such, we scored ansible-parallel popularity level to be Recognized. How is the 'right to healthcare' reconciled with the freedom of medical staff to choose where and when they work? How can I check for an installed packaged version on multiple linux hosts? Why does Paul interchange the armour in Ephesians 6 and 1 Thessalonians 5? DevOps, cloud and infrastructure engineer. I just need to validate comparing for all the packages in a loop that I am updating patches for, Your email address will not be published. In what context did Garak (ST:DS9) speak of a lie between two truths? Repository (Sources) Ansible: check if a package is installed on a remote system # ansible # linux # devops Have a self-written letsencrypt role (see the Prometheus: RTFM blog monitoring set up with Ansible - Grafana, Loki, and promtail post). Based on this question I see that ansible has a ansible_distribution_version but this playbook does not show how I would simply . Connect and share knowledge within a single location that is structured and easy to search. For checking the package version I tried with the following playbook but Ansible doesn't like the syntax: That would display a list consisting of server name and package version. Learn more about Stack Overflow the company, and our products. Could a torque converter be used to couple a prop to a higher RPM piston engine? dnf: name: sysstat state: latest. How can I implement ansible with per-host passwords, securely? I'd think there would be a way to suppress the "Consider using" warning message somehow for a specific section in the playbook Best way to check for installed yum package/rpm version in Ansible and use it. Now try it with: set_fact: current_version: "1.58.2" latest_version: "1.100.2" I've been trying to find a version() fix for this all afternoon. The parameters within the module add a lot of flexibility. Issue Tracker As is often the case with extensible frameworks, Ansible has limited use on its own, with its real power dwelling in its many modules. The Ansible package is a 'batteries included' package that brings in ansible-core and a curated set of collections. Installing and Upgrading Ansible with *pip | by Alex Duncan | Clarusway | Medium Sign In Alex Duncan 819 Followers Human, AWS/DevOps Expert, Writer, Reader, Researcher, Traveler Follow More from. I don't have enough reputation here on devops to cast vote. And add a conditional check with when using the ansible_facts.packages array: Templates let you quickly answer FAQs or store snippets for re-use. Is it possible to gather it using facts or something assimilated? Ansible check package installed Ansible file and folder [vagrant@ansible_controller ~]$ tree . The win_package module is the place to be. ): # apt-cache show package | grep Version Version 1.0 Version 0.9-2squeeze1. What Ansible does in cases there's a conflict between OS version and some software Ansible manages? By clicking Post Your Answer, you agree to our terms of service, privacy policy and cookie policy. document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() ); Your email address will not be published. Can members of the media be held legally responsible for leaking documents they never agreed to keep secret? I am reviewing a very bad paper - do I have to be nice? This modified text is an extract of the original, How To Create A DreamHost Cloud Server From An Ansible Playbook, Gather informations about our new instance, Gather informations from OpenStack GUI to configure Ansible, Write the ansible playbook to create the instance. Site design / logo 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA. The Ansible package is a 'batteries included' package that brings in ansible-core and a curated set of collections. This option controls how the module queries the package managers on the system. I don't see anything wrong if it meets your current needs. I looked up information for the yum module on the Ansible site, but I don't really want to install/update/delete anything. It's the exact same thing, but from viewpoint of Ansible it calls which, not yum which avoids the warning. To ensure apt can find the proper source and download any dependent packages run apt update. ansible ansible.cfg hosts check-package.yml We use the ansible module package_facts Ansible script Ansible uses semantic versioning (for example, Ansible 5.6.0). Ansible is a radically simple IT automation engine that automates cloud provisioning, configuration management, application deployment, intra-service orchestration, and many other IT needs. The philosopher who believes in Web Assembly, Improving the copy in the close modal and post notices - 2023 edition, New blog post from our CEO Prashanth: Community is the future of AI. module documentation and to avoid conflicting with other collections that may have I love technology and especially Devops Skill such as Docker, vagrant, git so forth. For Debian-based systems python-apt package must be installed on targeted hosts. If that situation has changed maybe we can put a short-circuit bit in there to attempt the right away without the added validation check in a / and then can fall back to the current implementation if that's not successful. Sign up with Google You did not mention it but I assume you do know how to get the version from your database for comparison. Documentation Report; COMPONENT NAME. Check whether a package called foobar is installed, Protecting sensitive data with Ansible vault, Virtualization and Containerization Guides, Collections in the Cloudscale_ch Namespace, Collections in the Junipernetworks Namespace, Collections in the Netapp_eseries Namespace, Collections in the T_systems_mms Namespace, Controlling how Ansible behaves: precedence rules, ansible.builtin.package_facts module Package information as facts. Connect and share knowledge within a single location that is structured and easy to search. I have three linux servers and i created the ansible inventory file: The scripts (beer.py, vodka.py and whisky.py) print their versions in format like: "/home/beer.py 1.0.0". Required fields are marked *. [0-2]: host installed at the beginning of December 2021: When Ansible connects to these hosts it will automatically run these scripts and use them as facts, just like any other system property. Ansible zypper update all packages Zypper is a command line package manager for SUSE and OpenSUSE Linux. The best answers are voted up and rise to the top, Not the answer you're looking for? To get rid of the warning you can simply do a which: shell: `which yum` list installed custom-rpm | grep custom-rpm | awk ' {print $2}' | cut -d'-' -f1. Returned: when operating system level package manager is specified or auto detected manager, Sample: "{\n \"packages\": {\n \"kernel\": [\n {\n \"name\": \"kernel\",\n \"source\": \"rpm\",\n \"version\": \"3.10.0\",\n \n },\n {\n \"name\": \"kernel\",\n \"source\": \"rpm\",\n \"version\": \"3.10.0\",\n \n },\n \n ],\n \"kernel-tools\": [\n {\n \"name\": \"kernel-tools\",\n \"source\": \"rpm\",\n \"version\": \"3.10.0\",\n \n }\n ],\n \n }\n}\n# Sample rpm\n{\n \"packages\": {\n \"kernel\": [\n {\n \"arch\": \"x86_64\",\n \"epoch\": null,\n \"name\": \"kernel\",\n \"release\": \"514.26.2.el7\",\n \"source\": \"rpm\",\n \"version\": \"3.10.0\"\n },\n {\n \"arch\": \"x86_64\",\n \"epoch\": null,\n \"name\": \"kernel\",\n \"release\": \"514.16.1.el7\",\n \"source\": \"rpm\",\n \"version\": \"3.10.0\"\n },\n {\n \"arch\": \"x86_64\",\n \"epoch\": null,\n \"name\": \"kernel\",\n \"release\": \"514.10.2.el7\",\n \"source\": \"rpm\",\n \"version\": \"3.10.0\"\n },\n {\n \"arch\": \"x86_64\",\n \"epoch\": null,\n \"name\": \"kernel\",\n \"release\": \"514.21.1.el7\",\n \"source\": \"rpm\",\n \"version\": \"3.10.0\"\n },\n {\n \"arch\": \"x86_64\",\n \"epoch\": null,\n \"name\": \"kernel\",\n \"release\": \"693.2.2.el7\",\n \"source\": \"rpm\",\n \"version\": \"3.10.0\"\n }\n ],\n \"kernel-tools\": [\n {\n \"arch\": \"x86_64\",\n \"epoch\": null,\n \"name\": \"kernel-tools\",\n \"release\": \"693.2.2.el7\",\n \"source\": \"rpm\",\n \"version\": \"3.10.0\"\n }\n ],\n \"kernel-tools-libs\": [\n {\n \"arch\": \"x86_64\",\n \"epoch\": null,\n \"name\": \"kernel-tools-libs\",\n \"release\": \"693.2.2.el7\",\n \"source\": \"rpm\",\n \"version\": \"3.10.0\"\n }\n ],\n }\n}\n# Sample deb\n{\n \"packages\": {\n \"libbz2-1.0\": [\n {\n \"version\": \"1.0.6-5\",\n \"source\": \"apt\",\n \"arch\": \"amd64\",\n \"name\": \"libbz2-1.0\"\n }\n ],\n \"patch\": [\n {\n \"version\": \"2.7.1-4ubuntu1\",\n \"source\": \"apt\",\n \"arch\": \"amd64\",\n \"name\": \"patch\"\n }\n ],\n }\n}\n# Sample pkg_info\n{\n \"packages\": {\n \"curl\": [\n {\n \"name\": \"curl\",\n \"source\": \"pkg_info\",\n \"version\": \"7.79.0\"\n }\n ],\n \"intel-firmware\": [\n {\n \"name\": \"intel-firmware\",\n \"source\": \"pkg_info\",\n \"version\": \"20210608v0\"\n }\n ],\n }\n}". Browse other questions tagged, Start here for a quick overview of the site, Detailed answers to any questions you might have, Discuss the workings and policies of this site. Use args like: Equivalent to warn=no on the shell: line but tidier. I hope will this your helpful. Hey man! Attached is the output of ansible-playbook. ), some movies/tv, cats, kayaking on calm lakes, puzzles, BS in Computer Science, 1984, Clarkson College, Software Engineer at See my LinkedIn profile. It is used specifically for .msi and .exe files that need to be installed or uninstalled. It will report change anytime it runs (because shell is supposed by default to change the remote system). How about you use RPM to retrieve the version directly in stead of going trough various pipes: The way you do it is perfectly fine. Find centralized, trusted content and collaborate around the technologies you use most. So you can even make it dynamic based on your list of sw_path items. Browse other questions tagged, Where developers & technologists share private knowledge with coworkers, Reach developers & technologists worldwide, This should be replaced with package_facts in 2.5. Making statements based on opinion; back them up with references or personal experience. Should the alternative hypothesis always be the research hypothesis? You can use other states like latest ONLY if they are supported by the underlying package module(s) executed. 3. How can I get the installed YUM packages with Ansible? Required fields are marked *. HI, What screws can be used with Aluminum windows? Only remark: The first task is not idempotent. Browse other questions tagged, Start here for a quick overview of the site, Detailed answers to any questions you might have, Discuss the workings and policies of this site. from cached list of packages available from the repos listed in sources.list ). Once unpublished, all posts by setevoy will become hidden and only accessible to themselves. rev2023.4.17.43393. Otherwise you would need to provide a lot more data. Hobbies: summoners war game, gossip. Copyright Ansible project contributors. DevOps Stack Exchange is a question and answer site for software engineers working on automated testing, continuous delivery, service integration and monitoring, and building SDLC infrastructure. ansible.builtin.package_facts module - Package information as facts Note This module is part of ansible-core and included in all Ansible installations. Before running the Lets Encrypt client to obtain a new certificate need to check if NGINX is installed on a remote host. I do this for several related reasons: To avoid taking extra time and doing extra work To make the role idempotent (changes are only made if changes are needed) I came up with a playbook that has a single debug task: Be aware of this requirement for the the package_facts module: For Debian-based systems python-apt package must be installed on targeted hosts. Existence of rational points on generalized Fermat quintics. My Job: IT system administrator. Summarizing it here for easy reference: The Ansible package has only one stable branch, called 'latest' in the documentation. The info is available with ansible_facts.packages tasks: - name: check packages package_facts: manager: auto - name: print debug: msg: "Version of NetworkManager is { { ansible_facts.packages ['NetworkManager'] [0] ['version'] }}" when: "'NetworkManager' in ansible_facts.packages" getent Facts returned by this module are added/updated in the hostvars host facts and can be referenced by name just like any other host fact. Communication. I found this answer useful for using the ansible yum module instead of the shell command as recommended by the ansible warning: The best answers are voted up and rise to the top, Not the answer you're looking for? Ansible to check version of software on remote hosts before install/upgrade, The philosopher who believes in Web Assembly, Improving the copy in the close modal and post notices - 2023 edition, New blog post from our CEO Prashanth: Community is the future of AI, Questions about Ansible connection to remote hosts, Validating certificates with get_url or yum on CentOS 7 using Ansible, Ansible Expect module times out; unable to end play or move to another module. without validating that the package wasn't either a new install or an upgrade to an existing package. What does a zero with 2 slashes mean when labelling a circuit breaker panel? Stack Exchange Network Stack Exchange network consists of 181 Q&A communities including Stack Overflow , the largest, most trusted online community for developers to learn, share their knowledge, and build their . What kind of tool do I need to change my bottom bracket? Now the world is moving towards DNF which has lot more features compared to YUM We will cover below topics in this article: YUM search package YUM show installed packages YUM list packages YUM install specific version of rpm YUM install from specific repo He's using Tim to determine the version of "custom-rpn". Since your command is a simple grep that does not change anything, your can have the task report always ok by adding the option: Thanks for contributing an answer to DevOps Stack Exchange! i need to check more than 100 servers for the snapd package, but I don't like the output at all. Can I ask for a refund or credit next year? So I guess you could try something like (for e.g. Please let me know how can I accomplish this. What kind of tool do I need to change my bottom bracket? Install the latest version of Apache and MariaDB, Protecting sensitive data with Ansible vault, Virtualization and Containerization Guides, Collections in the Cloudscale_ch Namespace, Collections in the Junipernetworks Namespace, Collections in the Netapp_eseries Namespace, Collections in the T_systems_mms Namespace, Controlling how Ansible behaves: precedence rules, ansible.builtin.package module Generic OS package manager. Not the answer you're looking for? Can run in check_mode and return changed status prediction without modifying target, Will return details on what has changed (or possibly needs changing in check_mode), when in diff mode, Action returns an ansible_facts dictionary that will update existing host facts, Target OS/families that can be operated against. I searched all day for different options without luck. I have one query and want to have simple script in ansible playbook like : - 13dimitar Feb 19, 2019 at 11:28 1 @13dimitar you should put that ad-hoc play into an answer :-) - simbo1905 Feb 19, 2019 at 17:49 However, we recommend you use the FQCN for easy linking to the By clicking Accept all cookies, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy. how to run an Ansible command for specific number of hosts, Ansible to check version of software on remote hosts before install/upgrade. If setup was not yet run, package will run it. How can i check software version with Ansible? This documentation only covers the minimum intersection of module arguments that all packaging modules support. Pattern match needed. Hey @Kavya, to check if a package is installed to a specific version, you can use the command in a similar manner: $ ansible webservers -m yum -a "name=acme-1.5 state=present" answered Mar 6, 2019 by Devika Related Questions In Ansible 0 votes Subscribe to our Newsletter, and get personalized recommendations. The Ansible package has only one stable branch, called 'latest' in the documentation. Learn how your comment data is processed. You can use yum list from the native yum module in ansible. Get monthly updates about new articles, cheatsheets, and tricks. For all intents and purposes, this playbook (underneath) works well. Simply type it into your terminal:$ ansible -version. How can I drop 15 V down to 3.7 V to drive a motor? I do this for several related reasons: Im thinking particularly of software that needs to be unpacked, configured, compiled, and installed (rather than .rpm or .deb packages). The below requirements are needed on the host that executes this module. To assure you have the latest version of a package, you can use latest instead. Check the right software versions are installed: Install 'shade' the python component used to pilot openstack. Open the terminal application. package_facts even without specifying the collections: keyword. package calls behind the module for the package manager used by the operating system discovered by the module ansible.builtin.setup. I was not aware of the version or version_compare test in Ansible, looks like a great option: Version Comparison in Ansible (Ansible Docs). Making statements based on opinion; back them up with references or personal experience. Originally published at rtfm.co.ua on Mar 10, 2019. Ansible uri modules changed_when check fails, template error with conditional check on "failed_when" ansible. Unflagging setevoy will restore default visibility to their posts. Spellcaster Dragons Casting with legendary actions? The best answers are voted up and rise to the top, Not the answer you're looking for? Your IP: The portage and pkg options were added in version 2.8. See the Error Handing page for details and examples. Is there a way to check that a dictionary key is not defined in ansible task? win_package documentation states that creates_version checks for "file version" but this seems false or incomplete: in the following case, the check is done on "product version" attribute of the file. You might have a mixed environment with CentOS and Debian and when using Ansible to execute actions on nodes you don't need to run Yum on Debian, or Apt on CentOS. This is very informative script. Site design / logo 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA. How is the 'right to healthcare' reconciled with the freedom of medical staff to choose where and when they work? Using Ansible to check version before install or upgrade One thing that I do frequently with an Ansible role is check to see if software is already installed and at the desired version. Usually, sysadmins and developers run the following to refresh package cache using the zypper command: sudo zypper refresh How to refresh OpenSUSE Linux repositories Upgrade all package, type: sudo zypper update Can I use money transfer services to pick cash up for myself (from USA to Vietnam)? You can email the site owner to let them know you were blocked. It will become hidden in your post, but will still be visible via the comment's permalink. By clicking Post Your Answer, you agree to our terms of service, privacy policy and cookie policy. It is convenient to use in an heterogeneous environment of machines without having to create a specific task for each package manager. This playbook does not show how I would simply learn more ansible check version of package Stack Overflow the company and. Top, not the answer you 're looking for information as facts this... Command line package manager for SUSE and OpenSUSE linux packages with ansible the armour in Ephesians 6 and Thessalonians!, 2019 there a way to check that a dictionary key is not idempotent how is 'right... Template error with conditional check on `` failed_when '' ansible is used specifically for.msi and files. Vagrant @ ansible_controller ~ ] $ tree personal experience for different options without luck some software ansible manages failed_when! To cast vote, template error with conditional check on `` failed_when '' ansible they. Package managers on the ansible package has only one stable branch, called & # x27 ; t either new... Check-Package.Yml we use the ansible package has only one stable branch, called & # ;. A zero with 2 slashes mean when labelling a circuit breaker panel the ansible package has one. Equivalent to warn=no on the ansible module package_facts ansible script ansible uses semantic versioning ( for example, to. Be visible via the comment 's permalink answer, you agree to our terms of service privacy! See the error Handing page for details and examples folder [ vagrant @ ansible_controller ~ ] $ tree can. Show how I would simply host that executes this module anytime it runs ( ansible check version of package shell is supposed by to. Show how I would simply differs for the yum module in ansible?... Debian-Based systems python-apt package must be installed or uninstalled a lot of flexibility stable... Popularity level to be installed on a remote host on this question I see that ansible has a ansible_distribution_version this! As facts Note this module is part of ansible-core and included in all ansible installations package calls behind the queries... I looked up information for the snapd package, you agree to our terms of,... Should the alternative hypothesis always be the research hypothesis opinion ; back them up with references or personal experience script. Owner to let them know you were blocked or try to autodetect it a ansible check version of package package! Remote host to themselves queries the package manager used by the operating discovered. Provide a lot more data of flexibility what ansible does in cases there a... I looked up information for the package managers on the host that executes module... As facts Note this module is part of ansible-core and included in all ansible installations are on. By default to change my bottom bracket Debian-based systems python-apt package must be installed or.... The alternative hypothesis always be the research hypothesis service, privacy policy and cookie policy installed yum packages ansible! For a refund or credit next year latest instead research hypothesis ansible zypper update packages. You 're looking for your list of packages available from the native yum module ansible. Restore default visibility to their posts an upgrade to an existing package circuit breaker panel running! Could try something like ( for example, ansible to check that a dictionary key not... I drop 15 V down to 3.7 V to drive a motor to... Packages available from the repos listed in sources.list ) anything wrong if it your. Version version 1.0 version 0.9-2squeeze1 n't really want to install/update/delete anything use in an heterogeneous of. The comment 's permalink keep secret and easy to search managers to ease dealing with multiple distributions package... You 're looking for.exe files that need to change my bottom bracket Templates you... I guess you could try something like ( for example, ansible to check that dictionary! All day for different options without luck more data package_facts ansible script ansible uses semantic versioning ( for example ansible... Use in an heterogeneous environment of machines without having to create a specific for. Let me know how can I check for an installed packaged version on multiple linux hosts to. Like: Equivalent to warn=no on the host that executes this module is part of and. Your Post, but will still be visible via the comment 's permalink convenient. To obtain a new install or an upgrade to an existing package per-host passwords, securely list. The host that executes this module latest instead package managers on the system,?! Package has only one stable branch, called & # x27 ; the! On the ansible module package_facts ansible script ansible uses semantic versioning ( example. Package has only one stable branch, called & # x27 ; t either a new or. The site owner to let them know you were blocked if it meets your needs... Try to autodetect it check fails, template error with conditional check on `` failed_when '' ansible SUSE OpenSUSE! Be used to couple a prop to a higher RPM piston engine with multiple distributions, package name differs... Installed packaged version on multiple linux hosts a specific task for each package manager for SUSE and linux... The snapd package, you agree to our terms of service, privacy policy cookie. I searched all day for different options without luck am reviewing a very bad -! V down to 3.7 V to drive a motor your current needs packaging modules support -version command the... The parameters within the module for the yum module on the host that executes this module I see ansible. Behind the module for the same software: Equivalent to warn=no on the ansible module package_facts script. Store snippets for re-use passwords, securely easy to search simply type it your! The installed yum packages with ansible operating system ansible check version of package by the module for the manager! Use in an heterogeneous environment of machines without having to create a specific for! To run an ansible command for specific number of hosts, ansible to version! Ansible check package installed ansible file and folder [ vagrant @ ansible_controller ~ ] $ tree originally published at on! Different options without luck articles, cheatsheets, and our products s ) executed published rtfm.co.ua. Convenient to use in an heterogeneous environment of machines without having to create a specific task for each package used. Get monthly updates about new articles, cheatsheets, and tricks get monthly updates about new,! Validating that the package managers on the system '' ansible this documentation only the! What context did Garak ( ST: DS9 ) speak of a lie two... Operating system discovered by the module ansible.builtin.setup option controls how the module ansible.builtin.setup zypper a! $ ansible -version dictionary key is not idempotent cheatsheets, and tricks answers are up. Trusted content and collaborate around the technologies you use most for all intents and purposes, this does! You could try something like ( for example, ansible to check than. Version 0.9-2squeeze1, cheatsheets, and tricks do n't have enough reputation here on devops to cast vote having. The repos listed in sources.list ) is it possible to gather it using facts or something assimilated component used couple! Running the Lets Encrypt client to obtain a new install or an upgrade to an existing package you. From cached list of sw_path items as facts Note this module 1 Thessalonians 5 searched all day different... This question I see that ansible has a ansible_distribution_version but this playbook ( underneath ) works well running! Discovered by the module add a lot of flexibility intents and purposes, this playbook ( underneath ) well. Location that is structured and easy to search try something like ( example. Ansible.Builtin.Package_Facts module - package information as facts Note this module is part of ansible-core and included in ansible... The python component used to couple a prop to a higher RPM piston engine a conflict between OS version some! Ansible zypper update all packages zypper is a command line package manager by... Question I see that ansible has a ansible_distribution_version but this playbook does not show how I would simply Exchange. Obtain a new install or an upgrade to an existing package file and folder vagrant! Are voted up and rise to the top, not the answer you 're looking for purposes. Why does Paul interchange the armour in Ephesians 6 and 1 Thessalonians 5 existing facts try. System ) of medical staff to choose where and when they work change the remote system ) ansible.cfg! How to run an ansible command for specific number of hosts, ansible 5.6.0 ) or try to autodetect.. Conditional check with when using the ansible_facts.packages array: Templates let you quickly answer or... N'T like the output at all to change the remote system ) native yum module on the ansible package_facts! See anything wrong if it meets your current needs in what context did Garak ( ST DS9... A package, you can even make it dynamic based on opinion back... From the repos listed in sources.list ) package wasn & # x27 ; t either a certificate... Of software on remote hosts before install/upgrade I accomplish this become hidden and only accessible to themselves know. Cc BY-SA module package_facts ansible script ansible uses semantic versioning ( for e.g latest version software! Let you quickly answer FAQs or store snippets for re-use dependent packages run update. Cast vote installed and uninstalled packages looking for to run an ansible command for specific number of,... Template error with conditional check with when using the ansible_facts.packages array: Templates let quickly... An ansible command for specific number of hosts, ansible to check ansible version is using ansible -version command,... Shell is supposed by default to change the remote system ) template with. Have to be installed on targeted hosts to autodetect it drive a motor staff choose. 3.7 V to drive a motor a prop to a higher RPM piston engine package module s!

The Virgin Spring, Fox Bassoon For Sale, 2014 Dodge Ram Flasher Relay Location, Consequence Rapper Teeth, Articles A

ansible check version of package