OSP16.1 Deploy


## Download rhel 8.1 image.
在 https://access.redhat.com/downloads/content/479/ver=/rhel---8/8.1/x86_64/product-software 网站下载 ISO
计算sha256校验码:
certutil -hashfile rhel-8.1-x86_64-kvm.qcow2 SHA256

制作 KVM image
qemu-img create -f qcow2 rhel8.1_osp16.qcow2 200G

root@undercloud[21:27:08]:/home/undercloud# virt-df -h rhel-8.1-x86_64-kvm.qcow2
Filesystem                                Size       Used  Available  Use%
rhel8.1_osp16.qcow2:/dev/sda1             7.8G       1.1G       6.7G   15%
root@undercloud[21:28:15]:/home/undercloud# virt-resize --expand /dev/sda1 rhel-8.1-x86_64-kvm.qcow2 rhel8.1_osp16.qcow2
[   0.0] Examining rhel-8.1-x86_64-kvm.qcow2
**********

Summary of changes:

virt-resize: warning: unknown/unavailable method for expanding the xfs 
filesystem on /dev/sda1
/dev/sda1: This partition will be resized from 7.8G to 200.0G.

**********
[   4.0] Setting up initial partition table on rhel8.1.qcow2
[   4.2] Copying /dev/sda1
 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00

Resize operation completed with no errors.  Before deleting the old disk, 
carefully check that the resized disk boots and works correctly.

curl -O http://download.libguestfs.org/binaries/appliance/appliance-1.40.1.tar.xz
tar xvfJ appliance-1.40.1.tar.xz -C $HOME/
export LIBGUESTFS_PATH=$HOME/appliance/

virt-customize -a rhel8.1_osp16.qcow2 --root-password password:nokia123 --uninstall cloud-init


启动虚拟机
cp rhel8.1_osp16.qcow2 undercloud-red.qcow2
virsh define undercloud-red.xml
virsh start undercloud-red
virsh console undercloud-red

xfs_growfs /

配置 ip 和 ssh 连接
ip addr add 10.57.217.25/26 dev eth0
ip route add default via 10.57.217.1

cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
DEVICE="eth0"
BOOTPROTO="static"
BOOTPROTOv6="dhcp"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=10.57.217.25
NETMASK=255.255.255.192
GATEWAY=10.57.217.1
DNS=10.56.126.31
EOF
################################## Check List Before Deploy ######################################
# 1、所有被装节点,iOL 设置 IPMI over LAN Access Enable。
# 2、hostname 用小写,no_proxy 里面要加入 localdomain。
# 3、ctlplane 网络 dhcp 地址要大于被装节点数量。
# 4、controller 节点所有硬盘组一个 raid0 或 raid1,总容量大于 1TB。CinderLVMLoopDeviceSize 要小于总容量。
# 5、network.yaml 文件里面的 5个网络与 controller 和 compute 配置文件要一致。检查 interface 数量。
# 6、部署 overcloud 之前执行 image prepare,失败了的话多跑几遍,pull image 比较慢。
###################################################################################################
#### 修改主机名
hostname
sudo hostnamectl set-hostname pink.localhost

#### 配置 proxy
cat > /etc/environment << EOF
http_proxy=http://10.158.100.1:8080/
https_proxy=http://10.158.100.1:8080/
no_proxy=pink,pink.localhost,localhost,pink.ctlplane,pink.ctlplane.localdomain,127.0.0.1,192.168.28.0/24,10.107.196.126
EOF

cat > /etc/resolv.conf << EOF
nameserver 10.56.126.31
EOF

#### 创建 Stack 用户
useradd stack
passwd stack
echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack
chmod 0440 /etc/sudoers.d/stack
su - stack

mkdir ~/images
mkdir ~/templates

#### 注册主机
sudo subscription-manager register --username=nokia-cloudran-osp --password=nokiacloudran
sudo subscription-manager list --available --all --matches="Red Hat OpenStack"
sudo subscription-manager attach --pool=8a85f99c707807c80170a0c650dd3ba8
sudo subscription-manager release --set=8.2
sudo subscription-manager repos --disable=*
sudo subscription-manager repos --enable=rhel-8-for-x86_64-baseos-eus-rpms --enable=rhel-8-for-x86_64-appstream-eus-rpms --enable=rhel-8-for-x86_64-highavailability-eus-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms --enable=openstack-16.1-for-rhel-8-x86_64-rpms --enable=fast-datapath-for-rhel-8-x86_64-rpms
sudo dnf module disable -y container-tools:rhel8
sudo dnf module enable -y container-tools:2.0

#### 更新系统上的软件
sudo dnf update -y
sudo reboot

#### Undercloud Deploy
sudo dnf install -y python3-tripleoclient wget vim

# config containers-prepare-parameter.yaml
openstack tripleo container image prepare default \
    --local-push-destination \
    --output-env-file containers-prepare-parameter.yaml

cat >> containers-prepare-parameter.yaml << EOF
  ContainerImageRegistryCredentials:
    registry.redhat.io:
      nokia-cloudran-osp: nokiacloudran
  ContainerImageRegistryLogin: true
