master template

  • la configuración de las VM está en fichero separado

API_VERSION = '2'
VMS_FILE_PATH = 'vagrant/vms.yml'

hosts = YAML.load_file(VMS_FILE_PATH)

Vagrant.configure(API_VERSION) do |config|
  hosts.each do |host|
    config.vm.define host['name'] do |node|
      node.vm.box = host['box']
      node.vm.hostname = host['hostname']
      node.vm.network :private_network, ip: host['ip']

      host['sync']&.each { |sync| config.vm.synced_folder sync['host'], sync['guest'], type: sync['type'] }
      host['ports']&.each { |port| node.vm.network :forwarded_port, guest: port['guest'], host: port['host'] }

      if host['ansible_local']
        host['ansible_local']['playbooks']&.each { |pb|
          config.vm.provision :ansible_local do |ansible|
             ansible.limit = pb['limit']
             ansible.become = pb['become']
             ansible.playbook = pb['playbook']
             ansible.inventory_path = pb['inventory']
             ansible.version = host['ansible_local']['config']['version']
             ansible.install_mode = host['ansible_local']['config']['mode']
          end
        }
      end

      config.vm.provider :virtualbox do |v|
        v.linked_clone = true
        v.name = host['name']
        v.cpus = host['cpus']
        v.memory = host['memory']
      end
    end
  end
end

- name: openshift-master
  box: centos/7
  hostname: 10.0.0.10
  memory: 2048
  cpus: 2
  ip: 10.0.0.10
  ports:
    - host: 8443
      guest: 8443
  sync:
    - host: .
      guest: /vagrant
      type: nfs

- name: openshift-node1
  box: centos/7
  hostname: 10.0.0.11
  memory: 2048
  cpus: 2
  ip: 10.0.0.11
  ports:
    - host: 8081
      guest: 80
    - host: 8481
      guest: 443
  sync:
    - host: .
      guest: /vagrant
      type: nfs

- name: openshift-node2
  box: centos/7
  hostname: 10.0.0.12
  memory: 2048
  cpus: 2
  ip: 10.0.0.12
  ports:
    - host: 8082
      guest: 80
    - host: 8482
      guest: 443
  sync:
    - host: .
      guest: /vagrant
      type: nfs

- name: bastion
  box: centos/7
  memory: 512
  cpus: 1
  ip: 10.0.0.2
  sync:
    - host: .
      guest: /vagrant
      type: nfs
  ansible_local:
    config:
      mode: pip
      version: 2.4.1.0
    playbooks:
      - limit: "all"
        become: true
        playbook: ./ansible/prerequisites.yml
        inventory: ./ansible/inventory/hosts
      - limit: "all"
        become: true
        playbook: ./openshift-ansible/playbooks/byo/config.yml
        inventory: ./ansible/inventory/hosts

VAGRANTFILE_API_VERSION = '2'
DEFAULT_PROVIDER_MEMORY = '256'
DEFAULT_PROVIDER_CPUS = '2'
DEFAUTL_LINKED_CLONE = true

def do_ports(vm, host)
  if host.has_key?('ports')
    host['ports'].each do |port|
      vm.network :forwarded_port, guest: port['guest'], host: port['host']
    end 
  end 
end

def do_provision(vm,host)
  if host.has_key?('shell')
    vm.provision "shell",path: host['shell']
  end 
end

def do_syncfolder(vm,host)
  if host.has_key?('syncfolder')
    host['syncfolder'].each do |syncf|
      vm.synced_folder syncf['host'], syncf['guest']
    end 
  end 
end


def do_provider(vm,host)
  memory = DEFAULT_PROVIDER_MEMORY;
  cpus = DEFAULT_PROVIDER_CPUS;

  chars = { :memory => DEFAULT_PROVIDER_MEMORY, :cpus => DEFAULT_PROVIDER_CPUS, :linked_clone => DEFAULT_LINKED_CLONE }

  if host.has_key?('provider')
    host['provider'].each do |singlechar|
      #memory = host['memory'] ? host['memory'] : DEFAULT_PROVIDER_MEMORY;
      #memory = singlechar['memory'] ? singlechar['memory'] : DEFAULT_PROVIDER_MEMORY;
      #cpus = singlechar['cpus'] ? singlechar['cpus'] : DEFAULT_PROVIDER_CPUS;
      chars[:memory] = singlechar['memory'] ? singlechar['memory'] : DEFAULT_PROVIDER_MEMORY;
      chars[:cpus] = singlechar['cpus'] ? singlechar['cpus'] : DEFAULT_PROVIDER_CPUS;
    end # singlechar
  end

  vm.provider :virtualbox do |v|
    v.name = host['name']
    v.memory = chars[:memory]
    v.cpus = chars[:cpus]
    v.linked_clone = chars[:linked_clone]
  end

  # caracteristicas.each_with_index do |v,k|
  #   #puts "#{k}"
  #   vm.provider.k = v[k]
  # end

end


hosts = YAML.load_file('Vagranthosts.yml')

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  hosts.each do |host|
    config.vm.define host['name'] do |node|
      node.vm.box = host['box']
      node.vm.hostname = host['name']
      node.vm.network :private_network, ip: host['ip']

      do_ports(node.vm,host)
      do_provision(node.vm,host)
      do_syncfolder(node.vm,host)
      do_provider(node.vm,host)

    end # node
  end # host
end  # config

- name: c7-gitlab
  ip: 192.168.56.130
  box: centos/7
  shell: c7-gitlab.sh
  ports:
    - host: 8080
      guest: 80
  syncfolder:
    - host: './data'
      guest: '/vagrant'
  provider:
    - cpus: 2
      memory: 512

  • tech/vagrant/vagrantfile/master_template.txt
  • Darrera modificació: 16/11/2021 02:52
  • per mate