是否有简化的方法从现有的CentOS 5.10服务器导出设置以进行本地Vagrant配置? (木偶,厨师,贝壳或其他)

我最近开始学习如何使用Vagrant来启动本地开发环境. (在对各种WAMP堆栈选项感到沮丧之后)到目前为止,Vagrant很棒……轻微(ha)学习曲线,但长期看起来很有希望.

在尝试使我的VM看起来像我的在线服务器内部的繁琐过程中……在我看来,Vagrant有一个缺失的部分.现在这个过程似乎或多或少像手动试验和错误.第一次快速设置或者很容易从上游服务器保持同步是不理想的.

不可否认,我可能不知道我正在寻找什么…因此问题.

是否有简化的方法从现有的CentOS 5.10服务器导出设置以进行本地Vagrant配置? (木偶,厨师,贝壳或其他)

像这样的东西是我想象的……

(连接到在线服务器……)

>根据需要检测repo差异并启用,禁用,添加本地.
>检测包,并同步本地匹配. (从本地安装或删除)
>获取httpd.conf,调整本地(如果需要)和同步.
>获取php.ini,调整本地(如果需要)和同步.
>获取MySQL设置,调整本地(如果需要)和同步.
>获取时区和同步.
> [您对其他应该同步的事情的建议在这里欢迎…]

理想情况下,这将在配置期间运行,并且基本上使本地版本与在线版本保持同步.这样就无需手动调整本地设置以保持同步.如果在线(主机或内部)更改了某些内容……它会自动向下传播. (当然,理想情况下,您可以标记设置以根据需要调整行为)

或者,我想如果我可以打包在线服务器而不打包各种用户特定数据,那也可以.然而,从我能说的话来看,这似乎是不可能的……而且它肯定不会非常有效.

警告

在我个人的情况下,我在带有cPanel的CentOS 5.10服务器上. cPanel似乎做了很多服务器端的东西,不一定立即显而易见.一个例子是许多软件包名称以cPanel开头并且看起来是专有的,但同时与我可能想要同步的内容有关. (例如cpanel-php53)据我所知,到目前为止,这些都无法轻易同步……因此需要进行解决.另一个例子可能是不同于预期的路径,但我不太确定,因为我对CentOS和cPanel默认安装都不熟悉,以确保任何特性.

到目前为止我做了什么……

在我决定询问是否有更好的方式与Vagrant携手合作之前,我做了一些事情.它并不可怕,但并非真正“精简”或全面.这是细节……

>我学习了如何在两台机器上运行yum repolist以及如何使用cd /etc/yum.repos.d在文件系统中查看repos. ll;,但不是如何使用此信息自动同步回购.
>我编写了一个shell脚本,以使本地的软件包与远程软件包非常接近.然而,虽然它做得很好,但它并不完美,我想知道是否有更好的方法.问题…

>我不确定是否允许删除本地特有的包. (也,
抛出一些错误)
>我还没有解决如何补偿预装了“cpanel”的软件包,它似乎是我真正想要的替代品(PHP,MySQL等),而不是完全从安装列表中删除每个软件包.
>这不能作为Vagrant配置程序运行,因为它需要用户输入的性质.在同一个注意事项中,运行此命令并删除“本地唯一”软件包将删除之前在规定期间运行的yum安装.

#!/usr/bin/env bash

# This script is a helper for syncing local packages to match a remote server.
# It is geared toward a remote CentOS server with cPanel thrown in the mix
# and a local "server" managed by Vagrant. Regardless,the concepts are the
# same for many kinds of set-ups and it's fairly tweakable.

# To run this script from the command line...
# Be root or become root by running 'sudo -i',# then run 'source /vagrant/.vagrant/sync-packages.sh'

remote_host=1.1.1.1
destination=/vagrant/.vagrant/

echo -e '\nGetting packages from remote server...'
ssh root@${remote_host} "rpm -qa --queryformat='%{NAME}\n' | sort" > ${destination}packages-remote.txt

echo 'Getting packages from local server...'
rpm -qa --queryformat='%{NAME}\n' | sort > ${destination}packages-local.txt

echo 'Compiling package sets for comparison...'

comm -23 ${destination}packages-remote.txt ${destination}packages-local.txt                         > ${destination}packages-remote-only.txt
comm -23 ${destination}packages-local.txt ${destination}packages-remote.txt                         > ${destination}packages-local-only.txt
sed -r '/^(cpanel|newrelic)/!d' ${destination}packages-remote-only.txt                              > ${destination}packages-remote-only-proprietary.txt
comm -23 ${destination}packages-remote-only.txt ${destination}packages-remote-only-proprietary.txt  > ${destination}packages-remote-only-non-proprietary.txt

echo "Packages total  on local  $(cat ${destination}packages-local.txt | wc -l)"
echo "Packages unique to local  $(cat ${destination}packages-local-only.txt | wc -l)"
echo "Packages total  on remote $(cat ${destination}packages-remote.txt | wc -l)"
echo "Packages unique to remote $(cat ${destination}packages-remote-only.txt | wc -l)"
echo "Packages unique to remote *proprietary* $(cat ${destination}packages-remote-only-proprietary.txt | wc -l)"
echo "Packages unique to remote *non-proprietary* $(cat ${destination}packages-remote-only-non-proprietary.txt | wc -l)"

