云网牛站
所在位置:首页 > Linux云服务器 > 使用Ansible在KVM上部署OpenContrail的方法

使用Ansible在KVM上部署OpenContrail的方法

2019-02-27 21:49:25作者:吴可稿源:云网牛站

本文介绍使用Ansible在KVM上部署OpenContrail的方法,此设置将完全在CentOS 7服务器上完成,你可以在Ubuntu虚拟机管理程序上执行相同操作,只有OpenContrail虚拟机才能在CentOS 7上运行。让我们首先安装将运行KVM的虚拟机监控程序所需的软件包,你可以使用部署VM来部署OpenContrail服务,但这不是必需的,因为可以使用一个主机系统来部署Ansible服务。

 

在CentOS 7上安装Ansible

使用以下命令在CentOS上安装Ansible:

$ sudo yum -y install epel-release

$ sudo yum -y install git ansible

参考:在RHEL 8/CentOS 8系统上安装和配置Ansible

 

禁用SELinux并停止firewalld

为避免Firewalld和SELinux所需的任何进一步配置,你可以禁用以下两者:

# setenforce 0

# sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# cat /etc/selinux/config

# systemctl disable firewalld && systemctl stop firewalld

参考:在RHEL 8/CentOS 8系统中禁用SELinux的方法

 

安装KVM以及管理程序所需的所有工具

让我们安装KVM和我们为此设置所需的其他工具:

yum install -y python-urllib3 libguestfs-tools net-tools libvirt-python \

virt-install libvirt git ansible python-pip qemu-kvm bridge-utils

确认你已启用虚拟化并启动libvirt服务:

# lsmod | grep kvm 

kvm_intel    170086 0

kvm 566340   1 kvm_intel

irqbypass    13503 1 kvm

# systemctl enable libvirtd && systemctl start libvirtd

 

为OpenContrail VM配置主机桥

由于我们在上一步中安装了bridge-utils,因此我们可以配置我们将插入VM的管理桥,我的网桥配置如下所示,你可以根据自己的环境进行修改:

# cat /etc/sysconfig/network-scripts/ifcfg-em1 

TYPE="Ethernet"

NAME="em1"

DEVICE="em1"

ONBOOT="yes"

BRIDGE=br-mgmt

网桥接口配置:

# cat /etc/sysconfig/network-scripts/ifcfg-br-mgmt 

TYPE="Bridge"

BOOTPROTO="static"

NAME="br-mgmt"

DEVICE="br-mgmt"

ONBOOT="yes"

IPADDR=192.168.10.235

PREFIX=24

GATEWAY=192.168.10.1

DNS1=8.8.8.8

ZONE=public

启动接口并确认桥接器正常工作:

# ifup br-mgmt

# brctl show

使用Ansible在KVM上部署OpenContrail的方法

从输出中,我们可以确认网桥br-mgmt配置了正确的接口,你还可以使用ping或类似工具进行网络连接测试。

 

Clone contrail-ansible-deployer存储库

现在我们已满足所有的条件,我们可以Clone存储库并准备开始在KVM上部署OpenContrail:

# git clone http://github.com/Juniper/contrail-ansible-deployer

切换到contrail-ansible-deployer目录并创建:

# cd  contrail-ansible-deployer

编辑config/instances.yaml并填写适当的值,这是我的3节点KVM安装示例文件:

provider_config:

kvm:

image: CentOS-7-x86_64-GenericCloud-1802.qcow2.xz

image_url: https://cloud.centos.org/centos/7/images/

ssh_pwd: Password123

ssh_user: root

ssh_public_key: ~/.ssh/id_rsa.pub

ssh_private_key: ~/.ssh/id_rsa

vcpu: 8

vram: 32000

vdisk: 50G

subnet_prefix: 192.168.10.0

subnet_netmask: 255.255.255.0

gateway: 192.168.10.1

nameserver: 192.168.10.1

ntpserver: 192.168.10.1

domainsuffix: local

instances:

contail-controller-01:

provider: kvm

host: 192.168.10.235

bridge: br-mgmt

ip: 192.168.10.234

roles:

config_database:

config:

control:

analytics_database:

analytics:

webui:

contail-controller-02:

provider: kvm

host: 192.168.10.235

bridge: br-mgmt

ip: 192.168.10.233

roles:

config_database:

config:

control:

analytics_database:

analytics:

webui:

contail-compute-01:

provider: kvm

host: 192.168.10.235

bridge: br-mgmt

ip: 192.168.10.232

roles:

vrouter:

contrail_configuration:

CONTAINER_REGISTRY: opencontrailnightly

CONTRAIL_VERSION: latest

VROUTER_GATEWAY: 192.168.10.1

我的inventory/hosts没有任何自定义设置,它看起来像下面:

localhost:

hosts:

localhost:

config_file: ../config/instances.yaml

connection: local

