Compare commits
3 Commits
2fdc02686a
...
master
Author | SHA1 | Date |
---|---|---|
Cory Hawkless | 7c2f8b188e | |
Cory Hawkless | afeb2bac22 | |
Cory Hawkless | 15000a349a |
|
@ -6,15 +6,13 @@ Vagrant.configure("2") do |config|
|
|||
vagrant_root = File.dirname(__FILE__)
|
||||
|
||||
# Trigger the Vagrant pre-up script before uping the first VM only
|
||||
config.trigger.before :up, :vm => ["node-admin"], :append_to_path => ["#{vagrant_root}/scripts"] do
|
||||
run "pre-up.sh"
|
||||
end
|
||||
|
||||
|
||||
# Shell provisionner for all VMs
|
||||
config.vm.provision "ceph-preflight", type: "shell", path: "scripts/provision.sh"
|
||||
|
||||
# All VMs are based on the same box
|
||||
config.vm.box = "bento/ubuntu-16.04"
|
||||
config.vm.box = "generic/ubuntu1804"
|
||||
|
||||
# Use nfs for shared folder
|
||||
config.vm.synced_folder ".", "/vagrant",
|
||||
|
@ -36,12 +34,17 @@ Vagrant.configure("2") do |config|
|
|||
libvirt.volume_cache = "writeback"
|
||||
libvirt.graphics_type = "spice"
|
||||
libvirt.video_type = "qxl"
|
||||
libvirt.storage_pool_name="cephlab"
|
||||
# libvirt.snapshot_pool_name="cephlab"
|
||||
end
|
||||
|
||||
# admin VM
|
||||
config.vm.define "node-admin", primary: true do |admin|
|
||||
admin.vm.hostname = "node-admin"
|
||||
admin.vm.provision "ceph-install", type: "shell", keep_color: true, path: "scripts/provision-admin.sh"
|
||||
admin.trigger.before :up do |trigger|
|
||||
trigger.run = {path: "scripts/pre-up.sh"}
|
||||
end
|
||||
end
|
||||
|
||||
# osd1 VM with private cluster network
|
||||
|
@ -58,15 +61,15 @@ Vagrant.configure("2") do |config|
|
|||
:libvirt__network_name => "cluster-network"
|
||||
osd1.vm.provider :libvirt do |libvirt|
|
||||
libvirt.storage :file,
|
||||
:size => "20G",
|
||||
:size => "10G",
|
||||
:type => "raw",
|
||||
:cache => "writeback"
|
||||
libvirt.storage :file,
|
||||
:size => "40G",
|
||||
:size => "10G",
|
||||
:type => "raw",
|
||||
:cache => "writeback"
|
||||
libvirt.storage :file,
|
||||
:size => "40G",
|
||||
:size => "10G",
|
||||
:type => "raw",
|
||||
:cache => "writeback"
|
||||
end
|
||||
|
@ -82,17 +85,41 @@ Vagrant.configure("2") do |config|
|
|||
:libvirt__network_name => "cluster-network"
|
||||
osd2.vm.provider :libvirt do |libvirt|
|
||||
libvirt.storage :file,
|
||||
:size => "20G",
|
||||
:size => "10G",
|
||||
:type => "raw",
|
||||
:cache => "writeback"
|
||||
libvirt.storage :file,
|
||||
:size => "40G",
|
||||
:size => "10G",
|
||||
:type => "raw",
|
||||
:cache => "writeback"
|
||||
libvirt.storage :file,
|
||||
:size => "40G",
|
||||
:size => "10G",
|
||||
:type => "raw",
|
||||
:cache => "writeback"
|
||||
end
|
||||
end
|
||||
|
||||
# osd3 VM with private cluster network
|
||||
# 3 additional disks: 1 for journals and 2 for osd
|
||||
config.vm.define "node-osd3" do |osd3|
|
||||
osd3.vm.hostname = "node-osd3"
|
||||
osd3.vm.network :private_network,
|
||||
:type => "dhcp",
|
||||
:libvirt__network_name => "cluster-network"
|
||||
osd3.vm.provider :libvirt do |libvirt|
|
||||
libvirt.storage :file,
|
||||
:size => "10G",
|
||||
:type => "raw",
|
||||
:cache => "writeback"
|
||||
libvirt.storage :file,
|
||||
:size => "10G",
|
||||
:type => "raw",
|
||||
:cache => "writeback"
|
||||
libvirt.storage :file,
|
||||
:size => "10G",
|
||||
:type => "raw",
|
||||
:cache => "writeback"
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -49,6 +49,8 @@ ceph-deploy new $ADMIN_NODE
|
|||
# Initialize cluster configuration
|
||||
$OUTPUT_LOG "Initialize cluster configuration"
|
||||
cat << CLUSTERCONFIG | tee -a ceph.conf
|
||||
[global]
|
||||
mon_inital_members = ceph-admin
|
||||
public network = $PUBLIC_NETWORK
|
||||
cluster network = $CLUSTER_NETWORK
|
||||
|
||||
|
@ -69,7 +71,7 @@ done
|
|||
|
||||
# Deploy ceph on all nodes
|
||||
$OUTPUT_LOG "Deploy ceph on all nodes"
|
||||
ceph-deploy install --release luminous $NODES
|
||||
ceph-deploy install --release octopus $NODES
|
||||
|
||||
# Create initial monitor
|
||||
$OUTPUT_LOG "Create initial monitor"
|
||||
|
@ -100,8 +102,9 @@ for NODE in $OSD_NODES; do
|
|||
ssh $NODE sudo cp /home/$CEPH_ADMIN_USER/ceph.bootstrap-osd.keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
|
||||
ssh $NODE sudo chown ceph:ceph /var/lib/ceph/bootstrap-osd/ceph.keyring
|
||||
$OUTPUT_LOG "Create OSDs on $NODE"
|
||||
ssh $NODE sudo ceph-volume lvm create --filestore --data /dev/vdb --journal /dev/vda1
|
||||
ssh $NODE sudo ceph-volume lvm create --filestore --data /dev/vdc --journal /dev/vda2
|
||||
ssh $NODE sudo ceph-volume lvm create --bluestore --data /dev/vdb
|
||||
ssh $NODE sudo ceph-volume lvm create --bluestore --data /dev/vdc
|
||||
ssh $NODE sudo ceph-volume lvm create --bluestore --data /dev/vdd
|
||||
done;
|
||||
|
||||
# wait 10 seconds and get cluster status
|
||||
|
|
|
@ -38,7 +38,7 @@ CEPH_ADMIN_USER="ceph-admin"
|
|||
|
||||
# Nodes
|
||||
ADMIN_NODE="node-admin"
|
||||
OSD_NODES="node-osd1 node-osd2"
|
||||
OSD_NODES="node-osd1 node-osd2 node-osd3"
|
||||
NODES="$ADMIN_NODE $OSD_NODES"
|
||||
|
||||
# Networks
|
||||
|
|
|
@ -41,10 +41,10 @@ export DEBIAN_FRONTEND=noninteractive
|
|||
# Make sure we have the french locale
|
||||
locale-gen fr_FR.UTF-8
|
||||
|
||||
# Install ceph repository (luminous version)
|
||||
$OUTPUT_LOG "Install ceph repository (luminous version)"
|
||||
# Install ceph repository (Octopus version)
|
||||
$OUTPUT_LOG "Install ceph repository (Octopus version)"
|
||||
wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add -
|
||||
echo deb https://download.ceph.com/debian-luminous/ $(lsb_release -sc) main | tee /etc/apt/sources.list.d/ceph.list
|
||||
echo deb https://download.ceph.com/debian-octopus/ $(lsb_release -sc) main | tee /etc/apt/sources.list.d/ceph.list
|
||||
apt-get update
|
||||
|
||||
# Install chrony for time synchronization, gdisk for GPT partitioning,
|
||||
|
@ -91,6 +91,7 @@ echo >> /etc/hosts
|
|||
# Signal that IP is ready
|
||||
$OUTPUT_LOG "Signal that IP is ready"
|
||||
echo -e "$IP_ADDRESS\t$GUEST_NAME" | tee "$GUEST_VAGRANT_SIGNAL_DIR/$GUEST_NAME-IP"
|
||||
echo -e "$IP_ADDRESS\t$GUEST_NAME" >>/etc/hosts
|
||||
|
||||
# Wait for all nodes IP and update /etc/hosts
|
||||
$OUTPUT_LOG "Wait for all nodes IP and update /etc/hosts"
|
||||
|
|
Loading…
Reference in New Issue