태그 보관물: openstack

redhat openstack director 10 install

아… 몇달전에 OpenStack Platform 8을 번역 했었는데… 이번에서야 osp director 10 설치 해봤다.

수요일 부터 토요일 까지 쭉 이거에만 매달려서 삽질 한것같다. 다음에는 이런 삽질을 하지 않을려고 여기에다 기록으로 남긴다. 생각해보니 4일 밖에 안되네 ㅋㅋ ; 짧은것 같지만 일도안하고 이거에만 매달려 있었으니 꽤 긴시간이다 ㅎㅎ(설치 건 몇개 해결하고 나서 약간 할 일이 없는 시간이었다. ㅋㅋ)

아마도 주변에서 같이 하는사람들이 몇명 있어서 도움이 많이 됐던것 같다.

일단 내가 test한 환경은 다음과 같다.

  • 32GB memory를 갖고 있는 노트북 1

1대에서 가상머신들을 만들어서 모든 test를 다 하였다. ㅋㅋ 회사에서 일 많이 하라고 사준 laptop인데 정말 잘 쓰고 있다. cpu는 좋으면 좋을 수록 test가 빨라져서 좋겠지만… i5-6200U CPU @ 2.30GHz 이런 cpu를 쓰고 있다.

하면서 여러 blog들을 많이 봤지만 아래 blog가 가장 좋더라.

https://keithtenzer.com/2016/05/30/red-hat-openstack-platform-8-lab-configuration-using-openstack-director/

기본적으로는 access.redhat.com 에 있는 osp 10 diretor installation and usage 문서를 중심으로 진행했다.

음… 일단 처음으로 redhat osp를 설치 하려면 redhat subscription이 필요한데 이건 redhat에 가입을 하여서 openstack 평가판 subscription을 받자. 60일간은 무제한으로 계속 쓸 수 잇다.

hypervisor에서 가상머신들이 사용할 provisioning network bridge를 만들자.

youngjulee@hypervisor :~⟫ cat > /tmp/provisioning.xml <<EOF

<network>

<name>provisioning</name>

<ip address=’192.0.2.254′ netmask=’255.255.255.0′>

</ip>

</network>

EOF

가상머신 환경

osp-director

  • cpu : 2

  • mem : 8192MB

  • disk : 30GB

  • nic : 2

    • provision (192.0.2.0/24)

    • external (192.168.127.0/24)

osp-node1

  • cpu : 2

  • mem : 8192

  • disk : 40GB

  • nic : 2

    • provision (192.0.2.0/24) x 2

osp-node2

  • cpu : 2

  • mem : 4096

  • disk : 40GB

  • nic : 2

    • provision (192.0.2.0/24) x 2

가상머신들을 위와같이 생성 시키고 osp-director에만 rhel7을 설치하자.

설치가 끝나면 먼저 user를 생성한다.

directorhostnamemanager.test.dom 으로 설정하였다.

[root@manager ~]# useradd stack

[root@manager ~]# passwd stack

### sudo 사용시 password를 안쓰게 setting한다. ###

[root@manager ~]# echo “stack ALL=(root) NOPASSWD:ALL” | tee -a /etc/sudoers.d/stack

[root@manager ~]# chmod 0440 /etc/sudoers.d/stack

### 사용자를 stack 으로 바꾼다. ###

[root@manager ~]# su – stack

[stack@manager ~]$

### templateimage directory 생성 ###

[stack@manager ~]$ mkdir ~/templates ~/images

### hostname 을 설정 ###

[stack@manager ~]$ sudo hostnamectl set-hostname manager.test.dom

[stack@manager ~]$ sudo hostnamectl set-hostname –transient manager.test.dom

[stack@manager ~]$ cat /etc/hosts

127.0.0.1 manager.test.dom manager localhost localhost.localdomain localhost4 localhost4.localdomain4

### subscription 등록 ###

[stack@manager ~]$ sudo subscription-manager register

[stack@manager ~]$ sudo subscription-manager list –available –all

