Browse Source

Vagrantfile for testing

Andrey Volkov 6 months ago
parent
commit
fe54727339
1 changed files with 111 additions and 0 deletions
  1. 111
    0
      Vagrantfile

+ 111
- 0
Vagrantfile View File

@@ -0,0 +1,111 @@
1
+# -*- mode: ruby -*-
2
+# vi: set ft=ruby :
3
+
4
+# All Vagrant configuration is done below. The "2" in Vagrant.configure
5
+# configures the configuration version (we support older styles for
6
+# backwards compatibility). Please don't change it unless you know what
7
+# you're doing.
8
+Vagrant.configure("2") do |config|
9
+  # The most common configuration options are documented and commented below.
10
+  # For a complete reference, please see the online documentation at
11
+  # https://docs.vagrantup.com.
12
+
13
+  # Every Vagrant development environment requires a box. You can search for
14
+  # boxes at https://vagrantcloud.com/search.
15
+  config.vm.box = "generic/ubuntu1604"
16
+
17
+  # Disable automatic box update checking. If you disable this, then
18
+  # boxes will only be checked for updates when the user runs
19
+  # `vagrant box outdated`. This is not recommended.
20
+  # config.vm.box_check_update = false
21
+
22
+  # Create a forwarded port mapping which allows access to a specific port
23
+  # within the machine from a port on the host machine. In the example below,
24
+  # accessing "localhost:8080" will access port 80 on the guest machine.
25
+  # NOTE: This will enable public access to the opened port
26
+  # config.vm.network "forwarded_port", guest: 80, host: 8080
27
+
28
+  # Create a forwarded port mapping which allows access to a specific port
29
+  # within the machine from a port on the host machine and only allow access
30
+  # via 127.0.0.1 to disable public access
31
+  # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
32
+
33
+  # Create a private network, which allows host-only access to the machine
34
+  # using a specific IP.
35
+  # config.vm.network "private_network", ip: "192.168.33.10"
36
+
37
+  # Create a public network, which generally matched to bridged network.
38
+  # Bridged networks make the machine appear as another physical device on
39
+  # your network.
40
+  # config.vm.network "public_network"
41
+
42
+  # Share an additional folder to the guest VM. The first argument is
43
+  # the path on the host to the actual folder. The second argument is
44
+  # the path on the guest to mount the folder. And the optional third
45
+  # argument is a set of non-required options.
46
+  # config.vm.synced_folder "../data", "/vagrant_data"
47
+
48
+  # Provider-specific configuration so you can fine-tune various
49
+  # backing providers for Vagrant. These expose provider-specific options.
50
+  # Example for VirtualBox:
51
+  #config.vm.provider "virtualbox" do |vb|
52
+  #  # Display the VirtualBox GUI when booting the machine
53
+  #  # vb.gui = true
54
+  #end
55
+  [:virtualbox, :parallels, :libvirt, :hyperv].each do |provider|
56
+    config.vm.provider provider do |vplh, override|
57
+      vplh.cpus = 1
58
+      vplh.memory = 2048
59
+    end
60
+  end
61
+  [:vmware_fusion, :vmware_workstation, :vmware_desktop].each do |provider|
62
+    config.vm.provider provider do |vmw, override|
63
+      vmw.vmx["memsize"] = "2048"
64
+      vmw.vmx["numvcpus"] = "1"
65
+    end
66
+  end
67
+
68
+  #
69
+  # View the documentation for the provider you are using for more
70
+  # information on available options.
71
+
72
+  # Enable provisioning with a shell script. Additional provisioners such as
73
+  # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
74
+  # documentation for more information about their specific syntax and use.
75
+  # config.vm.provision "shell", inline: <<-SHELL
76
+  #   apt-get update
77
+  #   apt-get install -y apache2
78
+  # SHELL
79
+  config.vm.define "aptly" do |node|
80
+    node.vm.hostname = "aptly"
81
+
82
+    node.vm.provision "file", source: ".", destination: "$HOME/docker-aptly"
83
+
84
+    node.vm.provision :shell, inline: <<-SHELL
85
+       echo htop > /home/vagrant/docker-aptly/assets/packages
86
+       echo telnetd >> /home/vagrant/docker-aptly/assets/packages
87
+       echo openbsd-inetd >> /home/vagrant/docker-aptly/assets/packages
88
+       echo inet-superserver >> /home/vagrant/docker-aptly/assets/packages
89
+       echo 'mysql-client (>= 3.6)' >> /home/vagrant/docker-aptly/assets/packages
90
+    SHELL
91
+
92
+    node.vm.provision "docker" do |d|
93
+      d.build_image "/home/vagrant/docker-aptly -t aptly:test"
94
+      d.run "aptly",
95
+            args: "-p '8080:80' -v '/home/vagrant/docker-aptly/assets/nginx:/opt/nginx'",
96
+            image: "aptly:test"
97
+    end
98
+
99
+    node.vm.provision :shell, inline: <<-SHELL
100
+      sleep 5
101
+      curl -s localhost:8080/aptly_repo_signing.key | apt-key add -
102
+      mv /etc/apt/sources.list /etc/apt/sources.list.backup
103
+      touch /etc/apt/sources.list
104
+      add-apt-repository 'deb http://localhost:8080 xenial main'
105
+      apt-get update
106
+      apt-cache policy htop
107
+      apt-get install -y htop mysql-client
108
+      apt-get install -y telnetd || echo "telnetd was not installed due to blacklist"
109
+    SHELL
110
+  end
111
+end

Loading…
Cancel
Save