1. 程式人生 > >製作CentOS7.3的OpenStack映象

製作CentOS7.3的OpenStack映象

OS : CentOS Linux release 7.3.1611 (Core) KVM version: qemu-kvm-1.5.3 映象執行環境: OpenStack Mitaka: 本文不去介紹,如何下載iso檔案,也不介紹如何安裝虛擬機器,不過這裡給大家一個提示吧,安裝的kvm虛擬機器,分割槽最好是 /boot採用 基本分割槽其他的分割槽採用lvm的型別 闡述: 本文修改雲主機密碼的方式為 metadata 注入方式;其原理是在 雲主機內部編寫一個 重置密碼的指令碼,達到重置密碼的效果; 該指令碼會去查詢 “http://169.254.169.254/openstack/latest/meta_data.json” 這個地址的值,只要changePasswd 的值為True,才會去修改密碼; 瞭解到前臺傳值,changePasswd=True的狀態至少會保留1分鐘,而我的指令碼卻是一直迴圈著(達到立馬修改密碼的效果),所以,這個密碼至少會被修改20次,雖然密碼一直是那個值,但是在系統裡確實是已經被修改了好多次,為了排除這種問題,所以下面指令碼重置密碼的情況是,當changePasswd=False
並且 當changePasswd=True的狀態時,才會去修改密碼;(你沒有看錯,就是這樣),具體請看下面的指令碼 初始密碼的設定: 在openstack 控制節點 執行:
用法:
nova meta 雲主機id 或者 主機名稱 set changePasswd=True admin_pass=密碼

例項:
nova meta 17d96745-63a7-4401-87de-f34ca418a5e6 set changePasswd=True [email protected]
下面開始操作 一、配置網絡卡的配置,保留主要的就ok,把那些些uuid的配置項都刪除,比如下邊的內容都應該保留下來
001_修改網絡卡的配置檔案,修改為精簡型的網絡卡配置檔案 vim /etc/sysconfig/network-scripts/ifcfg-eth0 
NAME=eth0
DEVICE=eth0
BOOTPROTO=dhcp
TYPE=Ethernet
ONBOOT=yes
闡述:  
        這裡寫eth1 是為了雲主機對應兩個網絡卡做的,如果能確保以後只用一個網絡卡的,可以不用寫eth1;
但是現在的趨勢都是設定的兩個網路,一個作為內網,一個作為外網
vim /etc/sysconfig/network-scripts/ifcfg-eth1
NAME=eth1
DEVICE=eth1
BOOTPROTO=dhcp
TYPE=Ethernet
ONBOOT=yes
002_重新啟動網路配置 systemctl restart network.service 二、安裝一些自己需要的工具 000_新增自己的內部源,沒有的同學,跳過此步驟即可; 001_這裡我只安裝 cloud-init 、acpid 和 jq acpid服務作用:重新引導或關閉例項 jq 服務作用:處理json資料 cloud-init服務作用: 配置使用metadata(我把官網的簡紹截一下圖)
yum -y install acpid cloud-init  jq

chkconfig acpid on

chkconfig cloud-init on

echo "NOZEROCONF=yes" >> /etc/sysconfig/network
002_修改核心引數,並更新核心配置
sed -i '/GRUB_CMDLINE_LINUX/ i\GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0"\' /etc/default/grub

