redhat/centos-6.3上opennebula-3.8部署

CentOS-6.3环境下快速部署opennebula-3.2
本文提供了一套详细的步骤,指导如何在CentOS-6.3的64位版本上进行opennebula-3.2的快速安装部署,包括网络拓扑配置、源码安装、环境变量设置、opennebula编译与安装、sunstone配置等关键环节。

此文章是之前所发布的《利用centos-6.3源实现opennebula-3.2的快速安装部署》一文的升级版。本教程在CentOS-6.3的64位版本和64位版本上测试通过。

1. 网络拓扑

采用了两台物理机作为部署环境:

管理节点+计算节点: 192.168.35.16

计算节点:192.168.35.17

2. 管理节点

2.1 配置网易源

(1)安装完CentOS-6.3后,配置centos-6.3的网易源,/etc/yum.repos.d/新建文件centos.repo,内容如下:

#########################################################################
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-6 - Base - 163.com
baseurl=http://mirrors.163.com/centos/6/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=os
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#released updates
[updates]
name=CentOS-6 - Updates - 163.com
baseurl=http://mirrors.163.com/centos/6/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-6 - Extras - 163.com
baseurl=http://mirrors.163.com/centos/6/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-6 - Plus - 163.com
baseurl=http://mirrors.163.com/centos/6/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#contrib - packages by Centos Users
[contrib]
name=CentOS-6 - Contrib - 163.com
baseurl=http://mirrors.163.com/centos/6/contrib/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=contrib
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
#########################################################################

(2)yum update

注意:如果是redha的ost建议选择N

2.2 管理节点配置(计算节点也执行相同操作)

(1)创建oneadmin用户和属组

# groupadd -g 600 oneadmin
#useradd -u 600 -g oneadmin oneadmin

(2)设置oneadmin用户的密码(这里设为:oneadmin)

# passwd oneadmin

(3)配置oneadmin用户,使其具有sudo权限

#vim /etc/sudoers //在原来的root用户下,增加如下一行

oneadmin ALL=(ALL) NOPASSWD: ALL

(4)配置/etc/hosts文件,添加如下两行

192.168.35.16 node1
192.168.35.17 node2

2.3 配置管理节点和计算节点之间的互信

(1)oneadmin用户无密码ssh登录设置

#su - oneamdin
# ssh-keygen -t dsa #出现提示默认回车不要输入
# cat .ssh/id_dsa.pub >> .ssh/authorized_keys
# chmod 644 ~/.ssh/authorized_keys
# chmod 755 ~/.ssh
#vi ~/.ssh/config
StrictHostKeyChecking no
#chmod 600 ~/.ssh/config
# scp –r ~/.ssh oneadmin@node1:~/
oneadmin@node1's password: #默认oneadmin用户密码
# scp –r ~/.ssh oneadmin@node2:~/
(2)验证ssh无密码登录是否配置成功

#ssh oneadmin@node1 date
#ssh oneadmin@node2 date

如果在不输入密码的情况下正确输出,即表示配置成功。

2.4 管理节点软件安装(root用户下执行如下指令)

# yum install gcc gcc-c++ make openssl-devel flex bison
# yum install ruby ruby-devel ruby-docs ruby-ri ruby-irb ruby-rdoc
# yum install rubygems
# gem install nokogiri rake xmlparser
# yum install scons
# yum install xmlrpc-c xmlrpc-c-devel libxslt
# yum install mysql-server mysql-devel.x86_64 sqlite-devel.x86_64

2.5 管理节点环境变量设置

#su - oneadmin

$ mkdir ~/.one
$ vi ~/.one/one_auth
oneadmin:oneadmin

#su - oneadmin

$ vim ~/.bash_profile
export ONE_LOCATION=/opt/nebula/ONE
export ONE_AUTH=$HOME/.one/one_auth
export ONE_XMLRPC=http://localhost:2633/RPC2
export PATH=$ONE_LOCATION/bin:$PATH:.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:.
2.6 opennebula 编译安装

(1)自行下载opennebula-3.8.3,解压后,执行如下命令:

$cd opennebula-3.8.3

$ scons mysql=yes

2.7 datastore的配置

在管理节点和计算节点上都执行如下操作,意思是:用sdb1作为datastore,可以根据自己实际情况而定

#mkdir /data0

#mount /dev/sdb1 /data0

#chown oneadmin:oneadmin /data0 -R

# su - oneadmin

$ vim share/etc/oned.conf // 修改数据库为mysql,并修改mysql的访问密码

#DB = [ backend = "sqlite" ]


# Sample configuration for MySQL
DB = [ backend = "mysql",
server = "localhost",
port = 0,
user = "root",
passwd = "123456",
]

