我正致力于自动配置我的开发虚拟机。它做了一些基本的事情:
其余的配置将由一些ruby脚本管理,这就是为什么ruby是这个脚本的最后一步。
我把这些东西分解成单独的脚本,我可以通过运行
来很好地运行它们卷曲some.host/proxy.sh | bash的
因此,为了实现在空白VM上实现1命令配置的梦想,我试图制作看起来像这样的东西:
curl some.host/proxy.sh | bash
source ~/.bashrc
curl some.host/apt.sh | bash
curl some.host/guest_additions.sh | bash
curl some.host/development_base.sh | bash
代理脚本(成功完成):
sudo sh -c "echo 'Acquire::http::proxy \"http://proxy.company.net:3000\";' > /etc/apt/apt.conf.d/01proxy"
sudo sh -c "echo 'Acquire::https::proxy \"https://proxy.company.net:3000\";' >> /etc/apt/apt.conf.d/01proxy"
echo 'export http_proxy=http://proxy.company.net:3000' >> ~/.bashrc
echo 'export HTTP_PROXY=http://proxy.company.net:3000' >> ~/.bashrc
echo 'export https_proxy=https://proxy.company.net:3000' >> ~/.bashrc
echo 'export HTTPS_PROXY=https://proxy.company.net:3000' >> ~/.bashrc
echo 'export no_proxy="company.net,localhost,127.0.0.1"' >> ~/.bashrc
echo 'export NO_PROXY="company.net,localhost,127.0.0.1"' >> ~/.bashrc
echo 'source ~/.bashrc' >> .bash_profile
apt命令
sudo apt-get update
sudo apt-get install -y build-essential git-core libxml2 libxml2-dev libxslt1-dev dkms linux-headers-generic linux-headers-$(uname -r) zlib1g-dev libssl-dev tklib
嘉宾增加(这永远不会运行)
source ~/.bashrc
guest_additions_iso=VBoxGuestAdditions_4.3.28.iso
wget --directory-prefix=$HOME http://dlc-cdn.sun.com/virtualbox/4.3.28/$guest_additions_iso
sudo mount -o loop $HOME/$guest_additions_iso /mnt
sudo /mnt/VBoxLinuxAdditions.run
sudo umount -f /mnt
rm $HOME/$guest_additions_iso
Ruby(这永远不会运行)
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash
export PATH="$HOME/.rbenv/bin:$HOME/.rbenv/shims:$PATH"
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
rbenv install 2.1.5
rbenv global 2.1.5
gem install bundler
这很有效,直到guest_additions脚本。
apt-get安装需要几分钟,完成后,脚本就会停止。它永远不会尝试外出并获取/运行下一个脚本。
这样做的正确方法是什么?
编辑:
好的,很多评论,我试着在这里而不是在评论中解决。
足够公平,我已经在上面添加了。我想也许只是下载和执行其他脚本的脚本的想法是基础的或者本身会有一些注意事项,所以我最初没有包含脚本以避免用太多细节来解决问题
它没有停滞,坚持,它只是像客人添加和开发人员基线那样。
我可能会考虑在某些时候使用木偶或其他东西,但此时我不想这样做。