grub2-mkconfig -o /boot/grub2/grub.cfg
003_修改cloud.cfg配置檔案 這裡,就直接把需要修改的地方用 紅色字型標註出來啦,當然也會把 替換的命令貼出來
sed -i 's/disable_root: 1/disable_root: 0/g' /etc/cloud/cloud.cfg
sed -i 's/ssh_pwauth: 0/ssh_pwauth: 1/g' /etc/cloud/cloud.cfg
sed -i 's/name: centos/name: root/g' /etc/cloud/cloud.cfg
下面編輯 cloud.cfg 部分僅供參考 vim /etc/cloud/cloud.cfg users:  - default disable_root: 0 ssh_pwauth:   1 locale_configfile: /etc/sysconfig/i18n mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2'] resize_rootfs_tmp: /dev ssh_deletekeys:   0 ssh_genkeytypes:  ~ syslog_fix_perms: ~ cloud_init_modules:  - migrator  - bootcmd  - write-files  - growpart  - resizefs  - set_hostname  - update_hostname  - update_etc_hosts  - rsyslog  - users-groups  - ssh cloud_config_modules:  - mounts  - locale  - set-passwords  - yum-add-repo  - package-update-upgrade-install  - timezone  - puppet  - chef  - salt-minion  - mcollective  - disable-ec2-metadata  - runcmd cloud_final_modules:  - rightscale_userdata  - scripts-per-once  - scripts-per-boot  - scripts-per-instance  - scripts-user  - ssh-authkey-fingerprints  - keys-to-console  - phone-home  - final-message system_info:   default_user:     name: root     lock_passwd: true     gecos: Cloud User     groups: [wheel, adm, systemd-journal]     sudo: ["ALL=(ALL) NOPASSWD:ALL"]     shell: /bin/bash   distro: rhel   paths:     cloud_dir: /var/lib/cloud     templates_dir: /etc/cloud/templates   ssh_svcname: sshd # vim:syntax=yaml 004_新增修改、重置密碼的指令碼(這些操作均由下面的指令碼一鍵執行新增) 將下面的內容複製到一個檔案,並賦予執行的許可權即可  自動新增寫好的服務指令碼,並且自己新增為開機啟動,還會把 /sbin 對應的檔案加密  vim meta_centos73.sh
#!/usr/bin/bash
cat > /etc/init.d/meta_data_service << END
#!/usr/bin/bash
#
# meta_data_service Start up meta_data_service the server daemon
#
# chkconfig: 2345 98 98
# description: meta_data_service sspaas-cloud daemon
#
BASE_DIR=/sbin
ARGV="\[email protected]"
start()
{
echo "START meta_data SERVERS"
\$BASE_DIR/meta_data > /dev/null 2>&1 &
}
stop()
{
#meta_data.pid
echo "STOP meta_data SERVERS"
meta_datapid=\`ps -ef|grep meta_data|grep -v grep|awk '{ print\$2 }'\`
for i in \$meta_datapid
do
 kill -9 \$meta_datapid
done
}
case \$ARGV in
start)
start
ERROR=\$?
;;
stop)
stop
ERROR=\$?
;;
restart)
stop
start
ERROR=\$?
;;
*)
echo "meta_data [start|restart|stop]"
esac
exit \$ERROR
END

cat > /etc/init.d/meta_network_service << END
#!/usr/bin/bash
#
# meta_network_service Start up meta_network_service the server daemon
#
# chkconfig: 2345 99 99
# description: meta_network_service sspaas-cloud daemon
#
BASE_DIR=/sbin
ARGV="\[email protected]"
start()
{
echo "START meta_data SERVERS"
\$BASE_DIR/meta_network > /dev/null 2>&1 &
}
stop()
{
#meta_data.pid
echo "STOP meta_data SERVERS"
meta_networkpid=\`ps -ef|grep meta_network|grep -v grep|awk '{ print\$2 }'\`
for i in \$meta_networkpid
do
 kill -9 \$meta_networkpid
done
}
case \$ARGV in
start)
start
ERROR=\$?
;;
stop)
stop
ERROR=\$?
;;
restart)
stop
start
ERROR=\$?
;;
*)
echo "meta_network [start|restart|stop]"
esac
exit \$ERROR
END

cat > /sbin/meta_data << END
#!/usr/bin/bash
m=\`curl http://169.254.169.254/openstack/latest/meta_data.json | jq '.meta'\`
   status=\`echo \$m | jq '.changePasswd' | sed 's/"//g'\`
   password=\`echo \$m | jq '.admin_pass' | sed 's/"//g'\`
     if [ \$status == True ];then
       echo root:\$password | chpasswd
     fi

while true
  do
    m1=\`curl http://169.254.169.254/openstack/latest/meta_data.json | jq '.meta' | jq '.changePasswd' | sed 's/"//g'\`
    sleep 3
    m2=\`curl http://169.254.169.254/openstack/latest/meta_data.json | jq '.meta'\`
       changepw=\`echo \$m2 | jq '.changePasswd' | sed 's/"//g'\`
       pass=\`echo \$m2 | jq '.admin_pass' | sed 's/"//g'\`

    if [ \$m1 == False ] && [ \$changepw == True ];then
      echo root:\$pass | chpasswd
    else
      echo "noting to do" >/dev/null
    fi
  done
END

cat > /sbin/meta_network << END
#!/usr/bin/bash
while true
  do
     temp=\`ifconfig eth0 | grep broadcast | awk '{ print \$2 }' | awk -F "." 'BEGIN{ OFS="." }{ print \$1,\$2,\$3 }'\`
     ip0=\`ip a | grep eth0: | wc -l\`
     ip1=\`ip a | grep eth1: | wc -l\`
     route0=\`route -n | grep "^0.0.0.0" | grep \$temp.254 |wc -l\`

     if [ \$ip0 -eq 1 ] && [ \$ip1 -eq 1 ] && [ \$route0 -eq 1 ];then
      route del default gw \$temp.254
     elif [ \$ip0 -eq 1 ] && [ \$ip1 -eq 0 ] && [ \$route0 -eq 0 ];then
      route add default gw \$temp.254
     fi
  sleep 3
  done
END

chmod +x /sbin/meta_data
chmod +x /sbin/meta_network
chmod +x /etc/init.d/meta_data_service
chmod +x /etc/init.d/meta_network_service
#
gzexe /sbin/meta_data
rm -f /sbin/meta_data~
gzexe /sbin/meta_network
rm -f /sbin/meta_network~
#
chkconfig --add meta_data_service
chkconfig --add meta_network_service
下面 005 的操作僅僅用作刪除上面meta_centos73.sh 的執行結果 005_刪除上面指令碼新增的內容,可以執行下面的操作
chkconfig --del meta_data_service
chkconfig --del meta_network_service
rm -f /sbin/meta_data
rm -f /sbin/meta_network
rm -f /etc/init.d/meta_data_service 
rm -f /etc/init.d/meta_network_service
006_刪除之前新增的不必要的資訊
rm -f anaconda-ks.cfg 
rm -f meta_centos73.sh
007_關機即可 poweroff 到這裡 openstack 的centos7.3映象就做完成啦 下面的操作,主要是吧 大的映象進行壓縮,並進行上傳,下面的操作均在做映象的伺服器(宿主機)上操作 三、技能擴充套件: 001_顯示kvm中所有虛擬機器 virsh list --all 002_執行清理任務,如,之前的歷史命令,mac地址,ip地址等  virt-sysprep -d CentOS7 003_在kvm中刪除虛擬機器,僅僅刪除xml檔案,不會刪除映象檔案 virsh undefine CentOS7 004_將映象壓縮 qemu-img convert -c -O qcow2    壓縮之前的路徑+名字 壓縮之後的路徑+名字

相關推薦

為Openstack製作CentOS7映象

1)CentOS7官方iso改名為centos7.iso並上傳至控制節點的/home/image目錄; [[email protected] home]# mkdir image [[email protected] home]# cd image/ [[email pro

Centos7.3映象U盤製作方法

準備工作: 1. 首先需要下載映象檔案 CentOS-7-x86_64-Minimal-1708.iso(mini版) 2.在機器安裝UltraISO工具 製作U盤: 1.開啟UltraISO程式,通過客戶端開啟iso檔案 2.選單選擇   啟動--

[docker]centos7 supervisor映象製作參考

# ============================================================================= # # CentOS-7 7.2.1511 x86_64 - Supervisor # # ==

openstack使用2——製作centos7映象

一、前言 使用映象是安裝好的系統做成映象,在建立雲主機後用戶可以進入對Centos系統進行配置的介面,省去安裝系統的麻煩。 直接使用Centos的iso作為映象,使用者在建立完虛擬機器開啟安裝系統時,安裝程式無法識別到本地磁碟,只有為虛擬機器添加了塊儲存,才

製作CentOS7.3的OpenStack映象

OS : CentOS Linux release 7.3.1611 (Core) KVM version: qemu-kvm-1.5.3 映象執行環境: OpenStack Mitaka: 本文不去介紹,如何下載iso檔案,也不介紹如何安裝虛擬機器,不過這裡給大家一個提示

centos7.4批量自動化安裝(pxe、cobbler、製作自動化iso映象);pxe安裝;cobbler安裝;

前言 學IT的人經常要去而作業系統,而裝作業系統大部分都是互動式的操作,也就是說安裝時需要有人在旁邊設定語言,時間,網路,或者點下一步,下一步這樣子,裝系統變成了一個人機互動的過程。如果裝一臺作業系統還可以,但是如果給機房裝作業系統,有多臺的作業系統

ProxmoxVE 之 建立centos7基礎映象模板

   上面左邊是我的個人 微  信,如需進一步溝通,請加  微  信。  右邊是我的公眾號“Openstack私有云”,如有興趣,請關注。     有了ProxmoxVE之後,準備自己的一些虛擬機器

如何製作Windows10 qcow2映象

轉載連線:https://www.cnblogs.com/guoxiangyue/p/9188316.html 補充: 1. CentOS7.2版本的virt-manager 不直接支援 Windows10 (不知道Windows8.1能否成功安裝Windows10)。本人採用的是CentO

Docker入門系列之三:如何將dockerfile製作好的映象釋出到Docker hub上

這個系列的前兩篇文章,我們已經把我們的應用成功地在Docker裡通過nginx運行了起來,並且用dockerfile裡製作好了一個映象。 Docker入門系列之一:在一個Docker容器裡執行指定的web應用 Docker入門系列之二:使用dockerfile製作包含指定web應用的映象 本

基於docker的centos:latest映象製作nginx的映象

Dockerfile和nginx.repo在同一目錄下 先建立nginx.repo [[email protected] nginx]# cat nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages

GITHUB+DOCKER HUB製作kubernetes各映象

我們知道無論手動安裝kubernetes還是使用kubeadm安裝kubernetes,都需要以下各模組的docker映象。 kube-proxy-amd64 kube-scheduler-amd64 kube-controller-manager-amd64 kube-a

docker製作tomcat+jdk映象

1、安裝docker 2、拉取centos映象     docker pull centos 3、下載jdk級tomcat 4、將jdk和tomcat分別解壓 5、編寫Dockerfile檔案(Dockerfile與jdk和tomcat同一目錄) #使用的基礎映

製作各種docker映象

        做了一個星期的映象,收貨頗多,現在整理記錄下來,當做工作筆記吧。把常用的幾個映象的Dockerfile分享下。         製作基礎docker映象         第一步:設定docker映象源 yum install -y yum-priorit

docker搭建本地倉庫並製作自己的映象

1. 搭建本地倉庫 1.1 下載倉庫映象 docker pull registry 1.2 啟動倉庫容器 docker run -d -p 5000:5000 -v /home/registry/:/tmp/registry r

Docker的使用--製作自己的映象(四)

1、下載tomcat映象 docker pull xxxx 注:pull下來tomcat映象中都已包含jdk,所以不需要另行安裝jdk了 2、上傳需要部署的war包到自定義的工作目錄下 3、在上個步驟建立的通過工作目錄下建立Dockerfile檔案

使用apline,製作docker基礎映象

在傳統專案向基於容器和微服務的架構遷移時,其中最基本的操作是製作映象。本文介紹製作一個基礎的jdk映象,並push到私有倉庫。 1. 準備檔案 jdk 下載jdk-7u79-linux-x64.tar.gz,拷貝過來即可 java.sh 設

製作jdk基礎映象

建立dockerfile檔案jdk8.dockerfile FROM repo.cssweb.com:5000/chenhf/centos:latest MAINTAINER chenhf "[email protected]" RUN mkdir -p /u

Docker入門學習(4)----Dockerfile製作第一個映象和容器中的第一個javaweb應用

我們可以通過編寫Dockerfile來製作自己的映象,下面先動手來操作一下,製作一個映象,然後基於該映象執行一個容器,在容器裡執行我們自己的javaweb應用。 <1>拉取tomcat映象 docker pull tomcat 檢視映象: roo

製作tomcat docker映象

製作centos7-ssh映象配置Dockerfile映象構建檔案 docker run -it   centos   /bin/bash exit        #退出centos docker容器 docker tag 980e0e4c79ec   192.168.1

Docker 學習製作第一個映象

mac 下安裝docker  安裝成功後執行docker daemon  在命令列執行 docker info 可以檢視當前docker 的狀態 Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 2 Serve