本文手动自定义制作镜像,并没有采用openstack官方推荐的diskimage-builder工具。

OS: Centos7

vim /etc/cloud/cloud.cfg:
disable_root: 0
ssh_pwauth:   1
  • 设置selinux级别
vim /etc/selinux/config:
SELINUX=permissive
  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 安装cloud-init
yum install cloud-init

配置cloud-init以允许root用户登录

vim /etc/cloud/cloud.cfg:
disable_root: 0
ssh_pwauth:   1

修改PATH顺序,以避免镜像中mysqld_safe的执行错误

vim /etc/sudoers:Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin改为:
Defaults    secure_path = /sbin:/usr/bin:/usr/sbin:/bin
  • 安装MySQL

-         配置yum源,可以根据mysql具体版本替换repo文件中的版本号

yum install https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
yum install mysql-community-servermysql-community-devel

- 编辑 /etc/my.cnf, 在文件末尾添加下面一行,include这行上面有一行空白

!includedir /etc/mysql/conf.d/

- 创建目录

mkdir -p /etc/mysql/conf.d/

- 安装备份软件percona-xtrabackup(innobackupex)

yum install https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-4.noarch.rpm
yum install percona-xtrabackup-24

- 下载源码

git clone https://github.com/openstack/trove.git -b stable/mitaka

- 创建trove用户并添加sudo权限

useradd -m trove
vim /etc/sudoers.d/trove
Defaults:trove !requiretty
trove ALL=(ALL) NOPASSWD:ALL

- 修改源码fix磁盘格式化bug以及mysql备份时未设置用户名密码bug

vim trove/guestagent/volume.py:
def _format(self):
……….
child = pexpect.spawn(cmd, timeout=volume_format_timeout)
child.expect("(y,n)")   #去掉这两行的注释
child.sendline('y')
child.expect(pexpect.EOF)
vim trove/guestagent/strategies/backup/mysql_impl.py:
添加黄色标识部分:
class InnoBackupEx(base.BackupRunner):
@propertydef user_and_pass(self):return (' --user=%(user)s --password=%(password)s ' %{'user': ADMIN_USER_NAME,'password': MySqlApp.get_auth_password()})@propertydef cmd(self):cmd = ('sudo innobackupex'' --stream=xbstream'' %(extra_opts)s ' +
self.user_and_pass +MySqlApp.get_data_dir() +' 2>/tmp/innobackupex.log')return cmd + self.zip_cmd + self.encrypt_cmdclass InnoBackupExIncremental(InnoBackupEx):
@propertydef cmd(self):cmd = ('sudo innobackupex'' --stream=xbstream'' --incremental'' --incremental-lsn=%(lsn)s'' %(extra_opts)s ' +
self.user_and_pass +MySqlApp.get_data_dir() +' 2>/tmp/innobackupex.log')return cmd + self.zip_cmd + self.encrypt_cmd
vim trove/guestagent/strategies/restore/mysql_impl.pyfrom trove.common import cfgincremental_dir = os.path.join(self.restore_location, checksum) 改为
incremental_dir = os.path.join(
cfg.get_configuration_property('mount_point'), checksum)

- 安装GCC ,pip

yum install gcc
yum install python-devel wget
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
cd pip-9.0.1
python setup.py install

- 安装trove

cd trovepip install -r requirements.txt      --index-url http://mirrors.aliyun.com/pypi/simple/     --trusted-host mirrors.aliyun.compython setup.py installmkdir -p /etc/trove/conf.dchown -R trove:trove /etc/trovemkdir -p /var/lib/trovechown -R trove:trove /var/lib/trovemkdir -p /var/log/trovechown -R trove:trove /var/log/trovetouch /etc/trove/trove-guestagent.conftouch /etc/trove/guest_info.confchown -R trove:trove /etc/trove

- 创建trove-guestagent服务文件

vim  /usr/lib/systemd/system/trove-guestagent.service:[Unit]Description=OpenStack Trove guestagent ServiceAfter=syslog.target network.target[Service]Type=simpleUser=troveExecStart=/usr/bin/trove-guestagent --config-file /etc/trove/trove-guestagent.conf --config-file /etc/trove/guest_info.confRestart=on-failure[Install]WantedBy=multi-user.target

- 加载服务

systemctl daemon-reload
systemctl enable trove-guestagent

- 更换oslo.context版本

wget https://pypi.python.org/packages/81/27/0491b7df6d509e17bc342af7b9f6881790a9d4cfa14d83e0e28139c40814/oslo.context-2.2.0-py2.py3-none-any.whl#md5=44ad93ca1397c0d06463760c9e590f5e
pip install oslo.context-2.2.0-py2.py3-none-any.whl

