---
- 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
如何缩进到与hosts
和vars
和remote_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/