[stack@manager ~]$ sudo subscription-manager attach –pool=8a85f98158fbf71a0158fd01b66*****

[stack@manager ~]$ sudo subscription-manager repos –disable=*

[stack@manager ~]$ sudo subscription-manager repos –enable=rhel-7-server-rpms –enable=rhel-7-server-extras-rpms –enable=rhel-7-server-rh-common-rpms –enable=rhel-ha-for-rhel-7-server-rpms –enable=rhel-7-server-openstack-10-rpms

### update ###

[stack@manager ~]$ sudo yum update -y

[stack@manager ~]$ sudo reboot

### director package install ###

[stack@manager ~]$ sudo yum install -y python-tripleoclient

### director 설정 ###

[stack@manager ~]$ cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf

[stack@manager ~]$ grep -iv ‘^$\|^#’ undercloud.conf

[DEFAULT]

generate_service_certificate = true

local_interface = eth1

enable_ui = true

[auth]

### test 환경이라 모두 default로 하고, 필수적으로 바꿔야만 하는것들만 바꿨다. generate_service_certificate 이것은 인증서를 자동적으로 만들어주는 항목이다. osp 10 director에서 다시 사용가능한(89에서는 잠시 못썻엇다.) director web ui를 설치하려면 인증서가 반드시 필요하다.

enable_ui 이것이 director web uienable하겠냐고 묻는것이다.

local_interface 이게 우리가 test에 사용할 provisioning network interface를 어떤 걸로 할건지 정하는거다. external network nic을 지정하면 안된다.

내가 뭘 잘못했는지 web ui는 아직 잘 안되더라. ###

### undercloud install ###

[stack@manager ~]$ openstack undercloud install

### 위에서 설정이 잘못되거나 하면 여기서 먼저 실패를 많이 하는데 /home/stack/instack/install-undercloud.log 여기에 install log가 쌓이니까 한번 확인해보자. 사실 화면에 뜨는거랑 별반 차이 없다. ㅎㅎ###

### 설치가 다 되었으면 stackrcsource 하자 ###

[stack@manager ~]$ source ~/stackrc

### overcloud node image 등록 ###

[stack@manager ~]$ sudo yum install rhosp-director-images rhosp-director-images-ipa

[stack@manager ~]$ cd ~/images

[stack@manager ~]$ for i in /usr/share/rhosp-director-images/overcloud-full-latest-10.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-10.0.tar; do tar -xvf $i; done

[stack@manager ~]$ openstack overcloud image upload –image-path /home/stack/images/

[stack@manager ~]$ openstack image list

+————————————–+————————+——–+

| ID | Name | Status |

+————————————–+————————+——–+

| 90ae7e6f-f307-40df-9714-6be5bf68fed9 | bm-deploy-ramdisk | active |

| 9952802e-536c-411a-b65f-ce837c250a00 | bm-deploy-kernel | active |

| b8f55c8f-22cb-4181-a9d5-172b75ab4242 | overcloud-full | active |

| b3105b8f-422d-4c3e-b5ce-568dba0d0327 | overcloud-full-vmlinuz | active |

| 19f48688-5ea0-4599-86ce-af186152d58c | overcloud-full-initrd | active |

+————————————–+————————+——–+

### ipxe에 사용할 image가 잘 들어가 있나 확인 ###

[stack@manager ~]$ ls -l /httpboot

### undercloud neutron subnetdns 등록 ###

[stack@manager ~]$ neutron subnet-list

+————————————–+——+————–+———————————————+

| id | name | cidr | allocation_pools |

+————————————–+——+————–+———————————————+

| 1c701fc4-d44d-4c90-80e8-ea1173483830 | | 192.0.2.0/24 | {“start”: “192.0.2.5”, “end”: “192.0.2.24”} |

+————————————–+——+————–+———————————————+

[stack@manager ~]$ neutron subnet-update 1c701fc4-d44d-4c90-80e8-ea1173483830 –dns-nameserver 192.168.127.1