# If there are packages that are unique to local,prompt for removal

if [[ -s ${destination}packages-local-only.txt ]]; then
    read -p 'Do you want to remove the packages that are unique to local? (y/n) ' -n 1 -r; echo

    if [[ $REPLY =~ ^[Yy]$]]; then
        echo 'Removing packages (this runs in quiet mode and may take some time)...'
        yum -y -q remove $(cat ${destination}packages-local-only.txt)
    fi
fi

# If there are *non-proprietary* packages that are unique to remote,prompt for install

if [[ -s ${destination}packages-remote-only-non-proprietary.txt ]]; then
    read -p 'Do you want to install the *non-proprietary* packages that are unique to remote? (y/n) ' -n 1 -r; echo

    if [[ $REPLY =~ ^[Yy]$]]; then
        echo 'Installing packages (this runs in quiet mode and may take some time)...'
        yum -y -q install $(cat ${destination}packages-remote-only-non-proprietary.txt)
    fi
fi

# Wrap up

echo 'Ensuring all packages are up to date (this runs in quiet mode and may take some time)...'

yum -y -q update

echo -e "\nWe're all done here. If you need to see a log of changes,please run 'nano /var/log/yum.log'\n"

3.到7.我写了一个shell脚本来获取一些远程配置文件并将它们移动到本地.它在表面上运作得相当好,但我还没有对结果进行深入测试.我确实运行了日期,看到时区已根据需要同步,并检查了一些文件内容以验证是否成功.

同样,这不能作为Vagrant配置器运行,因为它本质上需要用户输入.此外,没有对文件进行调整,以确保它们可以在本地运行而不会出现问题. (例如http.conf,以确保Apache不会发现某些事情或将MySQL指向正确的数据目录)最后,我确定这些不是我应该移植的唯一文件…这些只是最多的显而易见的.

#!/usr/bin/env bash

# This script is a helper for syncing local settings to match a remote server.
# It is geared toward a remote CentOS server with cPanel thrown in the mix
# and a local "server" managed by Vagrant. Regardless,# then run 'source /vagrant/.vagrant/sync-settings.sh'

remote_host=1.1.1.1
destination=/vagrant/.vagrant/

echo 'Getting config files from remote server...'

scp root@${remote_host}:"\
/usr/local/apache/conf/httpd.conf \
/usr/local/lib/php.ini \
/etc/my.cnf \
/root/.my.cnf \
/etc/localtime \
" ${destination}

echo 'Syncing files...'

mv -f ${destination}httpd.conf  /usr/local/apache/conf/httpd.conf
mv -f ${destination}php.ini     /usr/local/lib/php.ini
mv -f ${destination}my.cnf      /etc/my.cnf
mv -f ${destination}.my.cnf     /root/.my.cnf
mv -f ${destination}localtime   /etc/localtime

echo 'All done!'
您可能只想使用 Blueprint.

Generating Puppet modules and Chef cookbooks

在尝试将其部署到另一台服务器之前,您将能够编辑生成的包.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 安装Supervisor 1 yum install python-setuptools
设置时区(CentOS 7) 先执行命令timedatectl status|grep 'Time zone'查看当前时区,如果不是时区(Asia/Shanghai),则需要先设置为中国时区,否则时区不同会存在时差。 #已经是Asia/Shanghai,则无需设置 [root@xia
vim /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO="static" ONBOOT=yes IPADDR=192.168.8.106 NETMASK=255.255.252.0 GATEWAY=192.168.
一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 [root@localhost local]# yum install -y gcc 二、下载并解压安装包 [root@localhost local
第一步 On CentOS/RHEL 6.*: $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm On CentOS/RHEL 7: $
/// <summary> /// 取小写文件名后缀 /// </summary> /// <param name="name">文件名</param> /// <returns>返回小写后缀,不带“.”</ret
which nohup .bash_profile中并source加载 如果没有就安装吧 yum provides */nohup nohup npm run start & nohup ./kibana &
1.1 MySQL安装 1.1.1 下载wget命令 yum -y install wget 1.1.2 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 1.1.3 安装My
重启 reboot shutdown -r now init 6 关闭 init 0 shutdown -h now shutdown -h 20:25 #8点25关机查看内存 free CPU利用率 top 日期 date 设置时间 date 033017002015 #月日时间年 日历 cal
1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :
1 下载并安装MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。 一、相关命令 通过initctl help可以查看相关命令 [root@localhost ~]# initctl help Job commands: start Start job. sto
1、使用命令:df -lk 找到已满磁盘 2、使用命令:du --max-depth=1 -h 查找大文件,删除
ifconfig:查看网卡信息 网卡配置文件位置: /etc/sysconfig/network-scripts/文件夹 nmtui:配置网卡 netstat -tlunp:查看端口信息 端口信息存储位置: /etc/services文件 route:查看路由信息 wget:下载网路文件,例如 wg
ps -ef:查看所有进程, ps -ef |grap firewalld 查看与firewalld相关的进程 which :查看进程:which firewalld kill 进程id:杀掉进程 kill 640,强制杀:kill -9 640 man:查看帮助,例如 man ps 查看
useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户abc添加到ccna组 gpasswd -a abc ccna groups abc:查看用户abc属