Permalink
Browse files

initial commit

watch out ! vagrant 0.8.x required

Signed-off-by: Frederic -lefred- Descamps <frederic.descamps@percona.com>
  • Loading branch information...
1 parent 159f296 commit 34673c21a14956777b8cd3f173284f5e006ebf29 Frederic -lefred- Descamps committed Jan 19, 2012
View
@@ -0,0 +1,20 @@
+!!! This needs vagrant 0.8.x !!!
+
+
+This Vagrant setup can be used to test Percona XtraDB Cluster (Percona Server with Galera)
+
+This is used with Centos 6 x86_64, the base box used has multiple interface, eth3 is the nic used for the galera replication.
+That base box can be retrieved on http://dl.dropbox.com/u/11697684/centos6.box.bz2
+
+
+How to use ?
+
+vagrant up percona1
+vagrant up percona2
+vagrant up percona3
+
+And this is all, you have now 3 servers running Percona XtraDB Cluster !
+
+
+Note: SElinux is disabled, there is a selinux policy file included that allows the server to start but the other nodes aren't yet able to sync, I need to investigate...
+
View
@@ -1,19 +0,0 @@
-Vagrant::Config.run do |config|
- config.vm.define :db1 do |db1_config|
- db1_config.vm.box = "lucid64"
- db1_config.vm.network("192.168.200.101")
- end
-
- config.vm.define :db2 do |db2_config|
- db2_config.vm.box = "lucid64"
- db2_config.vm.network("192.168.200.102")
- end
-
- config.vm.define :db3 do |db3_config|
- db3_config.vm.box = "lucid64"
- db3_config.vm.network("192.168.200.103")
- end
-
-end
-
-
View
View
@@ -0,0 +1,140 @@
+Vagrant::Config.run do |config|
+ # All Vagrant configuration is done here. The most common configuration
+ # options are documented and commented below. For a complete reference,
+ # please see the online documentation at vagrantup.com.
+
+ # Every Vagrant virtual environment requires a box to build off of.
+ config.vm.define :percona1 do |percona1_config|
+ percona1_config.vm.box = "centos6"
+ percona1_config.vm.host_name = "percona1"
+ percona1_config.vm.forward_port "http", 80, 8080
+ percona1_config.ssh.max_tries = 100
+ #percona1_config.vm.network("192.168.70.2")
+ #percona1_config.vm.boot_mode = :gui
+ percona1_config.vm.customize do |percona1_vm|
+ percona1_vm.memory_size = 256
+ end
+ percona1_config.vm.provision :puppet do |percona1_puppet|
+ percona1_puppet.pp_path = "/tmp/vagrant-puppet"
+ percona1_puppet.manifests_path = "manifests"
+ percona1_puppet.module_path = "modules"
+ percona1_puppet.manifest_file = "site.pp"
+ percona1_puppet.options = "--verbose"
+ end
+ end
+ config.vm.define :percona2 do |percona2_config|
+ percona2_config.vm.box = "centos6"
+ percona2_config.vm.host_name = "percona2"
+ percona2_config.vm.forward_port "http", 80, 8081
+ percona2_config.ssh.max_tries = 100
+ #percona2_config.vm.network("192.168.70.2")
+ #percona2_config.vm.boot_mode = :gui
+ percona2_config.vm.customize do |percona2_vm|
+ percona2_vm.memory_size = 256
+ end
+ percona2_config.vm.provision :puppet do |percona2_puppet|
+ percona2_puppet.pp_path = "/tmp/vagrant-puppet"
+ percona2_puppet.manifests_path = "manifests"
+ percona2_puppet.module_path = "modules"
+ percona2_puppet.manifest_file = "site.pp"
+ percona2_puppet.options = "--verbose"
+ end
+ end
+ config.vm.define :percona3 do |percona3_config|
+ percona3_config.vm.box = "centos6"
+ percona3_config.vm.host_name = "percona3"
+ percona3_config.ssh.max_tries = 100
+ #percona3_config.vm.network("192.168.70.2")
+ #percona3_config.vm.boot_mode = :gui
+ percona3_config.vm.customize do |percona3_vm|
+ percona3_vm.memory_size = 256
+ end
+ percona3_config.vm.provision :puppet do |percona3_puppet|
+ percona3_puppet.pp_path = "/tmp/vagrant-puppet"
+ percona3_puppet.manifests_path = "manifests"
+ percona3_puppet.module_path = "modules"
+ percona3_puppet.manifest_file = "site.pp"
+ percona3_puppet.options = "--verbose"
+ end
+ end
+
+ # config.vm.box = "base"
+
+ # The url from where the 'config.vm.box' box will be fetched if it
+ # doesn't already exist on the user's system.
+ # config.vm.box_url = "http://domain.com/path/to/above.box"
+
+ # Boot with a GUI so you can see the screen. (Default is headless)
+ # config.vm.boot_mode = :gui
+
+ # Assign this VM to a host only network IP, allowing you to access it
+ # via the IP.
+ # config.vm.network "33.33.33.10"
+
+ # Forward a port from the guest to the host, which allows for outside
+ # computers to access the VM, whereas host only networking does not.
+ # config.vm.forward_port "http", 80, 8080
+
+ # Share an additional folder to the guest VM. The first argument is
+ # an identifier, the second is the path on the guest to mount the
+ # folder, and the third is the path on the host to the actual folder.
+ # config.vm.share_folder "v-data", "/vagrant_data", "../data"
+
+ # Enable provisioning with Puppet stand alone. Puppet manifests
+ # are contained in a directory path relative to this Vagrantfile.
+ # You will need to create the manifests directory and a manifest in
+ # the file base.pp in the manifests_path directory.
+ #
+ # An example Puppet manifest to provision the message of the day:
+ #
+ # # group { "puppet":
+ # # ensure => "present",
+ # # }
+ # #
+ # # File { owner => 0, group => 0, mode => 0644 }
+ # #
+ # # file { '/etc/motd':
+ # # content => "Welcome to your Vagrant-built virtual machine!
+ # # Managed by Puppet.\n"
+ # # }
+ #
+ # config.vm.provision :puppet do |puppet|
+ # puppet.manifests_path = "manifests"
+ # puppet.manifest_file = "base.pp"
+ # end
+
+ # Enable provisioning with chef solo, specifying a cookbooks path (relative
+ # to this Vagrantfile), and adding some recipes and/or roles.
+ #
+ # config.vm.provision :chef_solo do |chef|
+ # chef.cookbooks_path = "cookbooks"
+ # chef.add_recipe "mysql"
+ # chef.add_role "web"
+ #
+ # # You may also specify custom JSON attributes:
+ # chef.json.merge!({ :mysql_password => "foo" })
+ # end
+
+ # Enable provisioning with chef server, specifying the chef server URL,
+ # and the path to the validation key (relative to this Vagrantfile).
+ #
+ # The Opscode Platform uses HTTPS. Substitute your organization for
+ # ORGNAME in the URL and validation key.
+ #
+ # If you have your own Chef Server, use the appropriate URL, which may be
+ # HTTP instead of HTTPS depending on your configuration. Also change the
+ # validation key to validation.pem.
+ #
+ # config.vm.provision :chef_server do |chef|
+ # chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
+ # chef.validation_key_path = "ORGNAME-validator.pem"
+ # end
+ #
+ # If you're using the Opscode platform, your validator client is
+ # ORGNAME-validator, replacing ORGNAME with your organization name.
+ #
+ # IF you have your own Chef Server, the default validation client name is
+ # chef-validator, unless you changed the configuration.
+ #
+ # chef.validation_client_name = "ORGNAME-validator"
+end
View
@@ -0,0 +1,133 @@
+Vagrant::Config.run do |config|
+ # All Vagrant configuration is done here. The most common configuration
+ # options are documented and commented below. For a complete reference,
+ # please see the online documentation at vagrantup.com.
+
+ # Every Vagrant virtual environment requires a box to build off of.
+ config.vm.define :percona1 do |percona1_config|
+ percona1_config.vm.box = "centos6"
+ percona1_config.vm.host_name = "percona1"
+ percona1_config.ssh.max_tries = 100
+ #percona1_config.vm.network("192.168.70.2")
+ #percona1_config.vm.boot_mode = :gui
+ percona1_config.vm.customize ["modifyvm", :id, "--memory", "256"]
+ percona1_config.vm.network :hostonly, "192.168.70.2", :adapter => 4
+ percona1_config.vm.provision :puppet do |percona1_puppet|
+ percona1_puppet.pp_path = "/tmp/vagrant-puppet"
+ percona1_puppet.manifests_path = "manifests"
+ percona1_puppet.module_path = "modules"
+ percona1_puppet.manifest_file = "site.pp"
+ percona1_puppet.options = "--verbose"
+ end
+ end
+ config.vm.define :percona2 do |percona2_config|
+ percona2_config.vm.box = "centos6"
+ percona2_config.vm.host_name = "percona2"
+ percona2_config.ssh.max_tries = 100
+ #percona2_config.vm.network("192.168.70.2")
+ #percona2_config.vm.boot_mode = :gui
+ percona2_config.vm.customize ["modifyvm", :id, "--memory", "256"]
+ percona2_config.vm.provision :puppet do |percona2_puppet|
+ percona2_puppet.pp_path = "/tmp/vagrant-puppet"
+ percona2_puppet.manifests_path = "manifests"
+ percona2_puppet.module_path = "modules"
+ percona2_puppet.manifest_file = "site.pp"
+ percona2_puppet.options = "--verbose"
+ end
+ end
+ config.vm.define :percona3 do |percona3_config|
+ percona3_config.vm.box = "centos6"
+ percona3_config.vm.host_name = "percona3"
+ percona3_config.ssh.max_tries = 100
+ #percona3_config.vm.network("192.168.70.2")
+ #percona3_config.vm.boot_mode = :gui
+ percona3_config.vm.customize ["modifyvm", :id, "--memory", "256"]
+ percona3_config.vm.provision :puppet do |percona3_puppet|
+ percona3_puppet.pp_path = "/tmp/vagrant-puppet"
+ percona3_puppet.manifests_path = "manifests"
+ percona3_puppet.module_path = "modules"
+ percona3_puppet.manifest_file = "site.pp"
+ percona3_puppet.options = "--verbose"
+ end
+ end
+
+ # config.vm.box = "base"
+
+ # The url from where the 'config.vm.box' box will be fetched if it
+ # doesn't already exist on the user's system.
+ # config.vm.box_url = "http://domain.com/path/to/above.box"
+
+ # Boot with a GUI so you can see the screen. (Default is headless)
+ # config.vm.boot_mode = :gui
+
+ # Assign this VM to a host only network IP, allowing you to access it
+ # via the IP.
+ # config.vm.network "33.33.33.10"
+
+ # Forward a port from the guest to the host, which allows for outside
+ # computers to access the VM, whereas host only networking does not.
+ # config.vm.forward_port "http", 80, 8080
+
+ # Share an additional folder to the guest VM. The first argument is
+ # an identifier, the second is the path on the guest to mount the
+ # folder, and the third is the path on the host to the actual folder.
+ # config.vm.share_folder "v-data", "/vagrant_data", "../data"
+
+ # Enable provisioning with Puppet stand alone. Puppet manifests
+ # are contained in a directory path relative to this Vagrantfile.
+ # You will need to create the manifests directory and a manifest in
+ # the file base.pp in the manifests_path directory.
+ #
+ # An example Puppet manifest to provision the message of the day:
+ #
+ # # group { "puppet":
+ # # ensure => "present",
+ # # }
+ # #
+ # # File { owner => 0, group => 0, mode => 0644 }
+ # #
+ # # file { '/etc/motd':
+ # # content => "Welcome to your Vagrant-built virtual machine!
+ # # Managed by Puppet.\n"
+ # # }
+ #
+ # config.vm.provision :puppet do |puppet|
+ # puppet.manifests_path = "manifests"
+ # puppet.manifest_file = "base.pp"
+ # end
+
+ # Enable provisioning with chef solo, specifying a cookbooks path (relative
+ # to this Vagrantfile), and adding some recipes and/or roles.
+ #
+ # config.vm.provision :chef_solo do |chef|
+ # chef.cookbooks_path = "cookbooks"
+ # chef.add_recipe "mysql"
+ # chef.add_role "web"
+ #
+ # # You may also specify custom JSON attributes:
+ # chef.json.merge!({ :mysql_password => "foo" })
+ # end
+
+ # Enable provisioning with chef server, specifying the chef server URL,
+ # and the path to the validation key (relative to this Vagrantfile).
+ #
+ # The Opscode Platform uses HTTPS. Substitute your organization for
+ # ORGNAME in the URL and validation key.
+ #
+ # If you have your own Chef Server, use the appropriate URL, which may be
+ # HTTP instead of HTTPS depending on your configuration. Also change the
+ # validation key to validation.pem.
+ #
+ # config.vm.provision :chef_server do |chef|
+ # chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
+ # chef.validation_key_path = "ORGNAME-validator.pem"
+ # end
+ #
+ # If you're using the Opscode platform, your validator client is
+ # ORGNAME-validator, replacing ORGNAME with your organization name.
+ #
+ # IF you have your own Chef Server, the default validation client name is
+ # chef-validator, unless you changed the configuration.
+ #
+ # chef.validation_client_name = "ORGNAME-validator"
+end
View
@@ -0,0 +1,65 @@
+node percona1 {
+ include percona::repository
+ include percona-testing::repository
+ include percona-testing::packages
+ include percona-testing::service
+ include myhosts
+ $extraipaddr="192.168.70.2"
+ network::if {
+ "eth3":
+ ip_add => $extraipaddr,
+ ip_netmask => "255.255.255.0",
+ ip_network => "192.168.70.0",
+ broadcast => "192.168.70.255",
+ proto => "static",
+ }
+
+ Class['percona::repository'] -> Class['percona-testing::repository'] -> Class['percona-testing::packages'] -> Class['percona-testing::config'] -> Class['percona-testing::service']
+
+ class {'percona-testing::config': extraipaddr => $extraipaddr}
+}
+
+node percona2 {
+ include percona::repository
+ include percona-testing::repository
+ include percona-testing::packages
+ include percona-testing::service
+ include myhosts
+ #include testdb::employee
+
+ $extraipaddr="192.168.70.3"
+ network::if {
+ "eth3":
+ ip_add => $extraipaddr,
+ ip_netmask => "255.255.255.0",
+ ip_network => "192.168.70.0",
+ broadcast => "192.168.70.255",
+ proto => "static",
+ }
+
+ Class['percona::repository'] -> Class['percona-testing::repository'] -> Class['percona-testing::packages'] -> Class['percona-testing::config'] -> Class['percona-testing::service']
+
+ class {'percona-testing::config': extraipaddr => $extraipaddr}
+}
+
+node percona3 {
+ include percona::repository
+ include percona-testing::repository
+ include percona-testing::packages
+ include percona-testing::service
+ include myhosts
+
+ $extraipaddr="192.168.70.4"
+ network::if {
+ "eth3":
+ ip_add => $extraipaddr,
+ ip_netmask => "255.255.255.0",
+ ip_network => "192.168.70.0",
+ broadcast => "192.168.70.255",
+ proto => "static",
+ }
+
+ Class['percona::repository'] -> Class['percona-testing::repository'] -> Class['percona-testing::packages'] -> Class['percona-testing::config'] -> Class['percona-testing::service']
+
+ class {'percona-testing::config': extraipaddr => $extraipaddr}
+}
@@ -0,0 +1,13 @@
+class myhosts {
+ host {
+ "percona1":
+ ensure => "present",
+ ip => "192.168.70.2";
+ "percona2":
+ ensure => "present",
+ ip => "192.168.70.3";
+ "percona3":
+ ensure => "present",
+ ip => "192.168.70.4";
+ }
+}
Oops, something went wrong.

0 comments on commit 34673c2

Please sign in to comment.