修改datastores的路径:

DATASTORE_LOCATION = /data0

2.8 opennebula安装

(2)opennebula安装

$exit(退出oneadmin用户到root用户下)

#mkdir /opt/nebula/ONE -p

#chown oneadmin:oneadmin /opt/nebula -R

su - oneadmin

$ cdopennebula-3.8.3

$ ./install -d /opt/nebula/ONE

2.9安装sunstone

$ cd opennebula-3.8.3/share/install_gems/

$sudo ./install_gems sunstone

3. 计算节配置

参见管理节点的配置部分

4. 计算节点软件安装

yum install ruby kvm libvirt

5. 启动opennebula和sunstone

到管理节点,执行:

#su - oneadmin

$ one start

$sunstone-server start

6. 通过浏览器访问opennebula

192.168.35.16:9689

用户名和密码都为: oneadmin

# CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. [base] name=CentOS-8.5.2111 - Base - mirrors.aliyun.com baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/BaseOS/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/BaseOS/$basearch/os/ gpgcheck=0 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official additional packages that may be useful [extras] name=CentOS-8.5.2111 - Extras - mirrors.aliyun.com baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/extras/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/extras/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/extras/$basearch/os/ gpgcheck=0 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official additional packages that extend functionality of existing packages [centosplus] name=CentOS-8.5.2111 - Plus - mirrors.aliyun.com baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/centosplus/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/centosplus/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/centosplus/$basearch/os/ gpgcheck=0 enabled=0 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official [PowerTools] name=CentOS-8.5.2111 - PowerTools - mirrors.aliyun.com baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/PowerTools/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/PowerTools/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/PowerTools/$basearch/os/ gpgcheck=0 enabled=0 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official [AppStream] name=CentOS-8.5.2111 - AppStream - mirrors.aliyun.com baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/AppStream/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/AppStream/$basearch/os/ gpgcheck=0 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
09-23
<think> 我们面对的问题是CentOS系统加载`/etc/yum.repos.d/CentOS-Base.repo`失败,并且提示仓库&#39;extras&#39;缺少名称,但用户确认配置文件里有name字段。 根据之前的分析,可能的原因有:编码问题、不可见字符、变量解析失败或配置块结构错误。 由于用户提供了配置文件内容,我们可以先分析一下配置文件内容。但注意,用户并没有在问题中直接粘贴配置文件内容,因此我们需要假设用户已经检查过配置文件有name字段。 不过,为了更准确地解决问题,我们可以要求用户提供配置文件内容,或者按照常见的错误模式进行排查。 但是,用户已经提到“配置文件具体内容”,说明用户可能已经准备好提供,但在问题中省略了。因此,我们只能根据典型错误进行指导。 由于用户特别提到“仓库 &#39;extras&#39; 在配置中缺少名称,将使用 id”,这说明yum在解析extras仓库时,没有正确获取到name字段。即使文件中有name字段,也可能因为解析问题导致无法识别。 我们按照以下步骤进行: 1. 检查配置文件语法是否正确,特别是[extras]部分。 - 确保name字段在[extras]块内,且没有多余字符。 - 确保name字段的等号两边没有空格(虽然yum通常允许空格,但某些版本可能有严格要求)。 - 确保name字段的值用双引号括起来(可选,但可以避免一些解析问题)。 2. 检查变量替换。name字段中可能使用了变量,如$releasever或$basearch,如果这些变量没有被正确设置,可能导致name字段为空。 可以通过命令查看当前系统中的这些变量值: ```bash sudo yumdb get releasever sudo yumdb get basearch ``` 或者使用: ```bash python -c &#39;import yum;yb=yum.YumBase();print yb.conf.yumvar["releasever"]&#39; ``` 3. 检查文件编码和特殊字符。可以使用`cat -A`来查看文件,如果发现有特殊字符(如^M),则需要转换。 4. 重建配置文件。使用已知良好的镜像站提供的配置文件替换。 由于用户没有给出具体的配置文件内容,我们将提供通用的修复步骤。 步骤: 1. 备份当前配置文件: ```bash sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak ``` 2. 检查并转换编码(如果必要): ```bash # 检查编码 file /etc/yum.repos.d/CentOS-Base.repo # 如果是ASCII或UTF-8,则跳过;如果是其他编码,转换 sudo iconv -f <原始编码> -t utf-8 /etc/yum.repos.d/CentOS-Base.repo -o /etc/yum.repos.d/CentOS-Base.repo.new sudo mv /etc/yum.repos.d/CentOS-Base.repo.new /etc/yum.repos.d/CentOS-Base.repo ``` 3. 清除特殊字符: ```bash # 安装dos2unix工具 sudo yum install -y dos2unix sudo dos2unix /etc/yum.repos.d/CentOS-Base.repo ``` 4. 手动设置变量(可选): 如果发现变量`$releasever`为空,可以在配置文件的全局部分(或者每个仓库的配置之前)定义: ```ini [main] ... releasever=7 # 根据实际版本,例如7、88-stream ``` 5. 替换为清华大学镜像源配置文件: ```bash sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/repo/CentOS-`rpm -E %{rhel}`-Base.repo ``` 注意:上面的命令中`rpm -E %{rhel}`会返回当前系统的大版本号(如7、8)。如果该命令无效,可以手动指定版本。 或者直接使用: ```bash # 对于CentOS 7 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/repo/CentOS-7.repo # 对于CentOS 8 sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/repo/CentOS-8.repo ``` 6. 清理缓存并测试: ```bash sudo yum clean all sudo yum makecache sudo yum repolist ``` 7. 如果问题仍然存在,可以尝试手动编辑配置文件,在[extras]部分显式设置name,避免使用变量: ```ini [extras] name=CentOS-$releasever - Extras # 改为 name=CentOS-7 - Extras # 假设是CentOS 7 ``` 注意:手动设置name可能会在系统升级后出现版本不匹配,但可以临时解决问题。 如果用户提供了具体的配置文件内容,我们可以更针对性地分析。 生成相关问题: §§相关问题§§ 1. 如何检查YUM配置文件的语法是否正确? 2. 如何查看YUM解析变量(如`$releasever`)的值? 3. 在Linux中,如何检测和清除文件中的特殊字符? 4. 替换YUM源配置文件后,如何测试连通性? 5. YUM报错“缺少名称”是否会影响软件包安装? </think> ### 解决 CentOS-Base.repo 加载失败及仓库名称缺失问题 #### 🔍 逐步排查与修复方案 1. **检查配置文件语法结构** 确保 `[extras]` 区块格式正确,避免名称字段被注释或格式错误: ```ini [extras] # 区块声明必须单独一行 name=$releasever - Extras # name= 必须紧跟区块声明 baseurl=http://mirror.centos.org/$contentdir/$releasever/extras/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial ``` **关键点**:`name=` 不能缩进,且值不能有多余引号。 2. **验证变量解析** 使用命令检查 `$releasever` 是否为空: ```bash rpm -q --provides $(rpm -qf /etc/redhat-release) | grep releasever ``` 若输出为空,需手动设置: ```bash echo "releasever=$(rpm -E %{rhel})" | sudo tee -a /etc/yum/vars/releasever ``` 3. **检测隐藏字符污染** 使用 `cat -A` 检查特殊字符: ```bash cat -A /etc/yum.repos.d/CentOS-Base.repo | grep -A3 "\[extras\]" ``` 若发现 `^M`(Windows 回车符): ```bash sudo yum install -y dos2unix sudo dos2unix /etc/yum.repos.d/CentOS-Base.repo ``` 4. **文件权限与 SELinux 检查** ```bash ls -lZ /etc/yum.repos.d/CentOS-Base.repo # 应显示 -rw-r--r-- sudo restorecon -v /etc/yum.repos.d/CentOS-Base.repo # 修复 SELinux 上下文 ``` 5. **重建配置文件(推荐方案)** 下载清华大学镜像站配置模板: ```bash sudo curl -o /etc/yum.repos.d/CentOS-Base.repo \ https://mirrors.tuna.tsinghua.edu.cn/repo/CentOS-$(rpm -E %{rhel})-Base.repo ``` #### ✅ 最终验证步骤 ```bash sudo yum clean all # 清除缓存 sudo yum makecache # 重建元数据 yum repolist extras -v # 详细查看仓库解析 ``` 成功输出应包含: ``` 仓库 ID : extras 仓库名称 : CentOS-7 - Extras # 而非仅显示ID ``` #### ⚠️ 注意事项 1. 变量 `$releasever` 的值由 `/etc/yum/vars` 目录下的文件定义,缺失会导致解析异常 2. YUM 1.x 版本对缩进敏感,避免在配置中使用制表符 3. 若使用代理,需在 `/etc/yum.conf` 添加 `proxy=http://your.proxy:port` --- ### 📝 相关问题 1. 如何检测并修复 `$releasever` 变量未定义的问题? 2. YUM 配置文件中的 `$basearch` 是如何动态获取的? 3. SELinux 策略如何影响 YUM 仓库文件的读取? 4. 哪些特殊字符会导致 YUM 解析配置文件失败? 5. 如何验证 YUM 仓库 GPG 密钥的有效性?[^1] [^1]: 参考 [CentOS 官方仓库配置指南](https://wiki.centos.org/yum-commands)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值