### 192.168.127.1hypervisor(laptop)iphypervisor에다가 dnsmasq돌려놔서 dns로 쓰고있다. ###

[stack@manager ~]$ neutron subnet-show 1c701fc4-d44d-4c90-80e8-ea1173483830

### dns_nameservers 확인 ###

### pxe_ssh config ###

원래 여기에 ipmi 설정이 들어가야 하는데 kvm으로 하다보니까 그게 안되서 ipmi driverpxe_ssh로 설정하고 진행을 해야한다. 여기서 위에나온 blog를 참조햇다.

youngjulee@hypervisor :~⟫ cat << EOF > /etc/polkit-1/localauthority/50-local.d/50-libvirt-user-stack.pkla

[libvirt Management Access]

Identity=unix-user:stack

Action=org.libvirt.unix.manage

ResultAny=yes

ResultInactive=yes

ResultActive=yes

EOF

youngjulee@hypervisor :~⟫ useradd stack

youngjulee@hypervisor :~⟫ passwd stack

[stack@manager ~]$ ssh-copy stack@192.168.127.1

[stack@manager ~]$ cat /tmp/nodes.txt

52:54:00:75:48:0a

52:54:00:c9:e9:fa

[stack@manager ~]$ jq . << EOF > ~/instackenv.json

{

“ssh-user”: “stack”,

“ssh-key”: “$(cat ~/.ssh/id_rsa)”,

“power_manager”: “nova.virt.baremetal.virtual_power_driver.VirtualPowerManager”,

“host-ip”: “192.168.127.1”,

“arch”: “x86_64”,

“nodes”: [

{

“pm_addr”: “192.168.127.1”,

“pm_password”: “$(cat ~/.ssh/id_rsa)”,

“pm_type”: “pxe_ssh”,

“mac”: [

“$(sed -n 1p /tmp/nodes.txt)”

],

“cpu”: “2”,

“memory”: “8192”,

“disk”: “40”,

“arch”: “x86_64”,

“pm_user”: “stack”

},

{

“pm_addr”: “192.168.127.1”,

“pm_password”: “$(cat ~/.ssh/id_rsa)”,

“pm_type”: “pxe_ssh”,

“mac”: [

“$(sed -n 2p /tmp/nodes.txt)”

],

“cpu”: “2”,

“memory”: “4096”,

“disk”: “40”,

“arch”: “x86_64”,

“pm_user”: “stack”

}

]

}

EOF

### 자동으로 instack.json file이 생성되는 script이다. ###

### overcloud에서 쓸 flavor 생성 ###

[stack@manager ~]$ for n in control compute ; do nova flavor-delete $n; done

[stack@manager ~]$ openstack flavor create –id auto –ram 8192 –disk 39 –vcpus 2 –swap 2048 control

[stack@manager ~]$ openstack flavor create –id auto –ram 4096 –disk 37 –vcpus 2 –swap 2048 compute

### disk크기는 3GB 정도 작게 설정하자. introspection 끝나고 확인 해보면 disk size40GB가 아닌 39GB로 나온다. 위에서 40GB로 잡게되면 나중에 vaild host가 없어서 배포 실패한다는 error가 뜨게된다. ###

[stack@manager ~]$ openstack flavor set –property “cpu_arch”=”x86_64” –property “capabilities:boot_option”=”local” –property “capabilities:profile”=”control” control

[stack@manager ~]$ openstack flavor set –property “cpu_arch”=”x86_64” –property “capabilities:boot_option”=”local” –property “capabilities:profile”=”compute” compute

[stack@manager ~]$ openstack baremetal import –json ~/instackenv.json

[stack@manager ~]$ openstack baremetal configure boot

[stack@manager ~]$ openstack baremetal node list

### overcloud node hardware introspecting ###

[stack@manager ~]$ for node in $(openstack baremetal node list –fields uuid -f value) ; do openstack baremetal node manage $node ; done

