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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM