linux使用jinja2模板_SaltStack配置管理工具jinja2模板的使用
SaltStack是使用的YAML語言來將sls文件解釋成它自己可以識(shí)別的內(nèi)容,Jinja是一種基于PYTHON的模板引擎,在SLS文件里可以直接使用jinja模板來做一些操作,比如當(dāng)我們需要對(duì)多臺(tái)服務(wù)器做一些apache服務(wù)配置時(shí),由于每臺(tái)服務(wù)器信息不一樣(比如ip不同),如果為每臺(tái)服務(wù)器去創(chuàng)建SLS文件就不太合理,而通過jinja模板則可以用生成變量→讀取變量的方式來為每個(gè)服務(wù)器設(shè)置應(yīng)有的信息。下面來看看定義jinja模板的方法:
jinja2模板的基本使用
1、首先將source文件中需要引用變量的內(nèi)容改為{{ 變量名 }},如修改apache配置文件中的端口信息
Listen {{ PORT }}2、對(duì)SLS文件進(jìn)行編輯以定義模板并且給變量傳值,在第一步中定義了幾個(gè)變量就必須給幾個(gè)變量傳值
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: #下面設(shè)定變量的值
PORT: 8080 #之前定義的PORT變量值為8080
- require:
- pkg: apache-service
service.running:
- name: httpd
- enable: True
- reload: True
- watch:
-file: apache-service3、執(zhí)行salt '*' state.highstate,然后查看配置文件發(fā)生的變化,可以看到PORT這個(gè)變量的值變成了8080
jinja2模板的高級(jí)使用:
在基本使用中由于修改的是端口,端口信息一般是固定的,如果想要修改的信息是每個(gè)minion自身的IP就沒辦法設(shè)置一個(gè)通用的信息了,這個(gè)時(shí)候需要通過其他方法來獲取minion相關(guān)信息,這里可以使用Grains、Pillar和執(zhí)行模塊三個(gè)方法來獲取,下面用Grains舉例設(shè)置IP的辦法
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: #下面設(shè)定變量的值
HOST: {{ grains['fqdn_ip4'][0] }} #[fqdn_ip4]代表的是IP,該信息需要先執(zhí)行salt '*' grains.items查詢,由于grains查詢輸出的是列表,會(huì)有多個(gè)值,需要加上[0]代表取第一個(gè)值
PORT: 8080 #之前定義的PORT變量值為8080
- require:
- pkg: apache-service
service.running:
- name: httpd
- enable: True
- reload: True
- watch:
-file: apache-service
總結(jié)
以上是生活随笔為你收集整理的linux使用jinja2模板_SaltStack配置管理工具jinja2模板的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python定时播放音乐程序_pytho
- 下一篇: linux 统计_聊聊 Linux 的内