[stack@manager ~]$ openstack overcloud node introspect –all-manageable –provide

### introspection 현황은 아래와 같이 확인하자. ###

[stack@manager ~]$ sudo journalctl -l -u openstack-ironic-inspector -u openstack-ironic-inspector-dnsmasq -u openstack-ironic-conductor -f

### hypervisor에서도 잘켜지는지, dhcp기능은 잘 되는지, ipxe를 통해서 inspector.ipxe file은 잘 가져 오는지를 확인한다. ###

youngjulee@hypervisor :~⟫ virt-viewer osp-node1

### node tagging ###

[stack@manager ~]$ openstack baremetal node set –property capabilities=’profile:compute,boot_option:local’ be07221a-0405-4067-a00e-c86dad2b7b2f

[stack@manager ~]$ openstack baremetal node set –property capabilities=’profile:control,boot_option:local’ 853ed41c-3a4d-4e06-887a-364cee11995e

[stack@manager ~]$ openstack overcloud profiles list

### root disk 정의 ###

[stack@manager ~]$ yum install -y crudini

[stack@manager ~]$ mkdir swift-data ; cd swift-data

[stack@manager ~]$ export SWIFT_PASSWORD=`sudo crudini –get /etc/ironic-inspector/inspector.conf swift password`

[stack@manager ~]$ for node in $(ironic node-list | grep -v UUID| awk ‘{print $2}’); do swift -U service:ironic -K $SWIFT_PASSWORD download ironic-inspector inspector_data-$node; done

[stack@manager ~]$ for node in $(ironic node-list | awk ‘!/UUID/ {print $2}’); do echo “NODE: $node” ; cat inspector_data-$node | jq ‘.inventory.disks’ ; echo “—–” ; done

NODE: be07221a-0405-4067-a00e-c86dad2b7b2f

[

{

“size”: 42949672960,

“rotational”: true,

“vendor”: “ATA”,

“name”: “/dev/sda”,

“wwn_vendor_extension”: null,

“wwn_with_extension”: null,

“model”: “QEMU HARDDISK”,

“wwn”: null,

“serial”: “QM00001”

}

]

—–

NODE: 853ed41c-3a4d-4e06-887a-364cee11995e

[

{

“size”: 42949672960,

“rotational”: true,

“vendor”: “0x1af4”,

“name”: “/dev/vda”,

“wwn_vendor_extension”: null,

“wwn_with_extension”: null,

“model”: “”,

“wwn”: null,

“serial”: null

}

]

—–

### 사실 root disk1개만 있을 때는 궂이 설정해줄 필요는 없는데 여러개의 disk가 있을 때 특정 disk를 설정diskroot로 쓸 수가 있다. 위에나온 정보들중에 하나를 이용해서 지정 할 수 있다. ###

[stack@manager ~]$ openstack baremetal node set –property root_device='{“serial”: “QM00001“}’ be07221a-0405-4067-a00e-c86dad2b7b2f

### heat template 가져오기 ###

[stack@manager ~]$ cp -av /usr/share/openstack-tripleo-heat-templates/environments/* ~/template/

### overcloud deploy ###

[stack@manager ~]$ cat overcloud-deploy.sh

openstack overcloud deploy \

–templates \

-e /home/stack/templates/environments/network-environment.yaml \

–stack youngju-cloud \

–control-scale 1 \

–compute-scale 1 \

–control-flavor control \

–compute-flavor compute \

–ntp-server pool.ntp.org \

–neutron-network-type vxlan \

–neutron-tunnel-types vxlan \

–timeout 60

[stack@manager ~]$ bash overcloud-deploy.sh

### 지금부터가 진짜 문제다. 위와 똑같이 진행 했다면 아마도 error가 안나겠지만 여러가지 이유로 deploy가 실패한다. 아래의 urltroubleshooting 하는 방법이 있는데 괜찮더라. ###

http://docs.openstack.org/developer/tripleo-docs/troubleshooting/troubleshooting-overcloud.html