zoukankan      html  css  js  c++  java
  • foreman容器化部署

    一、前言

        最近公司要求对一批GPU服务器安装操作系统,之前同事一直采用cobbler安装系统,一旦服务器设置为pxe优先启动,会出现重复安装系统的问题,并且如果线上服务器忘记修改第一启动项为硬盘启动,可能还会出现线上服务器计划外重装系统,造成数据丢失的风险。因为上一家我们一直采用foreman来安装系统,foreman可以很好避免这个问题。当然,foreman的强大不止于此,但也存在部署繁琐的问题,因此,研究了一下如何将foreman容器化,从而达到一键快速部署foreman的目的。

    二、部署

        以下是我的操作步骤:

    1、环境介绍

    [root@foreman foreman-1.0]# rpm -qa | grep docker
    docker-ce-cli-18.09.0-3.el7.x86_64
    docker-ce-18.09.0-3.el7.x86_64
    [root@foreman foreman-1.0]# cat /etc/redhat-release 
    CentOS Linux release 7.3.1611 (Core) 
    [root@foreman foreman-1.0]#
    

      

    2、安装docker

    参考docker官方部署文档:https://docs.docker.com/install/linux/docker-ce/centos/#os-requirements

    yum install -y yum-utils device-mapper-persistent-data lvm2
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    yum install docker-ce
    systemctl start docker && systemctl enable docker
    

    3、制作基础镜像

    [root@foreman ~]# mkdir base && cd base && cat Dockerfile
    FROM centos:latest
    MAINTAINER eden
    RUN yum -y install systemd systemd-libs
    RUN yum clean all; 
    (cd /lib/systemd/system/sysinit.target.wants/; for i in *; 
    do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); 
    rm -f /lib/systemd/system/multi-user.target.wants/*;
    rm -f /etc/systemd/system/*.wants/*;
    rm -f /lib/systemd/system/local-fs.target.wants/*; 
    rm -f /lib/systemd/system/sockets.target.wants/*udev*; 
    rm -f /lib/systemd/system/sockets.target.wants/*initctl*; 
    rm -f /lib/systemd/system/basic.target.wants/*;
    rm -f /lib/systemd/system/anaconda.target.wants/*;
    VOLUME [ "/sys/fs/cgroup" ]
    CMD ["/usr/sbin/init"]
    [root@foreman base]# docker build --rm -t centos:systemd .

    4、制作foreman base镜像

    [root@foreman ~]# mkdir foreman && cd foreman && cat Dockerfile
    FROM centos:systemd
    MAINTAINER eden
    RUN yum -y --nogpgcheck install epel-release
    RUN yum -y --nogpgcheck install https://yum.puppetlabs.com/puppet5/puppet5-release-el-7.noarch.rpm
    RUN yum -y --nogpgcheck install https://yum.theforeman.org/releases/1.20/el7/x86_64/foreman-release.rpm
    RUN yum -y --nogpgcheck install foreman-installer
    #RUN foreman-installer
    [root@foreman foreman]# docker build --rm -t foreman:base .

    5、基于base镜像安装foreman

    [root@foreman ~]# docker run --privileged -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro -h foreman.tuputech.ai --add-host foreman.tuputech.ai:127.0.0.1 --name foreman-base -t foreman:base
    [root@foreman ~]# docker exec -it foreman-base bash
    [root@foreman-base /]# foreman-installer
    

    6、将安装好foreman的容器commit为镜像

    # docker commit -m "2018-12-19 20:00" 035bdb3afa25 foreman:v1.0
    

    7、最后封装

    [root@foreman ~]# mkdir foreman-1.1 && cd foreman-1.1 && cat Dockerfile
    FROM foreman:v1.0
    MAINTAINER eden
    CMD ["/usr/sbin/init"]
    
    [root@foreman foreman-1.1]# docker build --rm -t foreman:v1.1 .
    

    8、启动foreman

    docker run --privileged -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro -h foreman.tuputech.ai --name foreman --add-host foreman.tuputech.ai:127.0.0.1 --restart=always --network=host -t foreman:v1.1
    
    by 狮子座男人
  • 相关阅读:
    Fiddler-常用技巧
    Fiddler-工作原理
    C语言-EOF和feof()判断文件结尾的区别
    C语言-一个fopen函数中未使用二进制模式(b)引发的血案
    VIM-不常用或不知道的技巧
    C语言-srand种子详解
    C语言-字符串操作函数
    C语言-Makefile经典教程(掌握这些足够)
    分布拟合——正态/拉普拉斯/对数高斯/瑞利 分布
    曲线拟合——(2)拉普拉斯/瑞利/对数正态 曲线
  • 原文地址:https://www.cnblogs.com/edenlong/p/10146446.html
Copyright © 2011-2022 走看看