You could run a raw powershell command like

Get-Service nameOfService -ErrorAction SilentlyContinue

and then register the result, then check 

You would need the '-ErrorAction SilentlyContinue' bit otherwise when the 
service doesn't exist, Get-Service will fail.

also if you prefer you could do something similar with the sc.exe like this

sc.exe query serviceName

Hope this helps.


On Thursday, 17 March 2016 05:26:43 UTC, ishan jain wrote:
>
> Agreed with your point - we should drag the machine in the state we want. 
> But in my case the number 1 priority is to make the script idempotent, 
> which seems like quite a thing on windows end.
>
> I not installing anything on the windows end and my application will run 
> as standalone service, no installation required. I am using NSSM to install 
> the services, so win_package is not going to be of any use to me.
>
> To make my script idempotent, i must first check if the service exists, 
> before i invoke NSSM to create the service. I can live with the complicated 
> conditionals i will have in my scripts, but they must be idempotent in the 
> end. 
>
> The solution where i check the service with win_service works fine except 
> that in the case it is not present, it will give me a lot of red 
> statements. What i am looking for is a better way where i can simply 
> check that if a given service is created or not. I wish NSSM had some API 
> to check for that.
>
> On Thursday, 17 March 2016 02:13:52 UTC+5:30, J Hawkesworth wrote:
>>
>> I suggest you add a task, before your win_service task that installs the 
>> service if it is not yet installed.  Depending on what the service is, you 
>> might be able to use win_package to install it.  If it is already 
>> installed, there is not much to loose by running the win_package task a 
>> second time, as it will only install if not installed.
>>
>> When provisioning, I like to write playbooks that drag the machine into 
>> the state that I want it in rather than trying to write playbooks that have 
>> to handle lots of different possiblities that might exist on the different 
>> machines.
>>
>> Hope this helps,
>>
>> Jon
>>
>> On Wednesday, 16 March 2016 11:46:50 UTC, ishan jain wrote:
>>>
>>> I am trying to provision windows server 2012 R2 machine with ansible and 
>>> for that i need to gather some custom facts about the running services. I 
>>> tried getting the information via the win_service module like this:
>>>
>>> ---
>>> - hosts: windows
>>>   tasks:
>>>     - name: check services
>>>       win_service:
>>>             name: test1
>>>       register: result
>>>       ignore_errors: yes
>>>
>>>     - debug: msg="{{result}}"
>>>
>>>     - debug: msg="service is running"
>>>       when: result.state == 'running'
>>>
>>>
>>> This works fine if the service exists but in case the service does not 
>>> exist, i get ugly looking failed message in the win_service task and as 
>>> there is no common member name in the registered variable 'result', i am 
>>> not sure how to first check if the service really exist and then proceed to 
>>> do something further. Is there a better way to check if service exists and 
>>> if yes, what is its state ?
>>>
>>

-- 
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 ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/55ead403-ae02-4707-8123-c4c8e8f29c2e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to