Доступ к Vagrant VM (Vitualbox работает под управлением Centos / 7) изнутри кластера - PullRequest
0 голосов
/ 28 декабря 2018

В настоящее время я пытаюсь войти в ansible, и для этого варианта использования я настроил кластер из 3 виртуальных машин, используя VirtualBox и Vagrant.Теперь моя VM-Setup выглядит так:

Vagrantfile

$inline_m1 = <<SCRIPT
yum -y update

yum install -y git
yum install -y ansible

SCRIPT

$inline_n1_n2 = <<SCRIPT
yum -y update

yum install -y git

SCRIPT

Vagrant.configure(2) do |config|
 config.vm.define "master1" do |conf|
    # conf.vm.box = "peru/my_centos-7-x86_64"
    # conf.vm.box_version = "20181211.01"
    conf.vm.box = "centos/7"

    conf.vm.hostname = 'master1.vg'
    conf.vm.network "private_network", ip: "192.168.255.100"
    conf.vm.provider "virtualbox" do |v|
        v.memory = 6144
        v.cpus = 2
    end
    conf.vm.provision "shell", inline: $inline_m1
    conf.vm.provision "file", source: "./etc.hosts", destination: "~/etc/hosts"
    conf.vm.provision "file", source: "./master1/etc.ansible.hosts", destination: "~/etc/ansible.hosts"
 end

 config.vm.define "node1" do |conf|
    conf.vm.box = "centos/7"
    conf.vm.hostname = 'node1.vg'
    conf.vm.network "private_network", ip: "192.168.255.101"
    conf.vm.provision "file", source: "./etc.hosts", destination: "~/etc/hosts"
    conf.vm.provision "shell", inline: $inline_n1_n2
 end

 config.vm.define "node2" do |conf|
    conf.vm.box = "centos/7"
    conf.vm.hostname = 'node2.vg'
    conf.vm.network "private_network", ip: "192.168.255.102"
    conf.vm.provision "file", source: "./etc.hosts", destination: "~/etc/hosts"
    conf.vm.provision "shell", inline: $inline_n1_n2

 end
end

, поэтому это 1 мастер и 2 узла.Предполагается, что мастер установил ansible и имеет доступ к узлам через ssh.Так что все машины работают и работают, и я могу подключиться к своему мастеру, используя

vagrant ssh master1

У меня также есть мои модифицированные etc / hosts, чтобы я мог связаться с master1.vg, node1.vg и т. Д.

Но есть одна проблема.Я должен подключиться через SSH к узлам внутри мастера.но

ssh node1.vg

не будет работать, так как в разрешении отказано после запроса пароля.согласно документации, пароль по умолчанию должен быть "vagrant", но здесь это не так.(Я предполагаю, что метод доступа уже установлен на ssh с ключом).Я довольно долго гуглил, так как думал, что это будет общий вопрос, но не нашел удовлетворительных ответов.Есть ли у вас какие-либо идеи, как установить соединение через ssh из master1 vm с одним из узлов vms?

Я также загрузил конфигурацию в репозиторий (https://github.com/relief-melone/vagrant-ansibletestingsetup)

1 Ответ

0 голосов
/ 31 декабря 2018

ОК, я решил это сейчас.Теперь Vagrant сгенерирует ваши личные ключи, которые вам понадобятся, чтобы получить этот ключ в вашей основной виртуальной машине с правильными разрешениями.Вам также нужно будет правильно настроить свою сеть.Итак, давайте сначала займемся точкой сети.

Необходимо будет настроить ваш / etc / hosts.В моей настройке это будет выглядеть так

/ etc / hosts

192.168.255.100 master1.me.vg
192.168.255.101 node1.me.vg
192.168.255.102 node2.me.vg

Ваши личные ключи будут храниться в ./.vagrant/machines/nodeX/virtualbox/ private_key.Вам понадобятся все узлы, к которым вы хотите получить доступ от вашего мастера, поэтому у нас останется следующий

Vagrantfile

Vagrant.configure(2) do |config|

   config.vm.define "node1" do |conf|
      conf.vm.box = "centos/7"
      conf.vm.hostname = 'node1.me.vg'
      conf.vm.network "private_network", ip: "192.168.255.101"

      conf.vm.provision "file", source: "./etc.hosts", destination: "~/etc.hosts"

      conf.vm.provision "shell", path: "./node/shell.sh"

   end

   config.vm.define "node2" do |conf|
      conf.vm.box = "centos/7"
      conf.vm.hostname = 'node2.me.vg'
      conf.vm.network "private_network", ip: "192.168.255.102"

      conf.vm.provision "file", source: "./etc.hosts", destination: "~/etc.hosts"

      conf.vm.provision "shell", path: "./node/shell.sh"

   end
   config.vm.define "master1" do |conf|
      conf.vm.box = "centos/7"

      conf.vm.hostname = 'master1.me.vg'
      conf.vm.network "private_network", ip: "192.168.255.100"

      conf.vm.provider "virtualbox" do |v|
          v.memory = 6144
          v.cpus = 2
      end
      conf.vm.provision "file", source: "./etc.hosts", destination: "~/etc.hosts"
      conf.vm.provision "file", source: "./master1/etc.ansible.hosts", destination: "~/etc.ansible.hosts"
      conf.vm.provision "file", source: "./.vagrant/machines/node1/virtualbox/private_key", destination: "~/keys/node1"
      conf.vm.provision "file", source: "./.vagrant/machines/node2/virtualbox/private_key", destination: "~/keys/node2"

      conf.vm.provision "shell", path: "./master1/shell.sh"
   end

end

Наконец вам нужно будет установитьразрешения закрытых ключей как слишком открытого набора разрешений будут отклонены по ssh позже.Мои файлы оболочки выглядят так:

. / Master1 / shell.sh

yum 

-y update

yum install -y git
yum install -y ansible

cp /home/vagrant/etc.hosts /etc/hosts
cp /home/vagrant/etc.ansible.hosts /etc/ansible/hosts

chmod 600 /home/vagrant/keys/*

. / Node / shell.sh

yum -y update

yum install -y git

cp /home/vagrant/etc.hosts /etc/hosts

После всего, что сделано

vagrant up

должно работать без сбоев, и вы можете перейти к своему главному виртуальному компьютеру с помощью

vagrant ssh master1

в этом мастере теперь вы можете подключиться, например, к машине node2, используя

ssh -i ~ / keys / node2

Поскольку это набор с большим количеством файлов, я также поместил его в репозиторий, который можно найти здесь

https://github.com/relief-melone/vagrant-ansibletestingsetup/tree/working-no-comments

...