未验证 提交 f080669d 编写于 作者: O Oliver Albertini 提交者: GitHub

Make Vagrant builds functional (#6764)

Vagrant: Make Debian and Centos builds functional

* Refactor bash and ruby code in vagrant setup
* Give unique names to VMs with Gporca and without
* add an example `vagrant-local.yml` that syncs `~/gpdb` with `rsync`
* Remove gp-xerces, use out-of-the-box Xerces instead
* use Bentobox builds for Debian and Centos
* Apply host's GPDB git configuration in VM: includes git user.name, user.email, clones from the same origin as user, adds all the user's remotes, and attempts to check out user's current remote/branch
* gitignore the .vagrant directories
上级 ecd3400f
require 'yaml'
# frozen_string_literal: true
require '../common/vagrant-common'
# Basic Vagrant config (API version 2)
Vagrant.configure(2) do |config|
# Base box: Centos-7 box
# NOTE: Over time the VMI below may become outdated, so may need to be
# substituted with a more recent VMI
config.vm.box = "boxcutter/centos72"
config.vm.box = 'bento/centos-7'
# Make it so that network access from the vagrant guest is able to
# use SSH private keys that are present on the host without copying
# them into the VM.
config.ssh.forward_agent = true
config.vm.hostname="gpdbvagrant"
config.vm.hostname = 'gpdbvagrant'
# Give a reasonable amount of cpu and memory to the VM
config.vm.provider "virtualbox" do |vb|
vb.name = "gpdb-dev-host" # Name in VirtualBox
config.vm.provider :virtualbox do |vb|
vb.memory = 8192
vb.cpus = 4
vb.customize ["storagectl", :id, "--name", "SATA Controller", "--hostiocache", "on"]
vb.customize ['modifyvm', :id, '--cableconnected1', 'on']
vb.customize [:storagectl,
:id,
'--name',
'SATA Controller',
'--hostiocache',
:on]
vb.customize [:modifyvm, :id, '--cableconnected1', :on]
end
if File.file?('vagrant-local.yml')
local_config = YAML::load_file('vagrant-local.yml')
local_config['synced_folder'].each do |folder|
config.vm.synced_folder folder['local'], folder['shared'] unless folder['local'].nil? or folder['shared'].nil?
end
end
process_vagrant_local(config)
config.vm.define("gpdb") do |gpdb|
gpdb.vm.provision "shell", path: "vagrant-setup.sh"
gpdb.vm.provision "shell", path: "vagrant-configure-os.sh"
gpdb.vm.provision "shell", path: "vagrant-build-gporca.sh", privileged: false
gpdb.vm.provision "shell", path: "vagrant-build-gpdb.sh", privileged: false, args: "--enable-orca"
config.vm.define(:gpdb) do |gpdb|
name_vm config, 'gpdb-centos-dev-host'
gpdb.vm.provision :shell, path: 'vagrant-setup.sh'
gpdb.vm.provision :shell, path: 'vagrant-configure-os.sh'
gpdb.vm.provision(:shell,
path: '../common/vagrant-build-gporca.sh',
privileged: false)
gpdb.vm.provision(:shell,
path: '../common/vagrant-build-gpdb.sh',
privileged: false,
env: current_git_data,
args: gpdb_build_args)
end
config.vm.define("gpdb_without_gporca") do |gpdb_without_gporca|
gpdb_without_gporca.vm.provision "shell", path: "vagrant-setup.sh"
gpdb_without_gporca.vm.provision "shell", path: "vagrant-configure-os.sh"
gpdb_without_gporca.vm.provision "shell", path: "vagrant-build-gpdb.sh", privileged: false
config.vm.define(:gpdb_without_gporca) do |gpdb|
name_vm config, 'gpdb-without-gporca-centos-dev-host'
gpdb.vm.provision :shell, path: 'vagrant-setup.sh'
gpdb.vm.provision :shell, path: 'vagrant-configure-os.sh'
gpdb.vm.provision(:shell,
path: '../common/vagrant-build-gpdb.sh',
privileged: false,
env: current_git_data,
args: gpdb_build_args(with_gporca: false))
end
end
#!/bin/bash
set -ex
# clone the repos
rm -fr gpdb
pushd ~
git clone https://github.com/greenplum-db/gpdb
popd
export CC="ccache cc"
export CXX="ccache c++"
export PATH=/usr/local/bin:$PATH
rm -rf /usr/local/gpdb
pushd ~/gpdb
./configure --prefix=/usr/local/gpdb $@
make clean
make -j4 -s && make install
popd
# generate ssh key to avoid typing password all the time during gpdemo make
rm -f ~/.ssh/id_rsa
rm -f ~/.ssh/id_rsa.pub
ssh-keygen -t rsa -N "" -f "$HOME/.ssh/id_rsa"
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# BUG: fix the LD_LIBRARY_PATH to find installed GPOPT libraries
echo export LD_LIBRARY_PATH=/usr/local/lib:\$LD_LIBRARY_PATH >> /usr/local/gpdb/greenplum_path.sh
# use gpdemo to start the cluster
pushd ~/gpdb/gpAux/gpdemo
source /usr/local/gpdb/greenplum_path.sh
make
popd
#!/bin/bash
set -x
set -e
# Stop firewall
sudo systemctl stop firewalld
systemctl stop firewalld
# Disable SELinux
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config
setenforce 0
sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config
# GPDB Kernel Settings
sudo rm -f /etc/sysctl.d/gpdb.conf
sudo bash -c 'printf "# GPDB-Specific Settings\n\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "kernel.shmmax = 500000000\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "kernel.shmmni = 4096\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "kernel.shmall = 4000000000\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "kernel.sem = 500 1024000 200 4096\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "kernel.sysrq = 1\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "kernel.core_uses_pid = 1\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "kernel.msgmnb = 65536\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "kernel.msgmax = 65536\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "kernel.msgmni = 2048\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "net.ipv4.tcp_syncookies = 1\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "net.ipv4.ip_forward = 1\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "net.ipv4.conf.default.accept_source_route = 0\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "net.ipv4.tcp_tw_recycle = 1\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "net.ipv4.tcp_max_syn_backlog = 4096\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "net.ipv4.conf.all.arp_filter = 1\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "net.ipv4.ip_local_port_range = 1025 65535\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "net.ipv6.conf.all.disable_ipv6 = 1\n >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "net.core.netdev_max_backlog = 10000\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "net.core.rmem_max = 2097152\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "net.core.wmem_max = 2097152\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "vm.overcommit_memory = 2\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "kernel.core_uses_pid = 1\n" >> /etc/sysctl.d/gpdb.conf'
sudo bash -c 'printf "kernel.core_pattern = /tmp/gpdb_cores/core-%%e-%%s-%%u-%%g-%%p-%%t\n" >> /etc/sysctl.d/gpdb.conf'
sudo sysctl -p /etc/sysctl.d/gpdb.conf
rm -f /etc/sysctl.d/gpdb.conf
cat <<EOF >/etc/sysctl.d/gpdb.conf
# GPDB-Specific Settings
kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 500 1024000 200 4096
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 1025 65535
net.ipv6.conf.all.disable_ipv6 = 1
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2
kernel.core_uses_pid = 1
kernel.core_pattern = /tmp/gpdb_cores/core-%e-%s-%u-%g-%p-%t
EOF
sysctl -p /etc/sysctl.d/gpdb.conf
# Creating directory for core files
sudo rm -rf /tmp/gpdb_cores
sudo mkdir -p /tmp/gpdb_cores
sudo chown vagrant:vagrant /tmp/gpdb_cores
rm -rf /tmp/gpdb_cores
mkdir -p /tmp/gpdb_cores
chown vagrant:vagrant /tmp/gpdb_cores
# GPDB Kernel Limits
sudo rm -f /etc/security/limits.d/gpdb.conf
sudo bash -c 'printf "# GPDB-Specific Settings\n\n" >> /etc/security/limits.d/gpdb.conf'
sudo bash -c 'printf "* soft nofile 65536\n" >> /etc/security/limits.d/gpdb.conf'
sudo bash -c 'printf "* hard nofile 65536\n" >> /etc/security/limits.d/gpdb.conf'
sudo bash -c 'printf "* soft nproc 131072\n" >> /etc/security/limits.d/gpdb.conf'
sudo bash -c 'printf "* hard nproc 131072\n" >> /etc/security/limits.d/gpdb.conf'
sudo bash -c 'printf "* soft core unlimited\n" >> /etc/security/limits.d/gpdb.conf'
sudo bash -c 'printf "* hard core unlimited\n" >> /etc/security/limits.d/gpdb.conf'
rm -f /etc/security/limits.d/gpdb.conf
cat <<EOF >/etc/security/limits.d/gpdb.conf
# GPDB-Specific Settings
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
* soft core unlimited
* hard core unlimited
EOF
# Do not destroy user context on logout
sudo sed -i '/RemoveIPC=no/d' /etc/systemd/logind.conf
sudo bash -c 'echo "RemoveIPC=no" >> /etc/systemd/logind.conf'
sudo service systemd-logind restart
sed -i '/RemoveIPC=no/d' /etc/systemd/logind.conf
echo 'RemoveIPC=no' >> /etc/systemd/logind.conf
service systemd-logind restart
......@@ -2,41 +2,42 @@
set -x
# install packages needed to build and run GPDB
sudo yum -y groupinstall "Development tools"
sudo yum -y install ed
sudo yum -y install readline-devel
sudo yum -y install zlib-devel
sudo yum -y install curl-devel
sudo yum -y install bzip2-devel
sudo yum -y install python-devel
sudo yum -y install apr-devel
sudo yum -y install libevent-devel
sudo yum -y install openssl-libs openssl-devel
sudo yum -y install libyaml libyaml-devel
sudo yum -y install epel-release
sudo yum -y install htop
sudo yum -y install perl-Env
sudo yum -y install ccache
sudo yum -y install libffi-devel
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo pip install psutil lockfile paramiko setuptools
rm get-pip.py
# packages needed to build and run GPDB
dependencies=(
ed
readline-devel
zlib-devel
curl-devel
bzip2-devel
python-devel
python-pip
apr-devel
libevent-devel
openssl-libs openssl-devel
libyaml libyaml-devel
htop
ccache
libffi-devel
libzstd-devel
libxml2-devel
xerces-c-devel
perl-Env perl-ExtUtils-Embed
cmake3
net-tools # gives us netstat
vim mc psmisc # miscellaneous
git2u # requires ius-release
)
# Misc
sudo yum -y install vim mc psmisc
yum -y groupinstall 'Development tools'
# epel-release needed first in order to get cmake3, htop, and ccache
yum -y install epel-release
yum -y remove git
rpm -U https://centos7.iuscommunity.org/ius-release.rpm
yum -y install "${dependencies[@]}"
# cmake 3.0
pushd ~
wget http://www.cmake.org/files/v3.0/cmake-3.0.0.tar.gz
tar -zxvf cmake-3.0.0.tar.gz
pushd cmake-3.0.0
./bootstrap
make
make install
export PATH=/usr/local/bin:$PATH
popd
popd
# so we can call cmake
ln -s /usr/bin/cmake{3,}
sudo chown -R vagrant:vagrant /usr/local
pip install psutil lockfile paramiko setuptools
chown -R vagrant:vagrant /usr/local
#!/bin/bash
set -e
setup_ssh_config() {
grep 'Host github.com' ~/.ssh/config && return
mkdir -p ~/.ssh
cat <<EOF>>~/.ssh/config
Host github.com
HostName github.com
User git
StrictHostKeyChecking No
EOF
chmod -R 600 ~/.ssh/config
}
GPDB_DIR=~/gpdb
if [[ ! -d $GPDB_DIR ]]; then
pushd ~
[[ $GIT_ORIGIN_PATH =~ ^(https?|git):// ]] || setup_ssh_config
git clone "$GIT_ORIGIN_PATH" "$GPDB_DIR"
pushd "$GPDB_DIR"
git config user.name "$CURRENT_GIT_USER_NAME"
git config user.email "$CURRENT_GIT_USER_EMAIL"
# add all remotes found in git repo
for remote_path in "${!GIT_REMOTE_PATH_@}"; do
remote_name=${remote_path/PATH/NAME}
eval git remote add "\$$remote_name" "\$$remote_path"
done
# 'git checkout' same remote and branch as user
CURRENT_GIT_REMOTE_PATH=$(git remote get-url "$CURRENT_GIT_REMOTE")
[[ $CURRENT_GIT_REMOTE_PATH =~ ^(https?|git):// ]] || setup_ssh_config
if git fetch "$CURRENT_GIT_REMOTE" "$CURRENT_GIT_BRANCH"; then
git checkout "$CURRENT_GIT_BRANCH"
else
echo "${BASH_SOURCE[0]}: couldn't checkout user's current remote/branch." >&2
echo "${BASH_SOURCE[0]}: staying on origin/master" >&2
fi
popd
popd
fi
export CC='ccache cc'
export CXX='ccache c++'
export PATH=/usr/local/bin:$PATH
rm -rf /usr/local/gpdb
pushd $GPDB_DIR
./configure --prefix=/usr/local/gpdb "$@"
make clean
make -j4 && make install
popd
# make sure ssh is not stuck asking if the host is known
rm -f ~/.ssh/id_rsa
rm -f ~/.ssh/id_rsa.pub
ssh-keygen -t rsa -N '' -f "${HOME}/.ssh/id_rsa"
cat "${HOME}/.ssh/id_rsa.pub" >> "${HOME}/.ssh/authorized_keys"
{ ssh-keyscan -H localhost
ssh-keyscan -H 127.0.0.1
ssh-keyscan -H "$HOSTNAME"
} >> "${HOME}/.ssh/known_hosts"
chmod 600 ~/.ssh/authorized_keys
# BUG: fix the LD_LIBRARY_PATH to find installed GPOPT libraries
echo export LD_LIBRARY_PATH=/usr/local/lib:\$LD_LIBRARY_PATH \
>>/usr/local/gpdb/greenplum_path.sh
pushd "${GPDB_DIR}/gpAux/gpdemo"
source /usr/local/gpdb/greenplum_path.sh
make
popd
#cd /vagrant/src/pl/plspython/tests
#make containers
#sudo -u postgres make
......@@ -4,12 +4,10 @@ set -ex
# clone the repos
rm -fr gpos
rm -fr gp-xerces
rm -fr gporca
pushd ~
git clone https://github.com/greenplum-db/gpos
git clone https://github.com/greenplum-db/gp-xerces
git clone https://github.com/greenplum-db/gporca
popd
......@@ -26,15 +24,6 @@ pushd ~/gpos
popd
popd
pushd ~/gp-xerces
rm -fr build
mkdir build
pushd build
../configure --prefix=/usr/local
make -j4 && make install
popd
popd
pushd ~/gporca
rm -fr build
mkdir build
......@@ -43,4 +32,3 @@ pushd ~/gporca
make -j4 && make install
popd
popd
# frozen_string_literal: true
require 'yaml'
def process_vagrant_local(config)
return unless File.file? 'vagrant-local.yml'
local_config = YAML.load_file 'vagrant-local.yml'
local_config['synced_folder'].each do |folder|
next if folder['local'].nil? || folder['shared'].nil?
args = {}
folder.each do |k, v|
next if %w[folder local shared].include? k
args[k.to_sym] = v
end
if args[:type] == 'nfs'
config.vm.network :private_network, ip: '192.168.10.201'
end
config.vm.synced_folder folder['local'], folder['shared'], **args
end
end
@args = %w[--enable-debug --with-python --with-perl --with-libxml]
@ld_lib_path = ['LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH']
def gpdb_build_args(with_gporca: true)
return @args + ['--disable-orca'] unless with_gporca
@args + @ld_lib_path
end
def name_vm(config, name)
config.vm.provider :virtualbox do |vb|
vb.name = name
end
end
def all_remotes
remotes = []
`git remote -v | grep '\(fetch\)$'`.split(/\n/).each do |remote|
remote_arr = remote.split(/\t/)
remotes << { name: remote_arr[0], path: remote_arr[1].split(/ /)[0] }
end
remotes
end
# returns a hash with { ENV_NAME: value }
# can be loaded into vagrant-shell's env
def current_git_data
current = `git branch -vv | grep '^*' | grep -o '\\[.*\\]'`.chomp "]\n"
current[0] = ''
r_and_b = current.split(%r{[:/]})
env_vars = {
CURRENT_GIT_REMOTE: r_and_b[0],
CURRENT_GIT_BRANCH: r_and_b[1],
CURRENT_GIT_USER_NAME: `git config user.name`.strip,
CURRENT_GIT_USER_EMAIL: `git config user.email`.strip
}
all_remotes.each_with_index do |remote, index|
if remote[:name] == 'origin'
env_vars[:GIT_ORIGIN_PATH] = remote[:path]
next
end
remote_name_var = 'GIT_REMOTE_NAME_' + index.to_s
remote_path_var = 'GIT_REMOTE_PATH_' + index.to_s
env_vars[remote_name_var.to_sym] = remote[:name]
env_vars[remote_path_var.to_sym] = remote[:path]
end
env_vars
end
---
synced_folder:
- folder:
local: /Users/pivotal/workspace/gpdb
shared: /home/vagrant/gpdb # don't change
type: rsync # can change to nfs
rsync__exclude: .git
rsync__args:
- -a
...
require 'yaml'
# frozen_string_literal: true
Vagrant.configure("2") do |config|
config.vm.box = 'debian/jessie64'
require '../common/vagrant-common'
# Make this VM reachable on the host network as well, so that other
# VM's running other browsers can access our dev server.
config.vm.network :private_network, ip: "192.168.10.200"
Vagrant.configure(2) do |config|
config.vm.box = 'bento/debian-9'
# Make it so that network access from the vagrant guest is able to
# use SSH private keys that are present on the host without copying
# them into the VM.
config.ssh.forward_agent = true
config.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--memory", 4096]
config.vm.hostname = 'gpdbvagrant'
config.vm.provider :virtualbox do |vb|
vb.customize [:modifyvm, :id, '--memory', 4096]
cpu_count = 2
# Determine the available cores in host system.
# This mostly helps on linux, but it couldn't hurt on MacOSX.
if RUBY_PLATFORM =~ /linux/
if RUBY_PLATFORM.match?(/linux/)
cpu_count = `nproc`.to_i
elsif RUBY_PLATFORM =~ /darwin/
elsif RUBY_PLATFORM.match?(/darwin/)
cpu_count = `sysctl -n hw.ncpu`.to_i
end
# Assign additional cores to the guest OS.
v.customize ["modifyvm", :id, "--cpus", cpu_count]
v.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
v.customize ["modifyvm", :id, "--ioapic", "on"]
vb.customize [:modifyvm, :id, '--cpus', cpu_count]
vb.customize [:modifyvm, :id, '--cpuexecutioncap', '50']
vb.customize [:modifyvm, :id, '--ioapic', 'on']
# This setting makes it so that network access from inside the vagrant guest
# is able to resolve DNS using the hosts VPN connection.
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
# This setting makes it so that network access from inside the
# vagrant guest is able to resolve DNS using the hosts VPN connection.
vb.customize [:modifyvm, :id, '--natdnshostresolver1', 'on']
end
nfs_setting = RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/
config.vm.synced_folder "../../../..", "/gpdb",type: "nfs"
if File.file?('vagrant-local.yml')
local_config = YAML::load_file('vagrant-local.yml')
local_config['synced_folder'].each do |folder|
config.vm.synced_folder folder['local'], folder['shared'] unless folder['local'].nil? or folder['shared'].nil?
end
process_vagrant_local(config)
config.vm.define(:gpdb) do |gpdb|
name_vm config, 'gpdb-debian-dev-host'
gpdb.vm.provision(:shell, path: 'vagrant-setup.sh', args: '--setup-gporca')
gpdb.vm.provision(:shell,
path: '../common/vagrant-build-gporca.sh',
privileged: false)
gpdb.vm.provision(:shell,
path: '../common/vagrant-build-gpdb.sh',
privileged: false,
env: current_git_data,
args: gpdb_build_args)
end
config.vm.provision "shell", path: "vagrant-setup.sh"
config.vm.provision "shell", path: "vagrant-build.sh", privileged: false
config.vm.define(:gpdb_without_gporca) do |gpdb|
name_vm config, 'gpdb-without-gporca-debian-dev-host'
gpdb.vm.provision(:shell, path: 'vagrant-setup.sh')
gpdb.vm.provision(:shell,
path: '../common/vagrant-build-gpdb.sh',
privileged: false,
env: current_git_data,
args: gpdb_build_args(with_gporca: false))
end
end
cd /gpdb
sudo mkdir /usr/local/gpdb
sudo chown vagrant:vagrant /usr/local/gpdb
./configure --enable-debug --with-python --with-perl --enable-mapreduce --with-libxml --prefix=/usr/local/gpdb
make clean
make -j 4
make install
cd /gpdb/gpAux
cp -rp gpdemo /home/vagrant/
sudo chown -R vagrant:vagrant /home/vagrant/gpdemo
cat /home/vagrant/.ssh/id_rsa.pub >> /home/vagrant/.ssh/authorized_keys
# make sure ssh is not stuck asking if the host is known
ssh-keyscan -H localhost >> /home/vagrant/.ssh/known_hosts
ssh-keyscan -H 127.0.0.1 >> /home/vagrant/.ssh/known_hosts
ssh-keyscan -H debian-jessie >> /home/vagrant/.ssh/known_hosts
cd /home/vagrant/gpdemo
source /usr/local/gpdb/greenplum_path.sh
make cluster
#cd /vagrant/src/pl/plspython/tests
#make containers
#sudo -u postgres make
sudo apt-get update
sudo apt-get -y install apt-transport-https
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo bash -c 'echo "deb https://apt.dockerproject.org/repo debian-jessie main" > /etc/apt/sources.list.d/docker.list'
sudo apt-get update
sudo apt-get install wget
sudo apt-get -y install docker-engine build-essential libreadline6 \
libreadline6-dev zlib1g-dev bison flex git-core libcurl4-openssl-dev \
python-dev libxml2-dev pkg-config vim libbz2-dev python-pip \
libapr1-dev libevent-dev libyaml-dev libperl-dev libffi-dev \
python-setuptools-whl libssl-dev
#!/bin/bash
set -ex
# this entire file runs as sudo
apt-get update
# docker-engine prep
apt-get upgrade -y
apt-get -y install apt-transport-https dirmngr
KEY=F76221572C52609D
# sometimes sks-keyservers doesn't respond, so use others as backup
for server in p80.pool.sks-keyservers.net pgp.mit.edu keyserver.ubuntu.com; do
apt-key adv --no-tty --recv-key --keyserver "hkp://${server}:80" "$KEY" && break
done
echo 'deb https://apt.dockerproject.org/repo debian-stretch main' > /etc/apt/sources.list.d/docker.list
echo 'deb http://ftp.debian.org/debian stretch-backports main' >>/etc/apt/sources.list
apt-get update
dependencies=(
bison
build-essential
ccache
docker-engine
flex
git-core
htop
libapr1-dev
libbz2-dev
libcurl4-openssl-dev
libevent-dev
libffi-dev
libperl-dev
libreadline-dev
libssl-dev
libxerces-c-dev
libxml2-dev
libyaml-dev
pkg-config
python-dev
python-pip
python-setuptools
vim
zlib1g-dev
)
# gporca: install a version of cmake > 3.1.0
[[ $1 == --setup-gporca ]] && dependencies+=(cmake)
apt-get -y install "${dependencies[@]}"
# need a backported libzstd to avoid implicit
# declaration of functions warning/errors
apt-get -yt stretch-backports install libzstd-dev
echo locales locales/locales_to_be_generated multiselect de_DE ISO-8859-1, de_DE ISO-8859-15, de_DE.UTF-8 UTF-8, de_DE@euro ISO-8859-15, en_GB ISO-8859-1, en_GB ISO-8859-15, en_GB.ISO-8859-15 ISO-8859-15, en_GB.UTF-8 UTF-8, en_US ISO-8859-1, en_US ISO-8859-15, en_US.ISO-8859-15 ISO-8859-15, en_US.UTF-8 UTF-8 | debconf-set-selections
echo locales locales/default_environment_locale select en_US.UTF-8 | debconf-set-selections
dpkg-reconfigure locales -f noninteractive
su vagrant -c "ssh-keygen -t rsa -f .ssh/id_rsa -q -N ''"
pip install --upgrade pip
pip install setuptools --upgrade
pip install cffi --upgrade
pip install lockfile
pip install paramiko --upgrade
pip install setuptools --upgrade
pip install --pre psutil
pip install cryptography --upgrade
sudo service docker start
sudo useradd postgres
sudo usermod -aG docker postgres
sudo usermod -aG docker vagrant
service docker start
useradd postgres
usermod -aG docker postgres
usermod -aG docker vagrant
chown -R vagrant:vagrant /usr/local
# make sure system can handle enough semiphores
echo 'kernel.sem = 500 1024000 200 4096' >> /etc/sysctl.d/gpdb.conf
sysctl -p /etc/sysctl.d/gpdb.conf
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册