OpenStack使用puppet构建自动化布置环境51CTO博客 - 众发娱乐

OpenStack使用puppet构建自动化布置环境51CTO博客

2019年04月06日10时30分11秒 | 作者: 振凯 | 标签: 布置,节点,咱们 | 浏览: 3027


0. 环境介绍

0.1 Puppet介绍

Puppet是一个依据Ruby,并运用GPLv2协议授权的开源软件,是一个C/S架构的装备办理东西,在中心效劳器上装置puppet-server软件包(被称作Puppetmaster)。在需求办理的方针主机上装置puppet客户端软件(被称作PuppetClient)。

当客户端衔接上Puppetmaster后,界说在Puppetmaster上的装备文件会被编译,然后在客户端上运转。每个客户端默许每半个小时和效劳器进行一次通讯,承认装备信息的更新状况。假如有新的装备信息或许装备信息现已改动,装备将会被从头编译并发布到各客户端履行。也能够在效劳器上主动触发一个装备信息的更新,强制各客户端进行装备。假如客户端的装备信息被改动了,它能够从效劳器取得原始装备进行校对。

现在,puppet作为企业运维主动化的重要东西被广泛地运用,关于openstack来说,经过puppet来完结主动化布置及节点添加,将会大大提高运维功率。


0.2 体系架构阐明

咱们本次的puppet主动化布置试验在虚拟机中进行,运用3台虚拟机作为openstack的3个节点,详细架构如下:

如上图,3台虚拟机别离作为1个操控节点,其间用于运转除nova-compute之外的悉数openstack组件效劳,一起,该节点也是puppet的效劳器端;其他两个节点作为openstack的运算节点。

每台虚拟机均装备了2个网卡,一个衔接办理网络,一个是虚拟机内网,一起也用于openstack内部组件之前的通讯。详细网络信息如下:

·操控节点:eth0:192.168.17.133
            eth1:10.120.17.133

·运算节点:eth0:192.168.17.134
            eth1:10.120.17.134

·运算节点:eth0:192.168.17.135
            eth1:10.120.17.135


0.3 puppet架构阐明:

下图是一个比较常见且有用性较强的puppet装备架构:

图中1台机器作为puppet master,一台是SVN效劳器,用于办理puppet装备所需的脚本等文件,其他3台则是puppet agent,即需求被布置的机器。

关于大型的商业运用来说,上面所示的架构明显不能满意企业对效劳高可用的要求,所以企业往往会选用双SVN效劳器及双puppet master的架构,下面是京东商城openstack主动化布置的架构图:


1. 体系预备

1.1 体系选型与装置

因为puppetlabs供给了依据Ubuntu的彻底的puppet脚本,咱们本次试验将运用Ubuntu12.04 server作为节点体系,等在Ubuntu上成功完结了主动化布置之后再对puppet脚本进行自界说的修正,完结在Debian上的布置。

值得留意的是:因为操控节点上既运转了openstack效劳,也运转了puppetmaster效劳器端,所以需求设置比较大的内存,一起应该预留一个闲暇分区,用于nova-volume创立效劳。


1.2 网络设置

在开端puppet布置之前,咱们首要需求把各节点的网络部分完结,下面咱们首要装备网卡部分:

# vi /etc/network/interfaces
auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet static
  address192.168.17.133
  netmask255.255.255.0
  network192.168.17.0
  gateway192.168.17.1
 
auto eth1
iface eth1 inet manual
  upifconfig eth1 up

从以上装备可知,咱们需求把eth2发动起来,重启网络之后,咱们运用ifconfig指令应该能看到eth2网卡的信息。

接下来是重要的一步,因为puppet的主客效劳器之间的通讯是经过FQDN来通讯的,所以咱们需求在各节点上设置/etc/hosts文件,使得各节点之间的puppet程序能正常通讯。

# vi /etc/hosts
127.0.0.1                localhost.example.com.      localhost.example.com       localhost
192.168.17.133             node1.example.com.      node1.example.com       control-01
192.168.17.134             node2.example.com.      node2.example.com       compute-01   
192.168.17.135             node3.example.com.      node3.example.com       compute-02


2. 布置puppet agent从节点

