对Salt进行模块化设计就是为了扩展,另外将变量抽象出来放到pillar中也是为了模块可以重用。当你需要配置两个web平台,而这两个平台又有些许不同时你该怎么办?需要重新再写个nginx模块适配新的平台吗?
对于上面问题的回答是否定的,我们无需再重新写一个nginx模块,我们只需要对新的平台传递新的配置文件或者使用同一个模板传递不同的参数。
使用不同的配置文件
当两个平台配置相差比较大时可能传递一个不同的配置文件会更合适,如下:
1 2 3 4 5 6 7
| /etc/rsyncd.conf: file.managed: - source: salt://rsync/files/etc/{{salt['pillar.get']('rsync_template', 'rsyncd.conf')}} - template: jinja - user: root - group: root - mode: 644
|
为不同的节点在pillar中配置不同的rsync_template变量即可。
使用同一个模板传递不同的参数
1 2 3 4 5 6 7
| /etc/keepalived/keepalived.conf: file.managed: - source: salt://keepalived/files/etc/keepalived/keepalived.conf - template: jinja - user: root - group: root - mode: 644
|
对于主服务器(/srv/salt/pillar/nodes/ha1.sls )使用如下pillar变量:
1 2 3 4 5 6 7 8 9 10
| keepalived: notification_email: '[email protected]' notification_email_from: '[email protected]' smtp_server: 127.0.0.1 state: MASTER priority: 100 auth_type: PASS auth_pass: mall virtual_ipaddress_internal: 172.16.100.100 virtual_ipaddress_external: 60.60.60.100
|
对于从服务器(/srv/salt/pillar/nodes/ha2.sls )使用如下pillar变量:
1 2 3 4 5 6 7 8 9 10
| keepalived: notification_email: '[email protected]' notification_email_from: '[email protected]' smtp_server: 127.0.0.1 state: BACKUP priority: 99 auth_type: PASS auth_pass: mall virtual_ipaddress_internal: 172.16.100.100 virtual_ipaddress_external: 60.60.60.100
|