Last active
October 29, 2019 17:01
-
-
Save notmyname/40b8131963346676dd18817aeb5ef799 to your computer and use it in GitHub Desktop.
py3-only saio setup on ubuntu 18.04 (bionic)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set +e | |
VBoxManage controlvm saio_vm poweroff | |
VBoxManage unregistervm saio_vm --delete | |
rm /home/john/vbox_storage/saio_vm/* | |
set -e | |
VBoxManage createvm --name saio_vm --ostype Ubuntu_64 --register | |
VBoxManage modifyvm saio_vm --memory 4096 --acpi on --boot1 dvd --boot2 disk --boot3 none --boot4 none --cpus 2 | |
VBoxManage modifyvm saio_vm --audio none | |
VBoxManage storagectl saio_vm --name SATA --add sata --controller IntelAhci --portcount 16 --hostiocache off --bootable on | |
VBoxManage storagectl saio_vm --name IDE --add ide | |
VBoxManage createmedium disk --filename /home/john/vbox_storage/saio_vm/saio_os.vdi --format VDI --size 10240 | |
VBoxManage storageattach saio_vm --storagectl SATA --port 0 --device 0 --type hdd --medium /home/john/vbox_storage/saio_vm/saio_os.vdi | |
VBoxManage storageattach saio_vm --storagectl IDE --port 0 --device 1 --type dvddrive --medium /home/john/vbox_storage/ubuntu-18.04.1-live-server-amd64.iso | |
# create data drives | |
VBoxManage createmedium disk --filename /home/john/vbox_storage/saio_vm/saio_disk1.vdi --format VDI --size 20480 | |
VBoxManage createmedium disk --filename /home/john/vbox_storage/saio_vm/saio_disk2.vdi --format VDI --size 20480 | |
VBoxManage createmedium disk --filename /home/john/vbox_storage/saio_vm/saio_disk3.vdi --format VDI --size 20480 | |
VBoxManage createmedium disk --filename /home/john/vbox_storage/saio_vm/saio_disk4.vdi --format VDI --size 20480 | |
VBoxManage createmedium disk --filename /home/john/vbox_storage/saio_vm/saio_disk5.vdi --format VDI --size 20480 | |
VBoxManage createmedium disk --filename /home/john/vbox_storage/saio_vm/saio_disk6.vdi --format VDI --size 20480 | |
VBoxManage createmedium disk --filename /home/john/vbox_storage/saio_vm/saio_disk7.vdi --format VDI --size 20480 | |
VBoxManage createmedium disk --filename /home/john/vbox_storage/saio_vm/saio_disk8.vdi --format VDI --size 20480 | |
VBoxManage storageattach saio_vm --storagectl SATA --port 2 --device 0 --type hdd --medium /home/john/vbox_storage/saio_vm/saio_disk1.vdi | |
VBoxManage storageattach saio_vm --storagectl SATA --port 3 --device 0 --type hdd --medium /home/john/vbox_storage/saio_vm/saio_disk2.vdi | |
VBoxManage storageattach saio_vm --storagectl SATA --port 4 --device 0 --type hdd --medium /home/john/vbox_storage/saio_vm/saio_disk3.vdi | |
VBoxManage storageattach saio_vm --storagectl SATA --port 5 --device 0 --type hdd --medium /home/john/vbox_storage/saio_vm/saio_disk4.vdi | |
VBoxManage storageattach saio_vm --storagectl SATA --port 6 --device 0 --type hdd --medium /home/john/vbox_storage/saio_vm/saio_disk5.vdi | |
VBoxManage storageattach saio_vm --storagectl SATA --port 7 --device 0 --type hdd --medium /home/john/vbox_storage/saio_vm/saio_disk6.vdi | |
VBoxManage storageattach saio_vm --storagectl SATA --port 8 --device 0 --type hdd --medium /home/john/vbox_storage/saio_vm/saio_disk7.vdi | |
VBoxManage storageattach saio_vm --storagectl SATA --port 9 --device 0 --type hdd --medium /home/john/vbox_storage/saio_vm/saio_disk8.vdi | |
VBoxManage modifyvm saio_vm --vrde on | |
VBoxManage modifyvm saio_vm --nic1 bridged --bridgeadapter1 eno3 | |
VBoxManage modifyvm saio_vm --vrdeauthtype null | |
VBoxManage modifyvm saio_vm --vrde on --vrdeport 3389 --vrdeaddress 0.0.0.0 | |
# why doesn't this do vrdp stuff? | |
VBoxHeadless --startvm saio_vm --vrde config |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sudo apt-get update | |
sudo apt-get upgrade | |
sudo apt-add-repository universe | |
sudo apt-get install curl gcc memcached rsync sqlite3 xfsprogs git-core \ | |
libffi-dev libssl-dev python3-setuptools python3-dev \ | |
python3-pip python3-coverage python3-nose python3-xattr \ | |
python3-eventlet python3-greenlet python3-pastedeploy \ | |
python3-netifaces python3-dnspython python3-mock | |
n=0 | |
for x in {b..i}; do | |
((n++)) | |
sudo parted /dev/sd${x} --script -- mklabel gpt | |
sudo parted /dev/sd${x} --script -- mkpart primary 0% 100% | |
sudo mkfs.xfs -f -L d${n} /dev/sd${x}1 | |
done | |
sudo mkdir -p /srv/1/node/d1 | |
sudo mkdir -p /srv/1/node/d5 | |
sudo mkdir -p /srv/2/node/d2 | |
sudo mkdir -p /srv/2/node/d6 | |
sudo mkdir -p /srv/3/node/d3 | |
sudo mkdir -p /srv/3/node/d7 | |
sudo mkdir -p /srv/4/node/d4 | |
sudo mkdir -p /srv/4/node/d8 | |
truncate -s 1GB /home/swift/xfs_file # create 1GB fil for XFS in your home directory | |
mkfs.xfs xfs_file | |
sudo mount -o loop,noatime,nodiratime xfs_file /tmp | |
sudo chmod -R 1777 /tmp | |
sudo tee -a /etc/fstab <<EOM | |
/home/swift/xfs_file /tmp xfs rw,noatime,nodiratime,attr2,inode64,noquota 0 0 | |
LABEL=d1 /srv/1/node/d1 xfs noatime,nodiratime,logbufs=8 0 0 | |
LABEL=d2 /srv/1/node/d5 xfs noatime,nodiratime,logbufs=8 0 0 | |
LABEL=d3 /srv/2/node/d2 xfs noatime,nodiratime,logbufs=8 0 0 | |
LABEL=d4 /srv/2/node/d6 xfs noatime,nodiratime,logbufs=8 0 0 | |
LABEL=d5 /srv/3/node/d3 xfs noatime,nodiratime,logbufs=8 0 0 | |
LABEL=d6 /srv/3/node/d7 xfs noatime,nodiratime,logbufs=8 0 0 | |
LABEL=d7 /srv/4/node/d4 xfs noatime,nodiratime,logbufs=8 0 0 | |
LABEL=d8 /srv/5/node/d8 xfs noatime,nodiratime,logbufs=8 0 0 | |
EOM | |
for x in {1..8}; do | |
sudo mount -L d${x} | |
done | |
sudo chown -R swift:swift /srv/*/node/*/ | |
sudo mkdir -p /var/run/swift | |
sudo chown -R swift:swift /var/run/swift | |
sudo tee -a /etc/rc.local <<EOM | |
mkdir -p /var/cache/swift /var/cache/swift2 /var/cache/swift3 /var/cache/swift4 | |
chown swift:swift /var/cache/swift* | |
mkdir -p /var/run/swift | |
chown swift:swift /var/run/swift | |
EOM | |
cd $HOME | |
# install swiftclient | |
git clone https://github.com/openstack/python-swiftclient.git | |
cd python-swiftclient | |
sudo python3 ./setup.py develo | |
cd .. | |
# install swift | |
git clone https://github.com/openstack/swift.git | |
cd swift | |
sudo pip3 install --no-binary cryptography -r requirements.txt | |
sudo python3 ./setup.py develop | |
sudo pi3 install -r test-requirements.txt | |
cd .. | |
# rsync | |
sudo cp $HOME/swift/doc/saio/rsyncd.conf /etc/ | |
sudo sed -i "s/<your-user-name>/${USER}/" /etc/rsyncd.conf | |
sudo sed -i "s/RSYNC_ENABLE=false/RSYNC_ENABLE=true/" /etc/default/rsync | |
sudo systemctl enable rsync | |
sudo systemctl start rsync | |
# memcached | |
sudo systemctl enable memcached.service | |
sudo systemctl start memcached.service | |
# individual logging | |
sudo cp $HOME/swift/doc/saio/rsyslog.d/10-swift.conf /etc/rsyslog.d/ | |
sudo sed -i 's/$PrivDropToGroup syslog/$PrivDropToGroup adm/' /etc/rsyslog.conf | |
sudo mkdir -p /var/log/swift | |
sudo chown -R syslog.adm /var/log/swift | |
sudo chmod -R g+w /var/log/swift | |
sudo service rsyslog restart | |
# swift configs | |
cd $HOME/swift/doc; sudo cp -r saio/swift /etc/swift; cd - | |
sudo chown -R ${USER}:${USER} /etc/swift | |
find /etc/swift/ -name \*.conf | xargs sudo sed -i "s/<your-user-name>/${USER}/" | |
mkdir -p $HOME/bin | |
cd $HOME/swift/doc; cp saio/bin/* $HOME/bin; cd - | |
chmod +x $HOME/bin/* | |
cat >$HOME/bin/resetswift <<\EOM | |
#!/bin/bash | |
swift-init all kill | |
sudo find /var/log/swift -type f -exec rm -f {} \; | |
# unmount drives | |
n=0 | |
for x in {b..i}; do | |
((n++)) | |
sudo umount -f /dev/sd${x}1 | |
# sudo parted /dev/sd${x} --script -- mklabel gpt | |
# sudo parted /dev/sd${x} --script -- mkpart primary 0% 100% | |
# sudo umount -f /dev/sd${x}1 | |
sudo mkfs.xfs -f -L d${n} /dev/sd${x}1 | |
done | |
for x in {1..8}; do | |
sudo mount -L d${x} | |
done | |
sudo chown -R swift:swift /srv/*/node/*/ | |
sudo mkdir -p /var/run/swift | |
sudo chown -R swift:swift /var/run/swift | |
find /var/cache/swift* -type f -name *.recon -exec rm -f {} \; | |
if [ "`type -t systemctl`" == "file" ]; then | |
sudo systemctl restart rsyslog | |
sudo systemctl restart memcached | |
else | |
sudo service rsyslog restart | |
sudo service memcached restart | |
fi | |
EOM | |
cat >$HOME/bin/remakerings <<\EOM | |
#!/bin/bash | |
set -e | |
cd /etc/swift | |
rm -f *.builder *.ring.gz backups/*.builder backups/*.ring.gz | |
swift-ring-builder object.builder create 10 3 1 | |
swift-ring-builder object.builder add r1z1-127.0.0.1:6010/d1 1 | |
swift-ring-builder object.builder add r1z2-127.0.0.2:6020/d2 1 | |
swift-ring-builder object.builder add r1z3-127.0.0.3:6030/d3 1 | |
swift-ring-builder object.builder add r1z4-127.0.0.4:6040/d4 1 | |
swift-ring-builder object.builder rebalance | |
swift-ring-builder object-1.builder create 10 2 1 | |
swift-ring-builder object-1.builder add r1z1-127.0.0.1:6010/d1 1 | |
swift-ring-builder object-1.builder add r1z2-127.0.0.2:6020/d2 1 | |
swift-ring-builder object-1.builder add r1z3-127.0.0.3:6030/d3 1 | |
swift-ring-builder object-1.builder add r1z4-127.0.0.4:6040/d4 1 | |
swift-ring-builder object-1.builder rebalance | |
swift-ring-builder object-2.builder create 10 6 1 | |
swift-ring-builder object-2.builder add r1z1-127.0.0.1:6010/d1 1 | |
swift-ring-builder object-2.builder add r1z1-127.0.0.1:6010/d5 1 | |
swift-ring-builder object-2.builder add r1z2-127.0.0.2:6020/d2 1 | |
swift-ring-builder object-2.builder add r1z2-127.0.0.2:6020/d6 1 | |
swift-ring-builder object-2.builder add r1z3-127.0.0.3:6030/d3 1 | |
swift-ring-builder object-2.builder add r1z3-127.0.0.3:6030/d7 1 | |
swift-ring-builder object-2.builder add r1z4-127.0.0.4:6040/d4 1 | |
swift-ring-builder object-2.builder add r1z4-127.0.0.4:6040/d8 1 | |
swift-ring-builder object-2.builder rebalance | |
swift-ring-builder container.builder create 10 3 1 | |
swift-ring-builder container.builder add r1z1-127.0.0.1:6011/d1 1 | |
swift-ring-builder container.builder add r1z2-127.0.0.2:6021/d2 1 | |
swift-ring-builder container.builder add r1z3-127.0.0.3:6031/d3 1 | |
swift-ring-builder container.builder add r1z4-127.0.0.4:6041/d4 1 | |
swift-ring-builder container.builder rebalance | |
swift-ring-builder account.builder create 10 3 1 | |
swift-ring-builder account.builder add r1z1-127.0.0.1:6012/d1 1 | |
swift-ring-builder account.builder add r1z2-127.0.0.2:6022/d2 1 | |
swift-ring-builder account.builder add r1z3-127.0.0.3:6032/d3 1 | |
swift-ring-builder account.builder add r1z4-127.0.0.4:6042/d4 1 | |
swift-ring-builder account.builder rebalance | |
EOM | |
cp $HOME/swift/test/sample.conf /etc/swift/test.conf | |
echo "export SWIFT_TEST_CONFIG_FILE=/etc/swift/test.conf" >> $HOME/.bashrc | |
echo "export PATH=${PATH}:$HOME/bin" >> $HOME/.bashrc | |
# let the proxy listen externally | |
sed -i "s/bind_ip = 127.0.0.1/bind_ip = 0.0.0.0/" /etc/swift/proxy-server.conf |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment