-
OS: CentOS 7.4, RAM: +8GB, HDD: +50GB, CPU: 02
-
NIC1 - eth0 (Dải dùng để dự phòng cho các mục đích khác - dải này không cần ra internet):
- IP address: 10.10.10.202
- Subnet mask: 255.255.255.0
-
NIC2 - eth1: dải mạng sử dụng cho API của OpenStack và MNGT Network
- IP address: 172.16.68.202
- Subnet mask: 255.255.255.0
- Gateway: 172.16.68.1 (khi cấu hình địa chỉ IP cho máy cài đặt kolla thì sử dụng gateway này)
-
NIC3 - eth2: Đây là dải để cấp public network, dải này VM ra vào internet. Khi đặt IP cho máy cài Kolla thì không cần đặt gateway (gateway dùng cho các VM sau này). Trong hướng dẫn này tôi sẽ quy hoạch ip từ 192.168.20.150 tới 192.168.20.170 để cấp cho các máy ảo ở các bước dưới.
- IP address: 192.168.20.202
- Subnet mask: 255.255.255.0
- Gateway: 192.168.20.1 (Không cần đặt gateway này khi cấu hình cho máy cài đặt kolla.
-
Mô hình:
-
Đặt hostname
hostnamectl set-hostname srv1kolla
-
Đặt IP
echo "Setup IP eth0" nmcli c modify eth0 ipv4.addresses 10.10.10.202/24 nmcli c modify eth0 ipv4.method manual nmcli con mod eth0 connection.autoconnect yes echo "Setup IP eth1" nmcli c modify eth1 ipv4.addresses 172.16.68.202/24 nmcli c modify eth1 ipv4.gateway 172.16.68.1 nmcli c modify eth1 ipv4.dns 8.8.8.8 nmcli c modify eth1 ipv4.method manual nmcli con mod eth1 connection.autoconnect yes echo "Setup IP eth2" nmcli c modify eth2 ipv4.addresses 192.168.20.202/24 nmcli c modify eth2 ipv4.method manual nmcli con mod eth2 connection.autoconnect yes
-
Cấu hình cơ bản và và khởi động lại
sudo systemctl disable firewalld sudo systemctl stop firewalld sudo systemctl disable NetworkManager sudo systemctl stop NetworkManager sudo systemctl enable network sudo systemctl start network sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config init 6
-
Cài đặt các gói phụ trợ
yum install -y epel-release yum update -y yum install -y git wget ansible gcc python-devel python-pip yum-utils byobu
-
Cài đặt docker
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce
-
Tạo thư mục đưới
mkdir /etc/systemd/system/docker.service.d
-
Khai báo file cấu hình cho kolla
tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF' [Service] MountFlags=shared EOF
-
Khai báo đường dẫn registry cho docker, lưu ý thay IP cho phù hợp với hệ thống của các bạn.
sed -i "s/\/usr\/bin\/dockerd/\/usr\/bin\/dockerd --insecure-registry 172.16.68.202:4000/g" /usr/lib/systemd/system/docker.service
-
Khởi động và kích hoạt docker
systemctl daemon-reload systemctl enable docker systemctl restart docker
-
Tải image pike dành cho docker, các image này có dung lượng ~ 4 GB, thời gian lâu hay chậm thì phụ thuộc vào tốc độ mạng.
byobu cd /root wget http://tarballs.openstack.org/kolla/images/centos-source-registry-pike.tar.gz
-
Tạo registry local để chứa các images này
mkdir /opt/registry tar xf centos-source-registry-pike.tar.gz -C /opt/registry
-
Tới đây nên tắt máy đi và snapshot lại nếu triển khai trên các máy ảo - mục tiêu là để cài lại nếu có nhu cầu thì việc tải các images và đặt vào registry đã sẵn sàng.
-
Tạo container chạy registry.
docker run -d -p 4000:5000 --restart=always --name registry -v /opt/registry:/var/lib/registry registry
-
Kiểm tra lại xem registry đã hoạt động hay chưa, IP sẽ hiển thị theo thực tế trong lab của bạn.
curl http://172.16.68.202:4000/v2/lokolla/centos-source-memcached/tags/list
-
Kết quả là:
{"name":"lokolla/centos-source-memcached","tags":["5.0.1"]}
-
Tải kolla
cd /opt git clone https://github.com/openstack/kolla-ansible.git -b stable/pike cd kolla-ansible pip install -r requirements.txt python setup.py install cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/ cp /usr/share/kolla-ansible/ansible/inventory/* .
-
Tạo file chứa mật khẩu bằng lệnh dưới, sau khi kết thúc lệnh thì file chứa mật khẩu sẽ nằm tại
/etc/kolla/passwords.yml
kolla-genpwd
-
Cài đặt ansible 2.2 đối với openstack pike
pip uninstall -y ansible pip install ansible==2.2
-
Sửa file
/etc/kolla/globals.yml
để khai báo các thành phần cài trong kolla. Lưu ý: IP172.16.68.202
có thể được thay theo thực tế của môi trường lab mà bạn sử dụng.sed -i 's/#kolla_base_distro: "centos"/kolla_base_distro: "centos"/g' /etc/kolla/globals.yml sed -i 's/#kolla_install_type: "binary"/kolla_install_type: "source"/g' /etc/kolla/globals.yml sed -i 's/#openstack_release: ""/openstack_release: "5.0.1"/g' /etc/kolla/globals.yml sed -i 's/kolla_internal_vip_address: "10.10.10.254"/kolla_internal_vip_address: "172.16.68.202"/g' /etc/kolla/globals.yml sed -i 's/#docker_registry: "172.16.0.10:4000"/docker_registry: "172.16.68.202:4000"/g' /etc/kolla/globals.yml sed -i 's/#docker_namespace: "companyname"/docker_namespace: "lokolla"/g' /etc/kolla/globals.yml sed -i 's/#network_interface: "eth0"/network_interface: "eth1"/g' /etc/kolla/globals.yml sed -i 's/#neutron_external_interface: "eth1"/neutron_external_interface: "eth2"/g' /etc/kolla/globals.yml sed -i 's/#enable_aodh: "no"/enable_aodh: "yes"/g' /etc/kolla/globals.yml sed -i 's/#enable_ceilometer: "no"/enable_ceilometer: "yes"/g' /etc/kolla/globals.yml sed -i 's/#enable_gnocchi: "no"/enable_gnocchi: "yes"/g' /etc/kolla/globals.yml sed -i 's/#enable_central_logging: "no"/enable_central_logging: "yes"/g' /etc/kolla/globals.yml sed -i 's/#enable_grafana: "no"/enable_grafana: "yes"/g' /etc/kolla/globals.yml sed -i 's/#enable_haproxy: "yes"/enable_haproxy: "no"/g' /etc/kolla/globals.yml sed -i 's/#enable_redis: "no"/enable_redis: "yes"/g' /etc/kolla/globals.yml sed -i 's/#nova_compute_virt_type: "kvm"/nova_compute_virt_type: "qemu"/g' /etc/kolla/globals.yml
-
Trong khai báo trên chúng ta đã:
-
Khai báo thêm các thành phần ngoài OpenStack như: grafana để cấu hình tích hợp với gnocchi, bộ ELK để thu thập log.
-
Không khai báo cinder (tức là không có volume).
-
Việc khai báo này rất linh hoạt, bạn có thể mở file
/etc/kolla/globals.yml
để xem thêm khai báo khác.
- Kiểm tra trước khi cài
cd /opt/kolla-ansible/
kolla-ansible prechecks -i all-in-one
-
Kết quả như sau là ok.
PLAY RECAP ********************************************************************* localhost : ok=73 changed=0 unreachable=0 failed=0 [root@compute1 kolla-ansible]#
-
Cài đặt openstack bằng kolla
kolla-ansible deploy -i all-in-one
-
Sau khi cài đặt xong ta sẽ có màn hình thông báo kết quả như dưới
TASK [common : Registering common role has run] ******************************** skipping: [localhost] TASK [skydive : include] ******************************************************* skipping: [localhost] PLAY RECAP ********************************************************************* localhost : ok=313 changed=198 unreachable=0 failed=0
-
Kiểm tra lại sau khi cài đặt xong
kolla-ansible post-deploy
-
Kết quả như dưới là ok:
PLAY [Creating admin openrc file on the deploy node] *************************** TASK [setup] ******************************************************************* ok: [localhost] TASK [template] **************************************************************** changed: [localhost] PLAY RECAP ********************************************************************* localhost : ok=2 changed=1 unreachable=0 failed=0
-
Cài gói OpenStack Client
pip install python-openstackclient
-
Sau khi sửa xong thực thi biến môi trường để sử dụng các lệnh của openstack, có thể mở file
/etc/kolla/admin-openrc.sh
ra xem mật khẩu của tài khoản admin trong OpenStacksource /etc/kolla/admin-openrc.sh
-
Kiểm tra hoạt động của OpenStack bằng lệnh
openstack token issue
sẽ có kết quả như dưới.[root@srv1kolla ~]# openstack token issue +------------+----------------------------------+ | Field | Value | +------------+----------------------------------+ | expires | 2017-12-26T14:46:59+0000 | | id | df158a1058824fc986ae1b6fc01c4a18 | | project_id | 600b721c249344d0ac9b96b0536772e1 | | user_id | 49b00a4612864cceb7d6aefd0595fd09 | +------------+----------------------------------+ [root@srv1kolla ~]#
-
Sửa file
/usr/share/kolla-ansible/init-runonce
để khai báo network, tạo image ... cho phù hợp với hệ thống của bạn. Trong hướng dẫn này sẽ cấp dải IP của public network từ192.168.20.150
đến192.168.20.170
, dải này trùng với dải của NIC2 (eth2) được khai báo ở trên. Sửa 03 dòng trong file/usr/share/kolla-ansible/init-runonce
tương ứng với nội dung dưới.EXT_NET_CIDR='192.168.20.0/24' EXT_NET_RANGE='start=192.168.20.150,end=192.168.20.170' EXT_NET_GATEWAY='192.168.20.1'
-
Tiếp tục sửa file
/usr/share/kolla-ansible/init-runonce
, bỏ tùy chọn--no-dhcp
trong dòng dưới để có thể gắn máy ảo vào dải provider network, bởi vì khi gắn máy ảo vào dải provider network sẽ cần có dhcp-agent cấp metadata.
openstack subnet create --no-dhcp \
--allocation-pool ${EXT_NET_RANGE} --network public1 \
--subnet-range ${EXT_NET_CIDR} --gateway ${EXT_NET_GATEWAY} public1-subnet
- Dòng mới sẽ trở thành
openstack subnet create \
--allocation-pool ${EXT_NET_RANGE} --network public1 \
--subnet-range ${EXT_NET_CIDR} --gateway ${EXT_NET_GATEWAY} public1-subnet
-
Thực thi file dưới để thiết lập các khai báo về network, subnet, router, tải image cirros, tạo keypair, flavor cho hệ thống OpenStack. Trong quá trình thiết lập, màn hình nhắc lệnh để đồng ý tạo keypair, hãy ấn
Enter
bash /usr/share/kolla-ansible/init-runonce
-
Kết quả sẽ hiển thị thông báo tạo máy ảo.
Done. To deploy a demo instance, run: openstack server create \ --image cirros \ --flavor m1.tiny \ --key-name mykey \ --nic net-id=864371f9-4080-47f3-a6fa-d6e339d4863d \ demo1 [root@srv1kolla ~]#
-
Thực thi đoạn lệnh dưới để tạo máy ảo.
openstack server create \
--image cirros \
--flavor m1.tiny \
--key-name mykey \
--nic net-id=864371f9-4080-47f3-a6fa-d6e339d4863d \
demo1
-
Để xem mật khẩu của tài khoản admin trong openstack, xem nội dung file
cat /etc/kolla/admin-openrc.sh
. Sử dụng mật khẩu đó để đăng nhập vào horizon của OpenStack, trong hướng dẫn này là172.16.68.202
. -
Cần thực hiện floating ip cho máy ảo
demo1
đã tạo ở trên vì chúng ta vừa tạo máy ảo và gắn vào dải mạng selfservice-network, quan sát trong ảnh: http://prntscr.com/hsgb9f -
Ngoài ra bạn còn có thể đăng nhập vào các hệ thống khác mà kolla đã cài đặt. Mật khẩu của các tài khoản này xem tại file
/etc/kolla/passwords.yml
-
Đăng nhập vào grafana: http://172.16.68.202:3000
-
Đăng nhập vào kibana: http://172.16.68.202:5601
-
Có thể kiểm tra xem kolla đã tạo các container gì bằng lệnh
docker ps
, việc sử dụng các container này các bạn vọc ở các ghi chép về container khác nhé ;). Kết quả của lênhdocker ps
trong hướng dẫn này là[root@srv1kolla ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f58f7a2f6e61 172.16.68.202:4000/lokolla/centos-source-grafana:5.0.1 "kolla_start" 4 hours ago Up 4 hours grafana 3f6dab262496 172.16.68.202:4000/lokolla/centos-source-aodh-notifier:5.0.1 "kolla_start" 4 hours ago Up 4 hours aodh_notifier 9aeb74c41b14 172.16.68.202:4000/lokolla/centos-source-aodh-listener:5.0.1 "kolla_start" 4 hours ago Up 4 hours aodh_listener d79d5ffd3c2c 172.16.68.202:4000/lokolla/centos-source-aodh-evaluator:5.0.1 "kolla_start" 4 hours ago Up 4 hours aodh_evaluator 2ab007ff6ff3 172.16.68.202:4000/lokolla/centos-source-aodh-api:5.0.1 "kolla_start" 4 hours ago Up 4 hours aodh_api 4d509b93dba9 172.16.68.202:4000/lokolla/centos-source-ceilometer-compute:5.0.1 "kolla_start" 4 hours ago Up 4 hours ceilometer_compute 6abba0b0d518 172.16.68.202:4000/lokolla/centos-source-ceilometer-central:5.0.1 "kolla_start" 4 hours ago Up 4 hours ceilometer_central a453e23802d6 172.16.68.202:4000/lokolla/centos-source-ceilometer-notification:5.0.1 "kolla_start" 4 hours ago Up 4 hours ceilometer_notification e0bf1fa0bdbd 172.16.68.202:4000/lokolla/centos-source-gnocchi-statsd:5.0.1 "kolla_start" 4 hours ago Up 4 hours gnocchi_statsd 18c0086fce94 172.16.68.202:4000/lokolla/centos-source-gnocchi-metricd:5.0.1 "kolla_start" 4 hours ago Up 4 hours gnocchi_metricd 1e3f1c9d8c6c 172.16.68.202:4000/lokolla/centos-source-gnocchi-api:5.0.1 "kolla_start" 4 hours ago Up 4 hours gnocchi_api 7988691fa1a3 172.16.68.202:4000/lokolla/centos-source-horizon:5.0.1 "kolla_start" 4 hours ago Up 4 hours horizon 1b87a029fc66 172.16.68.202:4000/lokolla/centos-source-heat-engine:5.0.1 "kolla_start" 4 hours ago Up 4 hours heat_engine c533f0f5da10 172.16.68.202:4000/lokolla/centos-source-heat-api-cfn:5.0.1 "kolla_start" 4 hours ago Up 4 hours heat_api_cfn a27ea03979c8 172.16.68.202:4000/lokolla/centos-source-heat-api:5.0.1 "kolla_start" 4 hours ago Up 4 hours heat_api 7f5b3b70a08e 172.16.68.202:4000/lokolla/centos-source-neutron-metadata-agent:5.0.1 "kolla_start" 4 hours ago Up 4 hours neutron_metadata_agent 3b53f8024015 172.16.68.202:4000/lokolla/centos-source-neutron-l3-agent:5.0.1 "kolla_start" 4 hours ago Up 4 hours neutron_l3_agent 772cb406d2ee 172.16.68.202:4000/lokolla/centos-source-neutron-dhcp-agent:5.0.1 "kolla_start" 4 hours ago Up 4 hours neutron_dhcp_agent 21338c2e4caf 172.16.68.202:4000/lokolla/centos-source-neutron-openvswitch-agent:5.0.1 "kolla_start" 4 hours ago Up 4 hours neutron_openvswitch_agent 2932fea5acfc 172.16.68.202:4000/lokolla/centos-source-neutron-server:5.0.1 "kolla_start" 4 hours ago Up 4 hours neutron_server 0202d68e0d26 172.16.68.202:4000/lokolla/centos-source-openvswitch-vswitchd:5.0.1 "kolla_start" 4 hours ago Up 4 hours openvswitch_vswitchd b9f4f1b8ac0e 172.16.68.202:4000/lokolla/centos-source-openvswitch-db-server:5.0.1 "kolla_start" 4 hours ago Up 4 hours openvswitch_db b71947600d8c 172.16.68.202:4000/lokolla/centos-source-nova-compute:5.0.1 "kolla_start" 4 hours ago Up 4 hours nova_compute 88b6c267cba8 172.16.68.202:4000/lokolla/centos-source-nova-novncproxy:5.0.1 "kolla_start" 4 hours ago Up 4 hours nova_novncproxy 9e3106edce35 172.16.68.202:4000/lokolla/centos-source-nova-consoleauth:5.0.1 "kolla_start" 4 hours ago Up 4 hours nova_consoleauth 38c593711c4b 172.16.68.202:4000/lokolla/centos-source-nova-conductor:5.0.1 "kolla_start" 4 hours ago Up 4 hours nova_conductor 4610ba120faf 172.16.68.202:4000/lokolla/centos-source-nova-scheduler:5.0.1 "kolla_start" 4 hours ago Up 4 hours nova_scheduler 0b4eb028b13b 172.16.68.202:4000/lokolla/centos-source-nova-api:5.0.1 "kolla_start" 4 hours ago Up 4 hours nova_api 0ff40a7c2751 172.16.68.202:4000/lokolla/centos-source-nova-placement-api:5.0.1 "kolla_start" 4 hours ago Up 4 hours placement_api 00b245ac39e4 172.16.68.202:4000/lokolla/centos-source-nova-libvirt:5.0.1 "kolla_start" 4 hours ago Up 4 hours nova_libvirt ae3da3c3bad8 172.16.68.202:4000/lokolla/centos-source-nova-ssh:5.0.1 "kolla_start" 4 hours ago Up 4 hours nova_ssh 09dab48a29bc 172.16.68.202:4000/lokolla/centos-source-glance-registry:5.0.1 "kolla_start" 4 hours ago Up 4 hours glance_registry 2262a29319f0 172.16.68.202:4000/lokolla/centos-source-glance-api:5.0.1 "kolla_start" 4 hours ago Up 4 hours glance_api b1990c3de8c6 172.16.68.202:4000/lokolla/centos-source-keystone:5.0.1 "kolla_start" 4 hours ago Up 4 hours keystone 63dc797513c4 172.16.68.202:4000/lokolla/centos-source-rabbitmq:5.0.1 "kolla_start" 4 hours ago Up 4 hours rabbitmq 969dde12b96c 172.16.68.202:4000/lokolla/centos-source-mariadb:5.0.1 "kolla_start" 4 hours ago Up 4 hours mariadb 799301efb8f5 172.16.68.202:4000/lokolla/centos-source-memcached:5.0.1 "kolla_start" 5 hours ago Up 5 hours memcached 193a134aabff 172.16.68.202:4000/lokolla/centos-source-kibana:5.0.1 "kolla_start" 5 hours ago Up 5 hours kibana 5668805e3100 172.16.68.202:4000/lokolla/centos-source-redis-sentinel:5.0.1 "kolla_start" 5 hours ago Up 5 hours redis_sentinel f30defa95908 172.16.68.202:4000/lokolla/centos-source-redis:5.0.1 "kolla_start" 5 hours ago Up 5 hours redis 7a35dba775d7 172.16.68.202:4000/lokolla/centos-source-elasticsearch:5.0.1 "kolla_start" 5 hours ago Up 5 hours elasticsearch add07977da7c 172.16.68.202:4000/lokolla/centos-source-cron:5.0.1 "kolla_start" 5 hours ago Up 5 hours cron 5020076f8e63 172.16.68.202:4000/lokolla/centos-source-kolla-toolbox:5.0.1 "kolla_start" 5 hours ago Up 5 hours kolla_toolbox 14e76371e77b 172.16.68.202:4000/lokolla/centos-source-fluentd:5.0.1 "kolla_start" 5 hours ago Up 5 hours fluentd 0577297ef94c registry "/entrypoint.sh /e..." 5 hours ago Up 5 hours 0.0.0.0:4000->5000/tcp registry