On Thursday, February 27, 2020 at 1:44:39 PM UTC-5, harry devine wrote:
>
> Hey Daniel!  This stem from ticket #02582900. Since the stance from 
> Support is “we don’t debug playbooks”, I care here. 
>
> Their suggestion was to make sure that no healing operation was going on, 
> stop Gluster, do the “yum update “, then restart Gluster & move to the next 
> server. 
>
> So what I’m trying to accomplish is start with server1, wait for any 
> healing operations on our 3 volumes to finish, stop/update/start then move 
> to the next. I’m sure this will lead to a “workflow template” 
> discussion/approach, but right now this is my starting point. 
>
> Thanks,
> Harry
>
> On Thu, Feb 27, 2020 at 12:48 PM Daniel Whitley <[email protected]> 
> wrote:
>
>> Hey Harry-
>> I saw this over my lunch break and thought I'd ask if it really matters 
>> (meaning, do you use it later or something) what the count/sum is or if you 
>> just want to wait until something is true (such as the number of "heals" is 
>> 0).  If the count doesn't really matter, I wonder if you could take 
>> advantage of until 
>> <https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#retrying-a-task-until-a-condition-is-met>
>>  
>> in your "Find out the healing status of /home" task?  It looks like the 
>> gluster_heal_info 
>> <https://docs.ansible.com/ansible/latest/modules/gluster_heal_info_module.html>
>>  
>> module returns a list of files in "heal_info" so you may just want to wait 
>> "until" that list is empty before moving on to the next task?  I've not 
>> tried this nor ever used the module.  I also realize it doesn't address the 
>> question you asked, but you should be used to that from me at this point. :)
>> -Daniel
>>
>>
>> On Thu, Feb 27, 2020 at 9:38 AM harry devine <[email protected]> wrote:
>>
>>> I'm using the gluster_heal_info module to check the heal status of a 
>>> gluster volume.  What I'd like to do is gather the "no_of_entries" 
>>> parameter, sum them up, and it if it is 0, move to the next step of 
>>> stopping gluster on that server, update it, and restart the service.  The 
>>> playbook below is my initial test to see how to grab that information.  It 
>>> is giving me the following error:
>>>
>>>  [root@test-server ~]#ansible-playbook gluster_heal_info.yml --limit 
>>> storage1.tc.secure-ose.faa.gov -K
>>> BECOME password:
>>>
>>> PLAY [gluster] 
>>> *************************************************************************************************************************************
>>>
>>> TASK [Find out the healing status of /home] 
>>> ********************************************************************************************************
>>> ok: [gluster1]
>>>
>>> TASK [set_fact] 
>>> ************************************************************************************************************************************
>>> fatal: [gluster1]: FAILED! => {"msg": "Unexpected templating type error 
>>> occurred on ({{ home_heal_status.glusterfs.heal_info | 
>>> sum(attribute='no_of_entries', start=[]) }}): can only concatenate list 
>>> (not \"AnsibleUnsafeText\") to list"}
>>>
>>>
>>> I'm not too familiar with jinja2 templates yet, so I'm sure I'm not 
>>> doing something correct.  Can anyone point me in the right direction?
>>>
>>> Thanks,
>>> Harry
>>>
>>> ---
>>> - hosts: gluster
>>>   become: yes
>>>   become_method: sudo
>>>   gather_facts: no
>>>
>>>   tasks:
>>>
>>>   - name: Find out the healing status of /home
>>>     gluster_heal_info:
>>>       name: home
>>>       status_filter: self-heal
>>>     register: home_heal_status
>>>
>>>   - set_fact:
>>>       home_heal_entries: "{{ home_heal_status.glusterfs.heal_info | 
>>> sum(attribute='no_of_entries', start=[]) }}"
>>>   - debug:
>>>       msg: "Heal entries: {{ home_heal_entries }}"
>>>
>>> -- 
>>>
>>> -- 
>> 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 view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/CA%2BM63kcQw_UTUMW%2BmLXd0uNv3Bgowfdy9yP_v%2B55yW9cKkKN6A%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/ansible-project/CA%2BM63kcQw_UTUMW%2BmLXd0uNv3Bgowfdy9yP_v%2B55yW9cKkKN6A%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>

So to follow up on this:  I looked at this further, and while the 
gluster_heal_info module DOES return a heal_info list, its not a list of 
files.  It returns the value of every brick (brick name, number of entries, 
and stattus):

"heal_info": [
                {
                    "brick": " server1:/gluster_bricks/brick3/1",
                    "no_of_entries": "0",
                    "status": "Connected"
                },
                {
                    "brick": " server2:/gluster_bricks/brick4/1",
                    "no_of_entries": "0",
                    "status": "Connected"
                }
]

So what I think I need to do is to get the "no_of_entries" value from every 
brick and sum them up.  If the sum is zero, I can continue on.  If the sum 
is greater than zero, then there is a heal in process, and I need to wait 
until that is finished before continuing.  That's the part I'm getting 
stuck on.  Also, if you look at the heal_info list, the bricks are ALL 
bricks associated with the gluster volume, which is across all gluster 
servers.  So would it be safe to assume that if the sum is zero, then there 
is no healing occuring on any server, and the continue-on procedure is to 
stop gluster on all servers, update them, then restart gluster?

Thanks,
Harry
 

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/70668aff-e0fe-4f4f-8606-ffc1cc273f52%40googlegroups.com.

Reply via email to