Hello Dick,

Thanks for all your suggestions.

I am very sorry for the mistake in my playbook which i copied here. 
Actually as i stated  i would need to extract the mypack.zip file which is 
in the controller machine to all my application servers( here  by mistake i 
defined as localhost, where as a list of servers are there).

my aim is that extract the .zip file in the controller to the specific 
folder in application servers (because i have another script with this path 
specified for calling the package).

i was trying for 2 conditions 

1)  check the target servers directory present or not (eg: /opt/mypack). if 
it present skip else create directory.
2) check the above directory already have the extracted file or not. if no 
extract, if yes skip extract.



I tried with below playbook where i want to extract 2 .zip packages to all 
target servers specific location (/opt/mypack and /opt/mypack2)


---

- name: Extract CLM-Web Package into /opt/mypack
  hosts: localhost,IHS,CCM,RM
  vars:
    source_dir: /etc/ansible/roles/IBM2/files/mypack.zip
    dest_dir: /opt/mypack
  tasks:
    - name: check the folder existance
      stat: path=/opt/mypack
      register: folder_exist

    - name: create directory
      command: mkdir /opt/mypack
      when: folder_exist.stat.exists == False

    - name: extract the .zip file
      unarchive:
         src: "{{ source_dir }}"
         dest: "{{ dest_dir }}/"
      when: folder_exist.stat.exists == True

- name: Extract CLM Installation Package to /opt/mypack
  hosts: localhost,CCM,RM
  vars:
    source_dir: /etc/ansible/roles/IBM2/files/mypack2.zip
    dest_dir: /opt/mypack2
  tasks:
    - name: check the folder existance
      stat: path=/opt/mypack2
      register: folder_exist

    - name: create directory
      command: mkdir /opt/mypack2
      when: folder_exist.stat.exists == False

    - name: extract the .zip file
      unarchive:
         src: "{{ source_dir }}"
         dest: "{{ dest_dir }}/"
      when: folder_exist.stat.exists == True


On Tuesday, November 27, 2018 at 4:58:26 PM UTC+5:30, Dick Visser wrote:
>
> On Tue, 27 Nov 2018 at 09:52, visar <[email protected] <javascript:>> 
> wrote: 
> > 
> > Hi Experts, 
> > 
> > I have below play book for extracting a .zip file from Ansible 
> controller machine to the target folders. But i noticed that play is not 
> working as expected if the target folder and the unzipped files are already 
> present in the target servers. Could you please guide me here ? 
>
>
> Hi 
>
> Some questions: 
>
> 1. The playbook is restricted to localhost, and 'extracting a .zip 
> file from Ansible controller machine to the target folders' also 
> indicates you want to extract a ZIP file on the controller machine. 
> But then your talk about 'files are already present in the target 
> servers' - which indicates that you DO want to extract the archive on 
> a remote host. What do you actually mean? 
>
> 2. You mention that the play 'is not working as expected'. The 
> question then is: what _did_ you expect (and what exactly isn't going 
> as you expected)? 
> 3. You now use a fragile combination of two modules (stat + command) 
> to achieve what can also be done with only one module: file. 
> 4. The 'creates' parameter of the unarchive module should be an 
> absolute path, but you specify it as 'no'. 
> 5. Cosmetically: you define 'source_dir' but then the value is the 
> path of a (ZIP) file. Strictly speaking there is nothing wrong, but it 
> does make things confusing. 
> 6. If this is part of a role (which 
> '/etc/ansible/roles/IBM2/files/mypack.zip' indicates), you could leave 
> out the full path as this will be implicit (i.e. just 
> 'files/mypack.zip') 
>
> The good news is that, depending on what you really want (still 
> unclear at this point), it could be as simple as use a single 
> unarchive task. 
>
> At the risk of guessing: 
>
> - name: Extract file 
>   hosts: targethosts 
>   vars: 
>     zipfile: files/mypack.zip 
>     destdir: /opt/mypack 
>   tasks: 
>     - name: extract zip file 
>       unarchive: 
>         src: "{{ zipfile }}" 
>         dest: "{{ destdir }}" 
>
>
>
>
> Dick 
>
>
>
> > 
> > ############################################################ 
> > 
> > --- 
> > 
> > - name: Extract mypack.zip into /opt/mypack 
> >   hosts: localhost 
> >   vars: 
> >     source_dir: /etc/ansible/roles/IBM2/files/mypack.zip 
> >     dest_dir: /opt/mypack 
> >   tasks: 
> >     - name: check the folder existance 
> >       stat: path=/opt/mypack 
> >       register: folder_exist 
> > 
> >     - name: create directory 
> >       command: mkdir /opt/mypack 
> >       when: folder_exist.stat.exists == False 
> > 
> >     - name: extract the .zip file 
> >       unarchive: 
> >          src: "{{ source_dir }}" 
> >          dest: "{{ dest_dir }}/" 
> >          creates: no 
> >       when: folder_exist.stat.exists == True 
> > 
> > ##################################################################### 
> > 
> > -- 
> > 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] <javascript:>. 
> > To post to this group, send email to [email protected] 
> <javascript:>. 
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/ansible-project/09e072d7-a3f6-485a-8e9b-fb8d8497228b%40googlegroups.com.
>  
>
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/6df50656-3aee-4916-a961-d646a2864284%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to