2.1 装置相关软件包

关于puppet来说,只需是装置了agent并注册进了puppetmaster端的节点都是能够被布置装备的。本例中,咱们的操控节点既是puppetmaster效劳器端,一起也布置了puppetagent,即操控节点能够为自己做主动化布置。

关于一切需求被办理的从节点,只需求装置puppet的agent端软件:

# apt-get install puppet augeas-tools


2.2 预先设置动态搬迁环境

为了能在装备好的openstack集群中能运用动态搬迁(LiveMigration)功用,咱们需求预先在各节点中创立相关的用户和组,使得虚拟机动态搬迁能顺畅地进行,openstack在创立进程中会创立这些用户和组,可是咱们这儿直接指定用户或组的ID,使得各节点保持共同。

创立相关组:

# addgroup system gid 999 kvm
# addgroup system gid 998 libvirtd
# addgroup system gid 997 nova

创立相关用户:

# adduser system home /var/lib/libvirt shell/bin/false uid 999 gid 999 disabled-password libvirt-qemu
 
# adduser system home/var/lib/libvirt/dnsmasq shell /bin/false uid 998 gid 998disabled-password libvirt-dnsmasq
 
# adduser system home /var/lib/novashell /bin/false uid 997 gid 997  disabled-passwordnova
 
# adduser nova libvirtd


2.3 启用pluginsync插件

咱们需求在一切的agent节点上启用pluginsync插件,并需求设置puppetmaster节点的hostname指向,使得节点间顺畅通讯。

# augtool<< EOF
  set/files/etc/puppet/puppet.conf/agent/pluginsync true
  set/files/etc/puppet/puppet.conf/agent/server node1.example.com
  Save
EOF


3. 布置puppet master操控节点

3.1 装置相关软件包

首要,需求装置puppetmaster相关软件包:

# apt-get install git
# apt-get install puppetmaster sqlite3libsqlite3-ruby libactiverecord-ruby rake

接下来,运用gem东西装置puppetlabs的协助东西:

# gem install puppetlabs_spec_helper


3.2 装备数据库

接下来,咱们需求在master节点上敞开storedconfig功用,并装备puppet运用的数据库类型,指向数据库存储方位。在这儿咱们运用的是sqlite数据库,所以咱们将dbadapter设置为sqlite3,并指向默许的sqlite文件地点途径。

# augtool << EOF
  set/files/etc/puppet/puppet.conf/master/storeconfigs true
  set/files/etc/puppet/puppet.conf/master/dbadapter sqlite3
  set/files/etc/puppet/puppet.conf/master/dblocation /var/lib/puppet/server_data/storeconfigs.sqlite
  save
EOF


3.4 创立第一个manifest

接下来,咱们创立一个用于测验的manifest,经过这个简略的manifest咱们能够开端了解一下puppet布置脚本的语法,最重要的是,咱们能够测验master节点agent节点的装备是否正确无误。

# vi /etc/puppet/manifests/site.pp

    node default {
          file{"/tmp/test.txt":
                mode => 600
          }
    }

上面脚本内容是比较好了解的,表明咱们需求布置/tmp/test.txt文件到一切的agent节点,而且该文件的权限设为600。


3.5 重启效劳

接下来,咱们需求重启master节点上的效劳,第一次发动时puppet会主动创立所需的文件,包含一系列的证书文件等。

# /etc/init.d/puppetmaster restart


4. 运用测验

4.1 测验衔接master节点

此刻,咱们能够在恣意一个agent节点上运用指令行东西测验一下与master节点之间的通讯是否正常。

# puppetd test server node1.example.com

咱们会看在如下报错信息:

Warning: peer certificate wont be verifiedin this SSL session
Info: Caching certificate for ca
...
Info: creating a new SSL certificaterequest for node1.example.com
Info: certificate Request fingerprint(md5): S2:D1:E3:U8:C8:C9:B6:61:86:D0
...
Exiting: no certificate found andwaitforcet is disabled


4.2 master节点签发证书

经过以上的报错信息,咱们能够知道是因为master节点和agent节点之间的通讯不能取得master节点签发的证书,所以咱们需求用以下指令在puppetmaster节点上签发证书:

# puppetca sign -a

此刻,会有如下的信息:

Notice: Signed certificate request fornode1.example.com
Notice: Removing filePuppet::SSL::CertificateReguest node1.example.com at
...

依据以上的信息,能够知道现已认证成功。

此指令表明承受悉数的认证恳求,可是在大型的布置环境中不主张这样的操作,咱们能够运用puppetcalist指令检查一切需求认证的agent端,并依据需求签发认证。


4.3 布置测验

此刻,master节点与agent节点现已认证成功了,今后的布置作业都不在需求签发证书了,只需求master端宣布指令就能在一切的agent节点上施行布置。

在master节点上履行以下指令:

# puppet agent -vt waitforcert 60

此指令会向一切的agent节点推送布置信息,延时时刻设置为60秒,因为咱们之前现现已过了认证,所以履行该指令就开端布置了。

检查/tmp/test.txt文件是否存在,内容是否共同,检查文件的权限是不是之前设置的600。


5. 布置多节点OpenStack

5.1 装备openstack布置环境

在开端布置openstack模块之前,主张重启一下puppetmaster节点,首要是因为puppet本身的一些问题。

接下来,咱们从Github上下载最新版别的puppetlabs-openstack模块到/etc/puppet/modules/openstack目录:

# cd /etc/puppet/modules
# git clone git://github.com/puppetlabs/puppetlabs-openstackopenstack

留意:

git://github.com/puppetlabs/puppetlabs-openstack是puppetlabs针对openstack写的布置模块,由openstack社区及puppet进行保护,咱们在下载之后需求做一些根本的改动,如节点IP,实例网络,是否设置组件HA等。

修正完结后,进入openstack目录,运用rake指令把openstack中一切的组件模块加载进来。

# cd openstack
     # rake modules:clone

此刻,咱们的/etc/puppet/modules目录应该有如下模块:

# ls -al /etc/puppet/modules/
total 80
drwxr-xr-x 2 0  root root 4096Jun 19 11:55 .
drwxr-xr-x  6  root root 4096 Jun 19 11:46 ..
drwxr-xr-x  7  root root 4096 Jun 19 11:55 apt
drwxr-xr-x  7  root root 4096 Jun 19 11:54 concat
drwxr-xr-x  5  root root 4096 Jun 19 11:55 git
drwxr-xr-x  9  root root 4096 Jun 19 11:55 glance
drwxr-xr-x  6  root root 4096 Jun 19 11:55 horizon
drwxr-xr-x  9  root root 4096 Jun 19 11:55 keystone
drwxr-xr-x  7  root root 4096 Jun 19 11:54 memcached
drwxr-xr-x  9  root root 4096 Jun 19 11:55 mysql
drwxr-xr-x 1 1  root root 4096Jun 19 11:55 nova
drwxr-xr-x  7  root root 4096 Jun 19 11:54 openstack
drwxr-xr-x  9  root root 4096 Jun 19 11:55 rabbitmq
drwxr-xr-x  8  root root 4096 Jun 19 11:55 rsync
drwxr-xr-x  7  root root 4096 Jun 19 11:55 ssh
drwxr-xr-x  7  root root 4096 Jun 19 11:55 stdlib
drwxr-xr-x 1 0  root root 4096Jun 19 11:55 swift
drwxr-xr-x  5  root root 4096 Jun 19 11:55 sysctl
drwxr-xr-x  6  root root 4096 Jun 19 11:55 vcsrepo
drwxr-xr-x  8  root root 4096 Jun 19 11:55 xinetd

接下来,咱们将openstack的模块加入到manifest中:

# rm -f /etc/puppet/manifests/site.pp
# ln -s /etc/puppet/modules/openstack/examples/site.pp/etc/puppet/manifests/site.pp


5.2 布置openstack操控节点

至此,puppet的布置环境以及puppetlabs-openstack模块都现已悉数装备完结,接下来咱们开端布置openstack操控节点,在咱们本次测验的环境中,openstack操控节点布置在puppetmaster节点上,即master节点一起也是agent节点。

# puppet agent -vt waitforcert 60 certnameopenstack_controller

留意:

其间,“certnameopenstack_controller”参数项指定的是本次布置的证书名,咱们在master端能够检查签发证书恳求来检查是否经过认证。

咱们需求在master端再开一个终端,签发证书:

# puppetca sign -a

证书签发之后就开端进行布置作业,咱们需求等候一段时刻,等布置完结后,咱们就能够经过之前设置好的操控节点IP进入DashBoard检查概况。


5.3 布置openstack运算节点

在操控节点布置完结之后,咱们就开端布置运算节点,依照咱们的架构规划,咱们会在3台主机上布置运算节点,即操控节点上也布置运算节点。

别离到各需求布置的节点主机上履行:

# puppet agent -vt waitforcert 60certname openstack_compute_node1
# puppet agent -vt waitforcert 60certname openstack_compute_node2
# puppet agent -vt waitforcert 60certname openstack_compute_node3
     
在puppetmaster端签发证书:
# puppetca sign -a

运算节点的布置相对会比较快,所以咱们大约只需求等候5分钟就能完结悉数的布置作业。


5.4 OpenStack运用测验

5.4.1 装备客户端环境

在开端测验本次布置的openstack体系的正确性之前,咱们需求装备一下客户端机器的环境,这儿咱们运用一台Ubuntu体系的PC客户机。

装置nova、glance、keystone等客户端软件包:

# apt-get install nova-common
# apt-get install glance-common
# apt-get install python-keystoneclient

以上的软件装置完结后,就需求咱们装备一些用于认证的信息,即咱们客户端需求指定keystone并发送恳求,得到keystone的认证之后才干检查openstack云中的信息。

咱们修改客户端用户的.bashrc文件,指定所需的认证信息:

# vi .bashrc

export SERVICE_ENDPOINT="http://123.58.xxx.xxx:35357/v2.0"
export OS_AUTH_URL="http://123.58.xxx.xxx:5000/v2.0/"
export OS_REGION_NAME=REGION01
export OS_TENANT_NAME=admin
export SERVICE_TOKEN=admin
export ADMIN_TOKEN=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin

运用source指令使以上的环境变量收效:

# source .bashrc


5.4.2 检查各组件状况

装备完上面客户端的认证信息之后,咱们就能够在客户端检查云中的许多信息。下面咱们运用nova-manage指令检查各组件的状况:

# nova-manage service list


5.4.3 创立安全战略组

下面,咱们在指令行下,为“secgroup-test”安全战略组添加两条战略,它们别离是敞开用于ssh长途衔接的22号端口,以及敞开icmp协议使得能够ping虚拟机实例。


5.4.4 导入镜像

接下来,咱们在客户端运用指令行东西导入镜像文件,这儿咱们导入的是OpenStack官方引荐的专用于测验的镜像Cirros,镜像格局为qcow2。

导入完结之后,咱们能够检查镜像池中是否存在该镜像。

# glance index


5.4.5 发动实例

接下来,咱们就能够运用前面导入的镜像发动一个虚拟机实例,首要,检查当时openstack实例的标准:

# nova flavor-list

下面运用nova指令行东西创立一个实例:

# nova boot flavor 1 image <image ID> key_name 140key security_group default cirros-cli-test

创立一个实例大约需求几分钟的时刻,可是因为这个镜像是测验镜像,所以创立速度会十分地快,咱们能够登录Dashboard检查实例的发动状况,也能够经过指令行检查实例。

# nova list

咱们能够看到“Status”项,当实例创立完结后该项会显现“Active”,即该实例可用。


6. 总结

依据以上的puppet布置测验,咱们能够知道以此来完结openstack的主动化布置环境是十分有用且高效的。在京东商城的OpenStack主动化布置环境中,其运用了Cobler作为体系布置的东西,并结合了puppet来完结从裸主机直接装置体系并布置openstack效劳。

这样的主动化装置布置的环境是值得咱们学习的,在本次测验中,咱们能够看到puppet在布置上的优势,只需再结合KickStart或Cobler之类的体系布置东西,就能在一个私有云中快速地添加运算节点,真实地完结了云的高速拓宽,也减轻了运维人员的作业量,完结了主动化运维的意图。



版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表众发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章