• 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 狮子座男人
  • 相关阅读:
    在ubuntu上搭建开发环境9---Ubuntu删除ibus出现的问题及解决
    在ubuntu上搭建开发环境8---Ubuntu搭建Android开发环境
    在ubuntu上搭建开发环境7---ubuntu安装JDK
    在ubuntu上搭建开发环境6---安装和使用vim及其插件(Pathogen和NERDTree)
    在ubuntu上搭建开发环境5---联想Y470安装 ubuntu,解决双显卡发热等问题
    在ubuntu上搭建开发环境4---ubuntu简单的搭建LAMP环境和配置
    在ubuntu上搭建开发环境3---解决Y470一键系统重装之后恢复ubuntu引导启动的方法
    在ubuntu上搭建开发环境2---Win7、Ubuntu双系统正确删除Ubuntu
    在ubuntu上搭建开发环境1---在windows7的基础上在安装ubuntu(双系统)
    单例模式的七种写法
  • 原文地址:https://www.cnblogs.com/edenlong/p/10146446.html
Copyright © 2020-2023  润新知