Thanks all for your help.
I have been really bored with the block... but I finally succeed. The 
ansible / yaml syntax is not always straightforward to understand (or I 
lack some skills).

I went back to the ansible block documentation 
<https://docs.ansible.com/ansible/latest/playbooks_blocks.html>, and make a 
trial replacing my main.yml file with the example on the page, i.e.  :
cat roles/devTools/tasks/main.yml
tasks:
  - name: Install Apache
    block:
      - yum: name={{ item }} state=installed
        with_items:
          - httpd
          - memcached
      - template: src=templates/src.j2 dest=/etc/foo.conf
      - service: name=bar state=started enabled=True
    when: ansible_distribution == 'CentOS'
    become: true
    become_user: root

And I still get an error saying that the role must contain a list of task :
ERROR! The tasks/main.yml file for role 'devTools' must contain a list of 
tasks

The error appears to have been in 
'/home/jeanlupi/centos_test/myKnowledge/devOps/playbook/roles/devTools/tasks/main.yml'
: line 1, column 1, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


tasks:
^ here

Ok... I removed "tasks" (don't clearly understand why it must not be 
there...) and the problem disappeared.
After several other syntax errors (probably not totally sticked to block), 
I succeeded with :

cat roles/devTools/tasks/RedHat.yml
  - name: Update Red Hat machine
    block:
      - yum: update_cache=yes name="*" state=latest
        notify: "restart {{ ansible_os_family }} host"
      - yum: name="{{item}}" state=present
        with_items: "{{ toolList }}"
        notify: "restart {{ ansible_os_family }} host"
    when: ansible_pkg_mgr == 'yum'
    become: true
    become_user: root



As mentioned in the answers, notify must not be set at block level, but 
after each enclosed task.

Thanks for your help.
Have a nice day.
JiElPe

Le mercredi 31 janvier 2018 16:29:00 UTC+1, JiElPe-Fr38 a écrit :
>
> Dear all,
>
> I am quite new to Ansible and try to "make a tour"...
> I am using ansible 2.4.2.0 with cygwin64 on Win7.
>
>
> I am currently make a personal training and find that I could use a block 
> to "enclose" (ok, perhaps wrong term) a couple of task that have some 
> common "properties" (like become_user: root ...).
> The idea is to change this :
>
> ---
> - name: Update Red Hat machine
>   yum:
>     update_cache: yes
>     name: '*'
>     state: latest
>   when: ansible_pkg_mgr == 'yum'
>   become: true
>   become_user: root
>   ignore_errors: yes
>   notify: "restart {{ ansible_os_family }} host"
>
> - name: Install RedHat tools
>   yum:
>     name: "{{ item }}"
>     state: present
>   with_items: "{{ toolList }}"
>   when: ansible_pkg_mgr == 'yum'
>   become: true
>   become_user: root
>   ignore_errors: yes
>   notify: "restart {{ ansible_os_family }} host"
>
>
>
> into a block based syntax so that I can factorize the become / notify and 
> when statement.
> II have made several trials without any success.
> Playing the file below :
> ---
> -block:
>   - name: Update Red Hat machine
>     yum:
>       update_cache: yes
>       name: '*'
>       state: latest
>
>   - name: Install RedHat tools
>     yum:
>       name: "{{ item }}"
>       state: present
>       with_items: "{{ toolList }}"
>
>   when: ansible_pkg_mgr == 'yum'
>   become: true
>   become_user: root
>   ignore_errors: yes
>   notify: "restart {{ ansible_os_family }} host"
>
> I get this error :
> fatal: [ci-server]: FAILED! => {"reason": "Syntax Error while loading 
> YAML.\n\n\nThe error appears to have been in 
> '/home/jeanlupi/centos_test/myKnowledge/devOps/playbook/roles/devTools/tasks/RedHat.yml':
>  
> line 16, column 3, but may\nbe elsewhere in the file depending on the exact 
> syntax problem.\n\nThe offending line appears to be:\n\n\n  when: 
> ansible_pkg_mgr == 'yum'\n  ^ here\n\nexception type: <class 
> 'yaml.parser.ParserError'>\nexception: while parsing a block collection\n  
> in \"<unicode string>\", line 3, column 3:\n      - name: Update Red Hat 
> machine\n      ^\nexpected <block end>, but found '?'\n  in \"<unicode 
> string>\", line 16, column 3:\n      when: ansible_pkg_mgr == 'yum'\n      
> ^"}
>
>
>
> If someone could help I would be very glad ! 
>
> Thanks !
> JiElPe
>
>

-- 
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/01e8cbe9-15eb-4c6a-bc6c-ef9831b745d2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to