EOF

cp templates/containers-prepare-parameter.yaml ./

# config undercloud.conf
cp templates/undercloud.conf ./
openstack undercloud install

# Obtaining images for overcloud nodes
source ~/stackrc

# Install the rhosp-director-images and rhosp-director-images-ipa packages:
sudo dnf install -y rhosp-director-images rhosp-director-images-ipa

# Extract the images archives to the images directory in the stack user’s home (/home/stack/images):
cd ~/images
for i in /usr/share/rhosp-director-images/overcloud-full-latest-16.1.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-16.1.tar; do tar -xvf $i; done
openstack overcloud image upload --image-path /home/stack/images/
cd ..

openstack image list
ls -l /var/lib/ironic/httpboot

# Setting a nameserver for the control plane
openstack subnet set --dns-nameserver 10.56.126.31 ctlplane-subnet

# Undercloud container registry
sudo systemctl restart httpd

# Registering nodes for the overcloud
cp templates/instackenv.json ./
openstack overcloud node import --validate-only ~/instackenv.json
openstack overcloud node import ~/instackenv.json
openstack baremetal node list

# Inspecting the hardware of nodes
time openstack overcloud node introspect --all-manageable --provide

# Tagging nodes into profiles
for node in $(openstack baremetal node list -c UUID -c Name -f value | grep DL360 | awk '{print $1}'); do openstack baremetal node set --property capabilities='profile:control,boot_option:local' $node ; done
for node in $(openstack baremetal node list -c UUID -c Name -f value | grep C7000 | awk '{print $1}'); do openstack baremetal node set --property capabilities='profile:compute,boot_option:local' $node ; done
openstack overcloud profiles list

# Deployment
openstack overcloud roles generate -o roles_data.yaml Controller ComputeSriov


############################################################################################################################################################################################
# Modify ansible playbook
sudo su
# add proxy for podman login
cp /usr/share/ansible/roles/tripleo-podman/tasks/tripleo_podman_login.yml /usr/share/ansible/roles/tripleo-podman/tasks/tripleo_podman_login.yml_BAK
cat > /usr/share/ansible/roles/tripleo-podman/tasks/tripleo_podman_login.yml << EOF
---

- name: Perform container registry login(s)
  become: true
  shell: |-
    export http_proxy=http://10.158.100.1:8080/ && \\
    export https_proxy=http://10.158.100.1:8080/ && \\
    podman login --username=\$REGISTRY_USERNAME \\
                 --password=\$REGISTRY_PASSWORD \\
                 --tls-verify={{ tripleo_podman_tls_verify }} \\
                 \$REGISTRY
  environment:
    REGISTRY_USERNAME: "{{ lookup('dict', item.value).key }}"
    REGISTRY_PASSWORD: "{{ lookup('dict', item.value).value }}"
    REGISTRY: "{{ item.key }}"
  no_log: false
  loop: "{{ query('dict', tripleo_container_registry_logins) }}"
  register: registry_login_podman
  until: registry_login_podman.rc == 0
  delay: 4
  retries: 20
EOF
# remove volume type create
cp /usr/share/openstack-tripleo-heat-templates/deployment/cinder/cinder-api-container-puppet.yaml /usr/share/openstack-tripleo-heat-templates/deployment/cinder/cinder-api-container-puppet.yaml_BAK
sed -i  '/external_deploy_tasks:/,$d' /usr/share/openstack-tripleo-heat-templates/deployment/cinder/cinder-api-container-puppet.yaml
exit
sudo su
# add proxy for podman login
vim /usr/share/ansible/roles/tripleo-podman/tasks/tripleo_podman_login.yml +21
# remove volume type create
vim /usr/share/openstack-tripleo-heat-templates/deployment/cinder/cinder-api-container-puppet.yaml +503
exit
############################################################################################################################################################################################


sudo openstack tripleo container image prepare -e /home/stack/containers-prepare-parameter.yaml

nohup openstack overcloud deploy --templates \
    -r /home/stack/templates/roles_data.yaml \
    -e /home/stack/containers-prepare-parameter.yaml \
    -e /home/stack/templates/network-environment.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/host-config-and-reboot.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \
    -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-sriov.yaml \
    --log-file overcloud_install.log &

export http_proxy=http://10.158.100.1:8080/
export https_proxy=http://10.158.100.1:8080/
export http_proxy=http://10.110.44.22:8099 && export https_proxy=http://10.110.44.22:8099
podman login --username=nokia-cloudran-osp --password=nokiacloudran --tls-verify=True registry.redhat.io

# Add controller and compute nodes to /etc/hosts
openstack server list -c Name -c Networks -f value | awk -F ctlplane= '{print $2,$1}' | sudo tee -a /etc/hosts

ssh heat-admin@controller-0
sudo su
cd ~
cat > /etc/ssh/sshd_config << EOF
# File is managed by Puppet
Port 22