ansible_connection: local

python_interpreter: python

ansible_python_interpreter: python

 

使用Ansible配置VM

我收到一个错误,桥接定义未找到,我不得不修改文件:

playbooks/roles/create_kvm_instances/tasks/build_and_start_container_hosts.yml

具有:

- name: Install container vm {{ container_vm_hostname }} without portgroup

 command: |

  virt-install --name {{ container_vm_hostname }} \

  --disk /var/lib/libvirt/images/{{ container_vm_hostname }}.qcow2 \

  --cpu host-passthrough \

  --vcpus={{ vcpu }} \

  --ram={{ vram }} \

  --network network={{ item.value.bridge }},model=virtio \

  --network network=default,model=virtio \

  --virt-type kvm \

  --import \

  --os-variant rhel7 \

  --graphics vnc \

  --serial pty \

  --noautoconsole \

  --console pty,target_type=virtio

我修改了第一个网络线路:

--network bridge={{ item.value.bridge }},model=virtio \

使用以下命令启动VM配置:

# ansible-playbook -i inventory/ playbooks/provision_instances.yml | tee /root/provision-instances.log

这会将所有内容记录到文件/root/provision-instances.log中,此配置部分将在KVM上定义三个名为kvm1,kvm2和kvm3的VM,你可以在部署之前更改此名称。

成功执行后,确认是否已成功创建VM:

[root@opencontrail ~]# virsh list

contail-controller-01          running

contail-controller-02          running

contail-compute-01             running

下一步是配置创建的实例,运行命令:

# ansible-playbook -i inventory/ playbooks/configure_instances.yml | tee -a /root/configure_instances.log

这可能需要一段时间才能完成执行,成功完成后,应该收到如下消息:

使用Ansible在KVM上部署OpenContrail的方法

然后运行最后一个playbook以安装OpenContrail服务:

# ansible-playbook -i inventory/ playbooks/install_contrail.yml | tee /root/install_contrail.log

所有输出都将记录在文件 –> /root/install_contrail.log中:

ERROR! Unable to retrieve file contents

Could not find or access '/root/contrail-kolla-ansible/ansible/post-deploy-contrail.yml'

我把/root/contrail-kolla-ansible/ansible/post-deploy.yml复制到/root/contrail-kolla-ansible/ansible/post-deploy-contrail.yml:

# cp /root/contrail-kolla-ansible/ansible/post-deploy.yml  /root/contrail-kolla-ansible/ansible/post-deploy-contrail.yml

成功执行应该给你类似的输出:

使用Ansible在KVM上部署OpenContrail的方法

登录其中一个节点并检查正在运行的容器:

# ssh root@192.168.10.232

# docker ps

在两个Opencontrail控制器VM上,应该运行这些容器:

# docker ps --format '{{.Names}}'

kubemanager_kubemanager_1

analytics_query-engine_1

analytics_topology_1

analytics_api_1

analytics_snmp-collector_1

analytics_collector_1

analytics_alarm-gen_1

analytics_nodemgr_1

analyticsdatabase_cassandra_1

analyticsdatabase_zookeeper_1

analyticsdatabase_nodemgr_1

analyticsdatabase_kafka_1

control_named_1

control_dns_1

control_control_1

control_nodemgr_1

webui_redis_1

webui_job_1

webui_web_1

config_nodemgr_1

config_svcmonitor_1

config_devicemgr_1

config_api_1

config_schema_1

configdatabase_cassandra_1

configdatabase_rabbitmq_1

configdatabase_zookeeper_1

容器总数为26:

# docker ps --format '{{.Names}}' | wc -l

26

在运行和vrouter的计算VM上,我运行了以下容器:

# docker ps --format '{{.Names}}'

一些容器有很长的名字,Kubernetes:

k8s_POD_kube-dns-6f4fd4bdf-kj4lc_kube-system_28ddfbb8-3273-11e8-ae30-5254007554af_32

k8s_kube-proxy_kube-proxy-fwn7p_kube-system_5a9648cd-3273-11e8-ae30-5254007554af_0

k8s_POD_kube-proxy-fwn7p_kube-system_5a9648cd-3273-11e8-ae30-5254007554af_0

vrouter_vrouter-agent_1

vrouter_vrouter-net-watchdog_1

vrouter_nodemgr_1

在该过程结束时,你还应该能够连接到Contrail webUI,应该可以访问UI仪表板:

https://192.168.10.233:8143/

https://192.168.10.234:8143/

用户名:admin

密码:contrail123

使用Ansible在KVM上部署OpenContrail的方法

要获取任何容器的shell,请使用docker exec命令:

# docker exec -it webui_web_1 /bin/bash

提示:如果需要重新部署OpenContrail,请清空/root/.ssh/known_hosts。

 

相关主题

在CentOS 7系统中安装和配置Docker Registry的方法

精选文章
热门文章