trove 镜像制作相关推荐

  1. trove mysql 镜像_OpenStack(Queens)制作 Trove 镜像

    OpenStack(Queens)制作Trove镜像 一:说明 本次制作Trove-mysql镜像,未使用DIB制作,使用的是手动封装的方法.镜像采用的是Centos7版本的官方镜像,大约300M左右 ...

  2. Windows 7 PE RAM 引导盘及WIM 镜像制作

    通过Windows PE引导盘和ImageX命令,可以轻松将系统及安装好的软件打包成WIM镜像,以便日后恢复系统之用. 本文首先介绍Windows 7 PE引导盘制作过程,然后再对Windows系统进 ...

  3. Docker镜像制作规范

    Docker镜像制作规范 镜像(Image)是在基础文件集(root filesystem)之上依次变更的集合,及在容器运行的默认执行参数. 术语 层(layer) 镜像由层(layer)组成.每一层 ...

  4. openStack镜像制作

    openStack镜像制作 参考链接: https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/OpenStack ...

  5. 嵌入式文件系统镜像制作及烧写

    将rootfs和userdata两个目录分别制作为镜像文件进行烧写: 镜像文件对应文件系统类型的选择,采用: rootfs制作为rootfs.img镜像,采用的文件系统类型为cramfs,只读,用于保 ...

  6. 浅谈Docker:DockerLinux安装,镜像管理命令,镜像制作命令,容器管理命令,数据卷,DockerFile,Docker-compose

    什么是Docker? Docker 概念 • Docker 是一个开源的应用容器引擎 • 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc) • ...

  7. Docker笔记——jdk镜像制作

    Docker笔记--jdk镜像制作 openjdk镜像依赖如下: openjdk:8-jdk -> buildpack-deps:jessie-scm -> buildpack-deps: ...

  8. docker 分布式 lnmp 镜像制作

    docker 分布式 lnmp 镜像制作 一.docker 分布式 lnmp 镜像制作 1.运行Nginx.MySQL.PHP容器 2.修改Nginx配置文件和PHP文件 4.进行测试 虚拟机输入lo ...

  9. docker镜像制作(二)——构建企业镜像LAMP+BBS

    docker镜像制作(二)--构建企业镜像LAMP+BBS 一.LAMP概述 二.进行搭建 1.启动基础镜像容器 2.容器中优化yum源,并安装软件 3.软件初始化 ①.ssh的开启 ②.mysql的 ...

最新文章

  1. 低层级GPU虚拟内存管理引论
  2. iOS UIButton(按钮)
  3. 微信小程序云开发用户身份登录_云开发版的微信商城小程序第一章
  4. 《PHP和MySQL Web开发》学习之二--数据的存储与检索
  5. nexus 安装_Jenkins Pipelines将制品发布到Nexus存储库
  6. Linux socket / 端口复用
  7. 洛谷P1396 营救 题解
  8. muduo网络库学习(三)定时器TimerQueue的设计
  9. C#_基础_异常捕获(六)
  10. rhel6 dhcp dns配置小贴士
  11. 对涉密计算机检查内容,RG涉密信息自检查工具安全保密检查内容及方法.docx
  12. UFO报表另存为Excel提示:可能没有正确安装Excel
  13. 注解学习(参考尚硅谷视频)
  14. 客户分段模型(Customer Segmentation Models)
  15. Ubuntu RTL8821ce网卡驱动
  16. Eclipse下载安装配置使用
  17. 读书笔记-项目计划、进度与控制
  18. 如何用Qt展示你的GIF动图
  19. 品牌如何开展饥饿营销?
  20. 高考色彩静物组合想要画好?画之前注意下这8点:

热门文章

  1. 老领导调岗,你想跟他干,怎么说?
  2. android与ios ui切图关系,iOS、Android 开发单位换算及 UI 切图要求
  3. Oracle---SQL语句
  4. JavaWEB(AJAX实现分页)
  5. 如何注册earthdata账号
  6. 通过Windows防火墙禁止某程序(或软件)联网
  7. 缓冲流,转换流,序列化流,网络编程
  8. 燃爆朋友圈!中国设计师携手,用海报为武汉加油!
  9. 3D建模角色男人头雕刻 | 不要再花钱买教程啦
  10. 在Dynamics 365 CRM 中使用Xrm.WebApi实现增,删,改,查(需V9.0或以上)