I have been working with ansible for a few weeks now and I thought of a 
useful module idea that I really am finding myself needing a lot. I am 
posting here to open up a discussion in hopes of getting it implemented. I 
don't know python at the moment so I am not in a position to implement 
this. 

The goal of the module would be to parse version strings of different 
services (maybe files?) and break them into usable chunks for conditionals. 
I am finding myself needing this a lot since I need to put different 
configuration files in place depending on what version is running. For 
example if the playbook is running on ubuntu 10.04 I need mysql 5.1 
configuration entries whereas ubuntu 12.04 I need mysql 5.5. 

Here is some ideas of how it would look:

- version: name=mysql
  register: mysql_version

- debug: var=mysql_version

mysql_version: {
  version: "5.5.34"
  major: 5
  minor: 5
  patch: 34
}

Which would be parsed from: mysql -v: "Server version: 
5.5.34-0ubuntu0.12.04.1 (Ubuntu)"

Another example:

- version: name=apache2
  register: apache_version

- debug: var=apache_version

apache_version: {
  version: "2.2.22"
  major: 2
  minor: 2
  patch: 22
}

Which would be parsed from apache2 -v: "Server version: Apache/2.2.22 
(Ubuntu)"

If the service is not running or not found it could just return blank.

Right now I only need it for services. In order to implement it, it can 
maybe regex search search 
http://stackoverflow.com/questions/82064/a-regex-for-version-number-parsing 
?. 

It could potentially be expanded to search files such as: version: 
path=/etc/lsb-release register: distro_version which would return version: 
12.04, major 12, minor 4, patch ''. Optionally it could have the regex as 
an argument and perhaps a grep to narrow it down if the file has a lot of 
numbers or different format:

- version: path=/etc/lsb-release line=RELEASE 
regexp='^(\d+\\.)?(\d+\\.)?(\\*|\d+)$'

Which could parse cat /etc/lsb-release | grep RELEASE

What do you think?

-- 
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 post to this group, send email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to