https://gist.github.com/wrunk/1317933

#!/usr/bin/env python
# -*- coding: utf-8 -*- from jinja2 import Environment, FileSystemLoader
import os if __name__ == '__main__':
j2_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'jinja2')
kickstart_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'kickstart')
pxe_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'pxe') j2_env = Environment(loader=FileSystemLoader(j2_path)) host = {
'root_password': '123456',
'os': 'centos-6',
'install_host': 'install.localhost',
'name': 'bjtn-g18-10-11',
'interface': [
{'dev': 'em1', 'mac': 'aa:aa:aa:aa:aa:01', 'ip': '10.0.10.11', 'mask': '255.255.255.0'},
{'dev': 'em2', 'mac': 'aa:aa:aa:aa:aa:02', 'ip': '200.0.10.11', 'mask': '255.255.255.192'}
],
'gateway': '10.0.10.1'
} with open(os.path.join(kickstart_path, host['interface'][0]['mac']), 'w') as f:
f.write(j2_env.get_template('ks-centos-6').render(host=host)) with open(os.path.join(pxe_path, host['interface'][0]['mac']), 'w') as f:
f.write(j2_env.get_template('pxe-centos-6').render(host=host))

pxe-centos-6

LABEL {{ os }}
MENU DEFAULT
MENU LABEL {{ mac }}
KERNEL {{ os }}/vmlinuz
APPEND initrd={{ os }}/initrd.img ks=http://{{ install_host }}/kickstart/{{ mac }} ksdevice=link ramdisk_size=102400 console=tty0 console=ttyS1,115200

ks-centos-6

# kickstart
lang en_US.UTF-8
keyboard us
timezone Asia/Shanghai auth --enableshadow --passalgo=sha512
#python -c 'import crypt; print(crypt.crypt("MyPassword", "$6$MySalt"))'
rootpw --iscrypted {{ host.root_password }}
text
install
skipx
url --url http://{{ host.install_host }}/{{ host.os }} bootloader --location=mbr
zerombr
clearpart --drives=sda --all #--initlabel part swap --fstype='swap' --ondisk=sda --size=8000
part / --fstype='ext4' --ondisk=sda --size=50000
part /opt --fstype='ext4' --ondisk=sda --grow --size=1 network --device={{ host.interface[0].mac }} --bootproto=dhcp --activate firewall --disabled
selinux --disabled
services --disabled=NetworkManager,ip6tables,iptables,postfix,cpuspeed
services --enabled=network
firstboot --disabled
reboot %packages
@Base
wget
%end %pre
clearpart --drives=sda --all
/usr/sbin/parted -s /dev/sda mklabel gpt
%end %post
cat > /etc/sysconfig/network << _EOF_
NETWORKING=yes
HOSTNAME={{ host.name }}
GATEWAY={{ host.gateway }}
_EOF_ {% for nic in host.interface %}
cat > /etc/sysconfig/network-scripts/ifcfg-{{ nic.dev }} << _EOF_
BOOTPROTO=static
DEVICE={{ nic.dev }}
IPADDR={{ nic.ip }}
NETMASK={{ nic.mask }}
ONBOOT=yes
_EOF_
{% endfor %}
%end

python jinjia2模板使用的更多相关文章

  1. [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)

    oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...

  2. flask中jinjia2模板引擎使用详解1

    在之前的文章中我们介绍过flask调用jinja2模板的基本使用,这次我们来说一下jinjia2模板的使用 Jinja2 在其是一个 Python 2.4 库之前,被设计 为是灵活.快速和安全的. 模 ...

  3. 7、Flask实战第7天:Jinjia2模板

    Jinja2模板介绍和查找路径 在前面的章节中,视图只是直接返回文本,然而在实际生产环境中其实很少这样用,因为实际的页面大多带有样式和复杂逻辑的HTML代码,这可以让浏览器其渲染出非常漂亮的页面. 我 ...

  4. day94:flask:Jinjia2模板引擎&flask中的CSRF攻击&Flask-SQLAlchemy的创建模型类和基本的增删改查

    目录 1.Jinjia2模板引擎 1.Jinjia2加载模板并传递数据到模板中 2.Jinjia2的模板语句 3.模板中特有的变量和函数 4.模板中内置的过滤器 5.自定义过滤器 6.模板继承 2.在 ...

  5. flask中jinjia2模板使用详解2

    接上文 注释的使用 在jinjia2模板中,使用{# #}进行代码注释,如下所示 运行后发现,注释不会被render出来 去掉空行 两种方法可以去掉jinjia2模板中的空白行,一是设置jinjia2 ...

  6. flask中jinjia2模板引擎详解4

    接上文 For循环 和其它编程语言一样,for用来编辑列表中的项.下面以一个例子来说明for在flask的jinjia2模板中的使用. 创建一个模板list.html 代码如下{% extends & ...

  7. flask之jinjia2模板语言

    flask_jinjia2.py ''' flask中的jinjia2模板语言(和django中模板类似): (1)模板变量{{ }} (2)模板标签{% %} ①for循环遍历 {% for foo ...

  8. python jinjia2 使用语法

    简介 对于jinjia2来说,模板仅仅是文本文件,可以生成任何基于文本的文件格式,例如HTML.XML.CSV.LaTex 等等,以下是基础的模板内容: <!DOCTYPE html> & ...

  9. python jinjia2 高级

    高层api class jinja2.Environment([options]) Enviroment:环境,是Jinjia2的核心组件,它包含重要的共享变量,如配置.过滤器.测试.全局变量.模板加 ...

随机推荐

  1. (WF)InvalidWorkflowException

    之前一直运行正常的xaml突然不能运行了,总是显示如下错误. The test caught an unhandled exception. Caught: System.Activities.Inv ...

  2. Navicat(连接) -1高级设置

    高级设置 设置位置当创建一个新的连接,Navicat 将在设置位置创建一个子文件夹.大多数文件都保存在该子文件夹: Navicat 对象 服务器类型 扩展名 查询 全部 .sql 导出查询结果设置文件 ...

  3. [CSS]去除inline-block元素间距的几种方法

    当我们使用inline-block 时,会出现空白间距问题. 但这些间距对我们的布局,或兼容性产生影响,我们需要去除它,该怎么办?下面简单介绍几种方法: 1.去掉html元素之间的空格,直接写在一行. ...

  4. ADF_Starting系列2_使用ADF开发富Web应用程序之建立Business Services

    2013-05-01 Created By BaoXinjian

  5. BIP_开发案例04_通过BI Publisher实现打印报表的二维码(案例)(待整理)

    2014-01-01 Created BaoXinjian

  6. Java语法基础动手动脑实践

    输出结果为: 0.05+0.01=0.0600000000000000051.0-0.42=0.58000000000000014.015*100401.49999999999994123.3/100 ...

  7. Chrome每次打開都要打開123.sogou.com

    剛開始還以為中毒了,又是殺毒又是掃描的,最後發覺,原來就是chrome的一個設置被改了. Chrome->設置->啟動時 : 選打开特定网页或一组网页->設置網頁 , 將其中的123 ...

  8. python argparse模块解析命令行选项简单使用

    argparse模块的解析命令行选项简单使用 util.py #!/usr/bin/env python # coding=utf-8 import argparse parser = argpars ...

  9. Java基础-事件处理

  10. JDK错误

    WARN org.mortbay.log: Failed to read file: /usr/lib/jvm/jdk1.8.0_66/jre/lib/ext/._cldrdata.jar 删除._c ...