Extend provisioning.
authorMichael Adam <obnox@samba.org>
Sun, 11 Jan 2015 23:39:16 +0000 (00:39 +0100)
committerMichael Adam <obnox@samba.org>
Sun, 11 Jan 2015 23:39:16 +0000 (00:39 +0100)
- add public interface
- configure public addresses
- improve provisioning script
- prepare static public ips, but don't set them

Vagrantfile

index 6ae6aa66f855ac3a61e48838e0d3fe73c6cf11ef..184370cfdb1466b89d1c1de0fcb552bb8e0a6a61 100644 (file)
@@ -11,21 +11,33 @@ VAGRANTFILE_API_VERSION = "2"
 INTERNAL_NET_LINK = 'virbr1'
 INTERNAL_NET_TYPE = 'veth'
 
+PUBLIC_NET_TYPE = "veth"
+PUBLIC_NET_LINK = "virbr2"
+
+PUBLIC_IPS = [
+  "10.111.222.211/24 eth2",
+  "10.111.222.212/24 eth2",
+  "10.111.222.213/24 eth2",
+]
+
 VMS = [
   {
     :hostname => 'node1',
     :container_name => 'fedora-cluster-node1',
     :internal_ip => '172.16.1.201',
+    :public_ip => '10.111.222.201',
   },
   {
     :hostname => 'node2',
     :container_name => 'fedora-cluster-node2',
     :internal_ip => '172.16.1.202',
+    :public_ip => '10.111.222.202',
   },
   {
     :hostname => 'node3',
     :container_name => 'fedora-cluster-node3',
     :internal_ip => '172.16.1.203',
+    :public_ip => '10.111.222.203',
   },
 ]
 
@@ -37,25 +49,56 @@ VMS = [
 PROVISION_SCRIPT = <<SCRIPT
 set -e 
 
-yum -y install valgrind strace gdb ctdb samba
+BACKUP_SUFFIX=".orig.$(date +%Y%m%d-%H%M%S)"
+
+# install software
+#
+# dependencies needed due to missing Requires in ctdb:
+yum -y install ethtool net-tools
+yum -y install ctdb samba
+# debug tools
+yum -y install valgrind strace gdb
+
+systemctl stop ctdb.service
 
 # create nodes file:
-echo #{VMS[0][:internal_ip]} >  /etc/ctdb/nodes
-echo #{VMS[1][:internal_ip]} >> /etc/ctdb/nodes
-echo #{VMS[2][:internal_ip]} >> /etc/ctdb/nodes
+#
+NODES_FILE="/etc/ctdb/nodes"
+test -f ${NODES_FILE} || touch ${NODES_FILE}
+mv -f ${NODES_FILE} ${NODES_FILE}${BACKUP_SUFFIX}
+cat <<EOF > ${NODES_FILE}
+#{VMS.map { |vm| vm[:internal_ip] }.join("\n")}
+EOF
+
+# create public_addresses file:
+#
+PUBLIC_ADDRESSES_FILE=/etc/ctdb/public_addresses
+test -f ${PUBLIC_ADDRESSES_FILE} || touch ${PUBLIC_ADDRESSES_FILE}
+mv -f ${PUBLIC_ADDRESSES_FILE} ${PUBLIC_ADDRESSES_FILE}${BACKUP_SUFFIX}
+cat <<EOF > ${PUBLIC_ADDRESSES_FILE}
+#{PUBLIC_IPS.join("\n")}
+EOF
 
 # prepare ctdb config:
-mv /etc/sysconfig/ctdb /etc/sysconfig/ctdb.orig.`date +%Y%m%d-%H%M%S`
+#
+CTDB_CONFIG_FILE=/etc/sysconfig/ctdb
+test -f ${CTDB_CONFIG_FILE} || touch ${CTDB_CONFIG_FILE}
+mv ${CTDB_CONFIG_FILE} ${CTDB_CONFIG_FILE}${BACKUP_SUFFIX}
 mkdir -p /shared/ctdb/
-cat <<EOF > /etc/sysconfig/ctdb
-#CTDB_NODES=/etc/ctdb/nodes
+cat <<EOF > ${CTDB_CONFIG_FILE}
+CTDB_NODES=${NODES_FILE}
+CTDB_PUBLIC_ADDRESSES=${PUBLIC_ADDRESSES_FILE}
 CTDB_RECOVERY_LOCK=/shared/ctdb/reclock
 CTDB_MANAGES_SAMBA="yes"
 #CTDB_MANAGES_WINBIND="yes"
 EOF
 
-mv /etc/samba/smb.conf /etc/samba/smb.conf.orig.`date +%Y%m%d-%H%M%S`
-cat <<EOF > /etc/samba/smb.conf
+# configure samba
+#
+SMB_CONF=/etc/samba/smb.conf
+test -f ${SMB_CONF} || touch ${SMB_CONF}
+mv ${SMB_CONF} ${SMB_CONF}${BACKUP_SUFFIX}
+cat <<EOF > ${SMB_CONF}
 [global]
        netbios name = sambacluster
        workgroup = vagrant
@@ -101,10 +144,16 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
       node.vm.hostname = machine[:hostname]
       node.vm.provider :lxc do |lxc|
         lxc.container_name = machine[:container_name]
+        # internal network
         lxc.customize "network.type", INTERNAL_NET_TYPE
         lxc.customize "network.link", INTERNAL_NET_LINK
         lxc.customize "network.flags", "up"
         lxc.customize "network.ipv4", machine[:internal_ip]
+        # public network
+        lxc.customize "network.type", PUBLIC_NET_TYPE
+        lxc.customize "network.link", PUBLIC_NET_LINK
+        lxc.customize "network.flags", "up"
+        #lxc.customize "network.ipv4", machine[:public_ip]
       end
       node.vm.synced_folder "shared/", "/shared"
     end