• python jinjia2模板使用


    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
    
  • 相关阅读:
    springboot、监听器
    springboot、拦截器
    Thymeleaf模板引擎
    springboot-banner.txt
    springboot,swagger2
    springboot 热部署
    判断是否为微信环境下打开的网页
    后台接收json数据
    ios 面试题
    iOS 适配问题
  • 原文地址:https://www.cnblogs.com/liujitao79/p/5363378.html
Copyright © 2020-2023  润新知