2017-04-07 1 views
-3
--- 
- name: Oracle DB Prereqs 
    hosts: sandbox 
    become: true 
    gather_facts: yes 
    vars: 
     shmall_ent: 16384 
     shmall_mid: 32768 
     shmall_lar: 65536 
     shmall_exlar: 262144 

    tasks: 
    - name: SHMALL value to set for memory size less than 16G 
     when: ansible_memtotal_mb <= {{ shmall_ent }} 
     notify: 
     - SHMALL ent 

    - name: SHMALL value to set for memory size between 16G and 32G 
     when: (ansible_memtotal_mb > {{ shmall_ent }} and ansible_memtotal_mb <= {{ shmall_mid }})|int 
     notify: 
     - SHMALL mid 

    - name: SHMALL value to set for memory size between 32G and 64G 
     when: (ansible_memtotal_mb > {{ shmall_mid }} and ansible_memtotal_mb <= {{ shmall_lar }})|int 
     notify: 
     - SHMALL lar 

    - name: SHMALL value to set for memory size between 64G and 256G 
     when: (ansible_memtotal_mb > {{ shmall_lar }} and ansible_memtotal_mb <= {{ shmall_exlar }})|int 
     notify: 
     - SHMALL exlar 
     handlers: 
    - name: SHMALL ent 
     sysctl: 
     name: kernel.shmall 
     value: 3670016 
     sysctl_file: /etc/sysctl.d/99-sysctl.conf 
    - name: SHMALL mid 
     sysctl: 
     name: kernel.shmall 
     value: 7340032 
     sysctl_file: /etc/sysctl.d/99-sysctl.conf 
    - name: SHMALL lar 
     sysctl: 
     name: kernel.shmall 
     value: 14680064 
     sysctl_file: /etc/sysctl.d/99-sysctl.conf 
    - name: SHMALL exlar 
     sysctl: 
     name: kernel.shmall 
     value: 57671680 
     sysctl_file: /etc/sysctl.d/99-sysctl.conf 

Erreur lors de l'exécution du jeu est:Erreur lors de l'utilisation des gestionnaires dans Ansible

ERROR! Syntax Error while loading YAML. 


The error appears to have been in '/home/rjoy/ansible/roles/oracle/playbook/oraunix.yml': line 12, column 4, but may 
be elsewhere in the file depending on the exact syntax problem. 

The offending line appears to be: 


    tasks: 
^here 

Répondre

0

La plupart des erreurs de syntaxe pour YAML sont en raison de l'indentation incorrecte parce que Yaml repose sur les espaces.

Voir cet exemple de la playbook documentation:

--- 
- hosts: webservers 
    vars: 
    http_port: 80 
    max_clients: 200 
    remote_user: root 
    tasks: 
    - name: ensure apache is at the latest version 
    yum: name=httpd state=latest 
    - name: write the apache config file 
    template: src=/srv/httpd.j2 dest=/etc/httpd.conf 
    notify: 
    - restart apache 
    - name: ensure apache is running (and enable it at boot) 
    service: name=httpd state=started enabled=yes 
    handlers: 
    - name: restart apache 
     service: name=httpd state=restarted 

Remarquez comment tasks est en retrait à même niveau que hosts et vars et remote_user?

Voir également comment les éléments du tableau tasks ont le tiret (-) indenté au même niveau que le mot "tâches".

Cette indentation est importante car c'est ainsi que Yaml détermine quels éléments appartiennent à d'autres éléments. Si vous n'avez pas tout indenté correctement, il ne sait pas comment l'analyser.

Donc, cela devrait fonctionner pour vous

--- 
- name: Oracle DB Prereqs 
    hosts: sandbox 
    become: true 
    gather_facts: yes 
    vars: 
    shmall_ent: 16384 
    shmall_mid: 32768 
    shmall_lar: 65536 
    shmall_exlar: 262144 

    tasks: 
    - name: SHMALL value to set for memory size less than 16G 
    when: ansible_memtotal_mb <= {{ shmall_ent }} 
    notify: 
     - SHMALL ent 

    - name: SHMALL value to set for memory size between 16G and 32G 
    when: (ansible_memtotal_mb > {{ shmall_ent }} and ansible_memtotal_mb <= {{ shmall_mid }})|int 
    notify: 
     - SHMALL mid 

    - name: SHMALL value to set for memory size between 32G and 64G 
    when: (ansible_memtotal_mb > {{ shmall_mid }} and ansible_memtotal_mb <= {{ shmall_lar }})|int 
    notify: 
     - SHMALL lar 

    - name: SHMALL value to set for memory size between 64G and 256G 
    when: (ansible_memtotal_mb > {{ shmall_lar }} and ansible_memtotal_mb <= {{ shmall_exlar }})|int 
    notify: 
     - SHMALL exlar 

    handlers: 
    - name: SHMALL ent 
     sysctl: 
     name: kernel.shmall 
     value: 3670016 
     sysctl_file: /etc/sysctl.d/99-sysctl.conf 

    - name: SHMALL mid 
     sysctl: 
     name: kernel.shmall 
     value: 7340032 
     sysctl_file: /etc/sysctl.d/99-sysctl.conf 

    - name: SHMALL lar 
     sysctl: 
     name: kernel.shmall 
     value: 14680064 
     sysctl_file: /etc/sysctl.d/99-sysctl.conf 

    - name: SHMALL exlar 
     sysctl: 
     name: kernel.shmall 
     value: 57671680 
     sysctl_file: /etc/sysctl.d/99-sysctl.conf 
+0

Merci. Pouvez-vous m'aider à optimiser le script que j'ai mentionné ci-dessus? – Gladiator

+0

Voir ma modification. Tout ce que vous avez à faire est de supprimer quelques espaces supplémentaires au début de quelques lignes. –

+0

Le script fonctionne bien. Maintenant, j'ai besoin d'ajouter la valeur kernel.shmmax avec les mêmes instructions conditionnelles cela fonctionnera-t-il avec plusieurs entrées sur le fichier sysctl dans ces conditions? @ Yep_It's_Me – Gladiator