---
- 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


播放剧本时出现的错误是:

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

最佳答案

Yaml的大多数语法错误是由于缩进不正确,因为Yaml依赖空白。

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


注意tasks如何缩进到与hostsvarsremote_user相同的级别?

另请参阅tasks数组中的项目如何将破折号(-)缩进到与“任务”一词相同的级别。

这种缩进很重要,因为Yaml就是这样确定哪些元素属于其他元素。如果您没有正确缩进所有内容,则它不知道如何解析它。

所以这应该为你工作

---
- 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

关于linux - 在Ansible中使用处理程序时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43268282/

10-11 21:22