SaltStack实战之配置管理-Jinja2模板
SaltStack实战之配置管理-Jinja2模板
[TOC]
1. Salt yaml配置文件使用Jinja2模板介绍
jinja2官方网站:
http://jinja.pocoo.org/
1.1 File状态使用template参数
1 2 |
- template: jinja |
1.2 模板文件里面变量使用{{ 名称 }}
1 2 |
{{ PORT }} |
1.3 变量列表
1 2 3 |
- defaults: PORT: 8080 |
2. 实战应用
添加监听主机和端口变量
vim /srv/salt/devfiles/httpd.conf
1 2 3 4 |
Listen {{ HOST }}:{{ PORT }} # {{ MAC }} |
配置salt master配置文件、pillar配置文件、lamp.sls添加jinja模板:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
[root@salt-master112 dev]# egrep -v '^$|^[#]' /etc/salt/master state_top: top.sls file_roots: base: - /srv/salt dev: - /srv/salt/dev test: - /srv/salt/test prod: - /srv/salt/prod pillar_roots: base: - /srv/salt/pillar dev: - /srv/salt/dev/pillar [root@salt-master112 dev]# cat /srv/salt/pillar/top.sls dev: 'node*.test.com': - apache [root@salt-master112 dev]# cat /srv/salt/dev/pillar/apache.sls apache: HOST: {{ grains['fqdn_ip4'][0] }} PORT: 8080 MAC: {{ salt['network.hw_addr']('eth0') }} [root@salt-master112 dev]# salt '*' saltutil.refresh_pillar node1.test.com: True master.test.com: True node2.test.com: True [root@salt-master112 dev]# salt '*' pillar.items master.test.com: ---------- node1.test.com: ---------- apache: ---------- HOST: 10.1.0.109 MAC: 00:50:56:a4:44:7a PORT: 8080 node2.test.com: ---------- apache: ---------- HOST: 10.1.0.110 MAC: 00:50:56:a4:44:7a PORT: 8080 [root@salt-master112 dev]# cat /srv/salt/dev/lamp.sls lamp-pkg-install: pkg.installed: - names: - php - php-fpm - mysql - php-mysql - php-pdo apache-service: pkg.installed: - name: httpd file.managed: - name: /etc/httpd/conf/httpd.conf - source: - salt://files/httpd.conf - user: root - group: root - mode: 644 - template: jinja - defaults: HOST: {{ pillar['apache']['HOST'] }} PORT: {{ pillar['apache']['PORT'] }} MAC: {{ pillar['apache']['MAC'] }} - require: - pkg: apache-service service.running: - name: httpd - enable: True - reload: True - watch: - file: apache-service mysql-service: pkg.installed: - name: mysql-server - require_in: - file: mysql-service file.managed: - name: /etc/my.cnf - source: - salt://files/my.cnf - user: root - group: root - mode: 644 - watch_in: - service: mysql-service service.running: - name: mysqld - enable: True php-fpm-service: service.running: - name: php-fpm - enable: True [root@salt-master112 dev]# |
执行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 |
[root@salt-master112 dev]# salt '*' state.highstate master.test.com: ---------- ID: /etc/resolv.conf Function: file.managed Result: True Comment: File /etc/resolv.conf is in the correct state Started: 17:54:00.390576 Duration: 31.841 ms Changes: Summary for master.test.com ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 31.841 ms node1.test.com: ---------- ID: /etc/resolv.conf Function: file.managed Result: True Comment: File /etc/resolv.conf is in the correct state Started: 09:56:43.761673 Duration: 34.809 ms Changes: ---------- ID: lamp-pkg-install Function: pkg.installed Name: php-fpm Result: True Comment: Package php-fpm is already installed Started: 09:56:44.225287 Duration: 630.568 ms Changes: ---------- ID: lamp-pkg-install Function: pkg.installed Name: php-pdo Result: True Comment: Package php-pdo is already installed Started: 09:56:44.856050 Duration: 0.522 ms Changes: ---------- ID: lamp-pkg-install Function: pkg.installed Name: php Result: True Comment: Package php is already installed Started: 09:56:44.856677 Duration: 0.366 ms Changes: ---------- ID: lamp-pkg-install Function: pkg.installed Name: php-mysql Result: True Comment: Package php-mysql is already installed Started: 09:56:44.857143 Duration: 0.386 ms Changes: ---------- ID: lamp-pkg-install Function: pkg.installed Name: mysql Result: True Comment: Package mysql is already installed Started: 09:56:44.857623 Duration: 0.349 ms Changes: ---------- ID: apache-service Function: pkg.installed Name: httpd Result: True Comment: Package httpd is already installed Started: 09:56:44.858061 Duration: 0.343 ms Changes: ---------- ID: apache-service Function: file.managed Name: /etc/httpd/conf/httpd.conf Result: True Comment: File /etc/httpd/conf/httpd.conf updated Started: 09:56:44.858780 Duration: 34.022 ms Changes: ---------- diff: --- +++ @@ -133,9 +133,9 @@ # prevent Apache from glomming onto all bound IP addresses (0.0.0.0) # #Listen 12.34.56.78:80 -Listen 0.0.0.0:8080 - -# 00:50:56:a4:7a:70 +Listen 10.1.0.109:8080 + +# 00:50:56:a4:44:7a # Dynamic Shared Object (DSO) Support # # To be able to use the functionality of a module which was built as a DSO you ---------- ID: apache-service Function: service.running Name: httpd Result: True Comment: Service reloaded Started: 09:56:44.950689 Duration: 87.451 ms Changes: ---------- httpd: True ---------- ID: mysql-service Function: pkg.installed Name: mysql-server Result: True Comment: Package mysql-server is already installed Started: 09:56:45.038390 Duration: 0.739 ms Changes: ---------- ID: mysql-service Function: file.managed Name: /etc/my.cnf Result: True Comment: File /etc/my.cnf is in the correct state Started: 09:56:45.039596 Duration: 17.182 ms Changes: ---------- ID: mysql-service Function: service.running Name: mysqld Result: True Comment: The service mysqld is already running Started: 09:56:45.057008 Duration: 68.422 ms Changes: ---------- ID: php-fpm-service Function: service.running Name: php-fpm Result: True Comment: The service php-fpm is already running Started: 09:56:45.125649 Duration: 53.97 ms Changes: Summary for node1.test.com ------------- Succeeded: 13 (changed=2) Failed: 0 ------------- Total states run: 13 Total run time: 929.129 ms node2.test.com: ---------- ID: /etc/resolv.conf Function: file.managed Result: True Comment: File /etc/resolv.conf is in the correct state Started: 09:56:44.357709 Duration: 56.916 ms Changes: ---------- ID: lamp-pkg-install Function: pkg.installed Name: php-fpm Result: True Comment: Package php-fpm is already installed Started: 09:56:45.634382 Duration: 1721.668 ms Changes: ---------- ID: lamp-pkg-install Function: pkg.installed Name: php-pdo Result: True Comment: Package php-pdo is already installed Started: 09:56:47.356467 Duration: 1.34 ms Changes: ---------- ID: lamp-pkg-install Function: pkg.installed Name: php Result: True Comment: Package php is already installed Started: 09:56:47.358095 Duration: 1.359 ms Changes: ---------- ID: lamp-pkg-install Function: pkg.installed Name: php-mysql Result: True Comment: Package php-mysql is already installed Started: 09:56:47.359721 Duration: 1.553 ms Changes: ---------- ID: lamp-pkg-install Function: pkg.installed Name: mysql Result: True Comment: Package mysql is already installed Started: 09:56:47.361541 Duration: 1.361 ms Changes: ---------- ID: apache-service Function: pkg.installed Name: httpd Result: True Comment: Package httpd is already installed Started: 09:56:47.363199 Duration: 1.377 ms Changes: ---------- ID: apache-service Function: file.managed Name: /etc/httpd/conf/httpd.conf Result: True Comment: File /etc/httpd/conf/httpd.conf updated Started: 09:56:47.365880 Duration: 84.28 ms Changes: ---------- diff: --- +++ @@ -133,9 +133,9 @@ # prevent Apache from glomming onto all bound IP addresses (0.0.0.0) # #Listen 12.34.56.78:80 -Listen 0.0.0.0:8080 - -# 00:50:56:a4:00:5c +Listen 10.1.0.110:8080 + +# 00:50:56:a4:44:7a # Dynamic Shared Object (DSO) Support # # To be able to use the functionality of a module which was built as a DSO you ---------- ID: apache-service Function: service.running Name: httpd Result: True Comment: Service reloaded Started: 09:56:47.617560 Duration: 236.903 ms Changes: ---------- httpd: True ---------- ID: mysql-service Function: pkg.installed Name: mysql-server Result: True Comment: Package mysql-server is already installed Started: 09:56:47.855453 Duration: 6.781 ms Changes: ---------- ID: mysql-service Function: file.managed Name: /etc/my.cnf Result: True Comment: File /etc/my.cnf is in the correct state Started: 09:56:47.865735 Duration: 72.983 ms Changes: ---------- ID: mysql-service Function: service.running Name: mysqld Result: True Comment: The service mysqld is already running Started: 09:56:47.939601 Duration: 169.518 ms Changes: ---------- ID: php-fpm-service Function: service.running Name: php-fpm Result: True Comment: The service php-fpm is already running Started: 09:56:48.109622 Duration: 157.914 ms Changes: Summary for node2.test.com ------------- Succeeded: 13 (changed=2) Failed: 0 ------------- Total states run: 13 Total run time: 2.514 s [root@salt-master112 dev]# |
node1和node2的apache配置文件,Listen位置内容也有相应变化。
1 2 3 4 5 |
[root@im109 ~]# vim /etc/httpd/conf/httpd.conf Listen 10.1.0.109:8080 # 00:50:56:a4:44:7a |
1 2 3 4 5 |
[root@im110 ~]# vim /etc/httpd/conf/httpd.conf Listen 10.1.0.110:8080 # 00:50:56:a4:44:7a |
微信扫描下方的二维码阅读本文