AcceptEnv LANG LC_*
ChallengeResponseAuthentication no
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
PermitRootLogin yes
PasswordAuthentication yes
PrintMotd yes
Subsystem sftp /usr/libexec/openssh/sftp-server
UseDns no
UsePAM yes
X11Forwarding yes
EOF
systemctl restart sshd
sudo iptables -I INPUT -s 10.0.0.0/8 -p tcp -m multiport --dports 22 -m state --state NEW -m comment --comment "omak: Accept ssh from Office subnet ipv4" -j ACCEPT
/sbin/service iptables save
passwd root

scp overcloudrc root@controller-0:~
ssh root@controller-0
source overcloudrc

openstack volume type create --public tripleo
openstack quota set \
    --cores -1 --instances -1 --key-pairs -1 --properties -1 --ram -1 \
    --server-groups -1 --server-group-members -1 --backups -1 --floating-ips -1 \
    --secgroup-rules -1 --secgroups -1 --networks -1 --subnets -1 --ports -1 \
    --routers -1 --rbac-policies -1 --subnetpools -1 \
    --per-volume-gigabytes -1 --volume-type -1 admin


##### Delete overcloud
rm -rf overcloud_install.log
openstack overcloud delete overcloud --yes

openstack stack delete overcloud --yes --wait

for node in $(openstack baremetal node list -c UUID -f value) ; do openstack baremetal node delete $node; done


# 部署完成后相关配置

openstack network create \
    --share --external --project admin \
    --provider-network-type vlan \
    --provider-physical-network tenant \
    --provider-segment 3401 \
    OAM-v4

openstack subnet create \
    --no-dhcp --project admin \
    --ip-version 4 \
    --network OAM-v4 \
    --subnet-range 10.107.169.128/26 \
    --gateway 10.107.169.129 \
    --allocation-pool start=10.107.169.132,end=10.107.169.190 \
    oam-subnet-v4

openstack network create \
    --share --external --project admin \
    --provider-network-type vlan \
    --provider-physical-network tenant \
    --provider-segment 3202 \
    OAM-v6

openstack subnet create \
    --no-dhcp --project admin \
    --ip-version 6 \
    --network OAM-v6 \
    --subnet-range 2a00:8a00:8000:5002:0:f:5:0/112 \
    --gateway 2a00:8a00:8000:5002:0:f:5:1 \
    --allocation-pool start=2a00:8a00:8000:5002:0:f:5:4,end=2a00:8a00:8000:5002:0:f:5:3f \
    oam-subnet-v6

openstack network create \
    --share --project admin \
    --provider-network-type flat \
    --provider-physical-network sriov-a \
    extnet-a

openstack subnet create \
    --no-dhcp --project admin \
    --ip-version 4 \
    --network extnet-a \
    --subnet-range 192.168.2.0/24 \
    --gateway 192.168.2.1 \
    --allocation-pool start=192.168.2.4,end=192.168.2.254 \
    extnet-subnet-a


openstack network create \
    --share --project admin \
    --provider-network-type flat \
    --provider-physical-network sriov-b \
    extnet-b

openstack subnet create \
    --no-dhcp --project admin \
    --ip-version 4 \
    --network extnet-b \
    --subnet-range 192.168.12.0/24 \
    --gateway 192.168.12.1 \
    --allocation-pool start=192.168.12.4,end=192.168.12.254 \
    extnet-subnet-b


openstack project create CBTS1
openstack user create --project CBTS1 --password system123 CBTS1user
openstack role add --project CBTS1 --user CBTS1user admin
openstack quota set \
    --cores 30 --instances 10 --ram 150 --key-pairs -1 --properties -1  \
    --server-groups -1 --server-group-members -1 --backups -1 --floating-ips -1 \
    --secgroup-rules -1 --secgroups -1 --networks -1 --subnets -1 --ports -1 \
    --routers -1 --rbac-policies -1 --subnetpools -1 \
    --per-volume-gigabytes -1 --volume-type -1 CBTS1

adduser CBTS1user
passwd CBTS1user
su - CBTS1user
cat > ~/CBTS1user_rc << EOF
# Clear any old environment that may conflict.
for key in $( set | awk '{FS="="}  /^OS_/ {print $1}' ); do unset $key ; done
export NOVA_VERSION=1.1
export COMPUTE_API_VERSION=1.1
export OS_USERNAME=CBTS1user
export OS_PROJECT_NAME=CBTS1
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_NO_CACHE=True
export OS_CLOUDNAME=overcloud
export no_proxy=10.107.196.126,127.0.0.1,192.168.28.0/24,192.168.28.42,localhost,pink,pink.ctlplane,pink.ctlplane.localdomain,pink.localhost
export PYTHONWARNINGS='ignore:Certificate has no, ignore:A true SSLContext object is not available'
export OS_AUTH_TYPE=password
export OS_PASSWORD=system123
export OS_AUTH_URL=http://10.107.196.126:5000
export OS_IDENTITY_API_VERSION=3
export OS_COMPUTE_API_VERSION=2.latest
export OS_IMAGE_API_VERSION=2
export OS_VOLUME_API_VERSION=3
export OS_REGION_NAME=regionOne
EOF

rm -rf /home/CBTS1user/custom_rc

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注