使用director 部署openstack
红帽director项目是基于openstack的Triple O项目发展而来,包括两套openstack环境:undercloud和overcloud
先部署好undercloud,然后利用undercloud部署overcloud,overcloud用于生产环境。
[实验拓扑]
[实验环境]
系统版本 |
openstack版本 |
RHEL7.3 |
RHOSP10 |
1.开始工作
配置yum
设置/etc/hosts
关闭selinux
关闭防火墙
自行安装虚拟化且保证正常工作
删除已经存在的虚拟机
#!/bin/bash
file=$(mktemp)
virsh list --all | tail -n +3 | grep -v ^$ | awk '{print $2}' > $file
while read line ; do
virsh undefine $line
done < $file
rm -rf /var/lib/libvirt/images/*
定义网络,执行脚本net_destroy.sh
cat net_destroy.sh
#!/bin/bash
################清除原有网络##########
virsh net-destroy default
virsh net-undefine default
#####创建新的网络#####关闭网络的DHCP####
cat > /tmp/external.xml <<EOF
<network>
<name>external</name>
<forward mode='nat'>
<nat> <port start='1024' end='65535'/>
</nat>
</forward>
<ip address='192.168.122.1' netmask='255.255.255.0'>
</ip>
</network>
EOF
cat > /tmp/pri.xml <<EOF
<network>
<name>pri</name>
<ip address='192.168.130.254' netmask='255.255.255.0'>
</ip>
</network>
EOF
virsh net-define /tmp/external.xml
virsh net-autostart external
virsh net-start external
virsh net-define /tmp/pri.xml
virsh net-autostart pri
virsh net-start pri
定义新虚拟机
cd /var/lib/libvirt/images/
for i in {1..3}; do qemu-img create -f qcow2 -o preallocation=metadata overcloud-node$i.qcow2 100G; done
chown qemu.qemu over*
for i in {1..3}; do virt-install --ram 10240 --vcpus 4 --os-variant rhel7 --disk path=/var/lib/libvirt/images/overcloud-node$i.qcow2,device=disk,bus=virtio,format=qcow2 --noautoconsole --vnc --network network:pri --network network:external --name overcloud-node$i --cpu SandyBridge,+vmx --dry-run --print-xml > /tmp/overcloud-node$i.xml; virsh define --file /tmp/overcloud-node$i.xml; done
2.部署overcloud
在undercloud上做操作
创建一个普通用户
useradd stack
echo redhat | passwd --stdin stack
设置其在使用sudo时不用密码,且可以使用所有权限
echo "stack ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/stack
chmod 0440 /etc/sudoers.d/stack
安装director软件包
sudo yum install -y python-tripleoclient
cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf
内容如下:
cat undercloud.conf
[DEFAULT]
local_ip = 192.168.130.1/24
undercloud_public_vip = 192.168.130.2
undercloud_admin_vip = 192.168.130.3
local_interface = eth1
masquerade_network = 192.168.130.0/24
dhcp_start = 192.168.130.100
dhcp_end = 192.168.130.150
network_cidr = 192.168.130.0/24
network_gateway = 192.168.130.1
inspection_iprange = 192.168.130.30,192.168.130.99
generate_service_certificate = true
certificate_generation_ca = local
安装director
openstack undercloud install
准备部署overcloud所需要的镜像
sudo yum install rhosp-director-images rhosp-director-images-ipa
cp /usr/share/rhosp-director-images/overcloud-full-latest-8.0.tar ~/images/
cp /usr/share/rhosp-director-images/ironic-python-agent-latest-8.0.tar ~/images/
解压所有镜像
cd ~images
for tarfile in *.tar; do tar -xf $tarfile; done
这个包有问题,直接上传包使用(网盘)。
导入镜像到undercloud
openstack overcloud image upload --image-path /home/stack/images/
查看已经导入的镜像
openstack image list
在上传过程中,还有一些镜像会拷贝到 /httpboot里
设置undercloud里dns所使用的DNS,这条不是必须要做的:
neutron subnet-list
neutron subnet-update UUID --dns-nameserver 192.168.122.1
3.准备注册节点的json文件
查看undercloud有多少overcloud节点信息
ironic node-list
把用于部署overcloud的机器的信息导入到undercloud里,创建instackenv.json文件,在文件里需要修改私钥格式及需要overcloud节点pri网络的mac地址
更改私钥格式设置
while read aa ; do echo -n "${aa}\n"; done < id_rsa > aaa
获取所有虚拟机的pri类型网卡的mac
#!/bin/bash
file=$(mktemp)
virsh list --all | tail -n +3 | grep -v ^$ | awk '{print $2}' > $file
while read line ; do
virsh domiflist $line | awk '$3 == "pri" {print "'$line'",$5}'
done < $file
instackenv.json的具体内容见上课视频。
修改/etc/ironic/ironic.conf,确保enable_drivers里有pxe_ssh
enabled_drivers = pxe_ipmitool,pxe_ssh,pxe_drac,pxe_ilo
保存退出。
4.安装overcloud
在undercloud上导入overcloud节点信息,即注册节点
openstack baremetal import --json ~/instackenv.json
为节点分配镜像
openstack baremetal configure boot
ironic node-list
设置标签,指定哪个是控制节点,哪台是计算节点
ironic node-update UUID add properties/capabilities='profile:control,boot_option:local'
ironic node-update UUID add properties/capabilities='profile:compute,boot_option:local'
或者
openstack baremetal node set --property capabilities='profile:control,boot_option:local' UUID
openstack baremetal node set --property capabilities='profile:compute,boot_option:local' UUID
查看
openstack overcloud profiles list
检查节点属性
openstack baremetal introspection bulk start
或者单独为某节点设置
openstack baremetal node manage $newUUID
openstack overcloud node introspect $newUUID --provide
开始安装overcloud里的虚拟机(即部署控制节点和计算节点)
openstack overcloud deploy --templates --libvirt-type qemu --control-scale 1 --compute-scale 1 --neutron-tunnel-types vxlan --neutron-network-type vxlan
5.登录的两种方式
1.通过nova list,查看控制节点的IP
ssh heat-admin@IP
sudo -i
hiera keystone::admin_password
获取密码
2.在director机器的stack的家目录里,有一个文件overcloudrc
里面有浏览器登录的地址,和admin的密码