একাধিক-মেশিন যান্ত্রিক পরিবেশে ছাঁটাই করতে অক্ষম


9

আমি একটি তিনটি নোড মাল্টি-মেশিনের যান্ত্রিক পরিবেশ তৈরি করেছি এবং আমি এক যোনি ভিএম থেকে অন্য যোজনার সমস্যা ছড়িয়ে দিচ্ছি।

এখানে ভ্যাগ্রান্টফাইল:

Vagrant.configure("2") do |config| 
  config.vm.box = "centos/7"

  config.vm.define "master" do |master|
    master.vm.hostname = "master.local" 
    master.vm.network "private_network", type: "dhcp"
  end 

  config.vm.define "node1" do |node1|
     node1.vm.hostname = "node1.local" 
     node1.vm.network "private_network", type: "dhcp" 
  end 

  config.vm.define "node2" do |node2|
    node2.vm.hostname = "node2.local" 
    node2.vm.network "private_network", type: "dhcp" 
  end  
end 

হোস্ট ফাইল (প্রতিটি নোডের সমান):

$ cat /etc/hosts
172.28.128.3    master.local    master
172.28.128.4    node1.local     node1
172.28.128.5    node2.local     node2

আমি যে কোনও মেশিন থেকে অন্য যন্ত্রে সারাদিন পিছনে পিছনে পিছনে পিঙ্গ করতে পারি তবে আমি একটি ভিজেন্ট ভিএম থেকে অন্য সিস্টেমে আঘাত করতে পারি না। সাধারণ ত্রুটি বার্তাটি (নোড 1 থেকে মাস্টার পর্যন্ত):

[vagrant@node1.local] $ ssh vagrant@172.28.128.3
Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 

এসএসএইচ চলছে এবং বন্দরটি উন্মুক্ত।

ফায়ারওয়াল চলছে না।

আমি নিশ্চিত যে এটির জন্য এসএসএস কীগুলি করা উচিত। আমি সহজেই স্বীকার করি আমি কোনও বিশেষজ্ঞ নই।
লোকেরা এখানে কি ভুল করছি?


আপডেট করা হয়েছে। হ্যাঁ, একটি ভিমিরিয়ান্স পরিবেশে একটি ভিএম থেকে অন্য ভিএম পর্যন্ত। এটি কোন ভিএম থেকে অন্য ভিএম এর কিছু নয়, কিছু সঠিক নয়।
এইচবাচ

আপনার মেশিনের মধ্যে ভ্যাগ্র্যান্টের ব্যক্তিগত কী প্রয়োজন, এটি ভ্যাগ্রান্ট হোস্টে কোথায় রয়েছে তা মনে করতে পারে না তবে কেবল কী ভিত্তিক অ্যাক্সেসের অনুমতি দেওয়ার জন্য ভ্যাংগ্র্যান্ট ব্যবহারকারী কনফিগার করা হয়েছে। (অবশ্যই ডিফল্ট কী ব্যবহারের পরীক্ষার বাইরে সুপারিশ করা হয়নি)
তেনসিবাই

@ টেনসিবাই ssh vagrant@hostও-তে কীগুলি ছাড়াই লগইন করতে এবং vagrantপাসওয়ার্ড হিসাবে ব্যবহার করতে পারে।
030

ip aপ্রশ্নটিতে সমস্ত বাক্সের আউটপুট যুক্ত করুন এবং বাক্সগুলি নিচে থাকলে আইপি ঠিকানাগুলি (172.28.128.3-5) পাওয়া যায় কিনা তা পরীক্ষা করে দেখুন।
030

1
প্রশ্নের 0 বার্তা অনুসারে @ 030, উবুন্টুগুলির মত বিপরীতে সেন্টো বাক্সগুলি কোনও কী প্রমাণীকরণের অনুমতি দেয় না, কোনও
ভিজ্যর

উত্তর:


3

ভ্যাগ্র্যান্ট ফাইল অনুসরণ করে এই সমস্যার সমাধান করে।

Https://github.com/malyabee/IaaC/tree/master/ansible_lab- এ এই যোদ্ধা ফাইল সহ আপনি সমস্ত সমর্থনকারী কী ফাইলগুলি পেতে পারেন

$commonscript = <<-SCRIPT
sudo yum update -y
sudo yum install python2 epel-release -y
sudo yum install -y ansible
sudo echo "192.168.22.10    ansiblecontroller.example.com ansiblecontroller" >> /etc/hosts
sudo echo "192.168.22.11   node01.example.com   node01" >> /etc/hosts
sudo echo "192.168.22.12   node02.example.com      node02" >> /etc/hosts
SCRIPT

$nodescript = <<-SCRIPT
cat /vagrant/ansible_lab.pub >> /home/vagrant/.ssh/authorized_keys
SCRIPT

$ansiblescript = <<-SCRIPT
sudo yum install ansible -y
sudo cp -r /vagrant/ansible_lab /home/vagrant/.ssh/id_rsa
sudo chmod 400  /home/vagrant/.ssh/id_rsa
sudo chown vagrant:vagrant /home/vagrant/.ssh/id_rsa
SCRIPT

Vagrant.configure("2") do |config|
  config.vm.provision "shell", inline: "echo Hello"

  config.vm.define "ansiblecontroller" do |ansiblecontroller|
    ansiblecontroller.vm.box = "centos/7"
    ansiblecontroller.vm.provider "virtualbox" do |v|
          v.memory = 512
          v.cpus = 1
       end
    ansiblecontroller.vm.network "private_network", ip: "192.168.22.10", virtualbox__intnet: "mynetwork01"
    ansiblecontroller.vm.hostname = "ansiblecontroller.example.com"
    # Installing required packages for ansible controller node
    ansiblecontroller.vm.provision "shell", inline: $commonscript
    ansiblecontroller.vm.provision "shell", inline: $ansiblescript
  end

  config.vm.define "node01" do |node01|
    node01.vm.box = "centos/7"
    node01.vm.provider "virtualbox" do |v|
          v.memory = 512
          v.cpus = 1
       end
    node01.vm.network "private_network", ip: "192.168.22.11", virtualbox__intnet: "mynetwork01"
    node01.vm.hostname = "node01.example.com"
    # Installing required packages for  node01
    node01.vm.provision "shell", inline: $commonscript
    node01.vm.provision "shell", inline: $nodescript
  end
  config.vm.define "node02" do |node02|
    node02.vm.box = "centos/7"
    node02.vm.provider "virtualbox" do |v|
          v.memory = 512
          v.cpus = 1
       end
    node02.vm.network "private_network", ip: "192.168.22.12", virtualbox__intnet: "mynetwork01"
    node02.vm.hostname = "node02.example.com"
    # Installing required packages for  node01
    node02.vm.provision "shell", inline: $commonscript
    node02.vm.provision "shell", inline: $nodescript
  end
end

এটি একটি সম্পূর্ণ কার্যকরী উত্তর, ধন্যবাদ!
মোজ্তেমুর


2

দস্তাবেজ অনুসারে একজনের ব্যবহার করা উচিত:

vagrant ssh [name|id]

যদি একটি একক নোড থাকে তবে ব্যবহার করুন vagrant sshএবং মাল্টি-নোডের ক্ষেত্রে ভিএম এর নাম বা আইডি সংজ্ঞায়িত করুন, যেমনvagrant ssh box1

যদি কেউ বাক্সগুলির মধ্যে এসশ করতে চান তবে একটি এসএসএস কী তৈরি করতে পারে এবং প্রতিটি বাক্সে ব্যক্তিগত কী সরবরাহ করতে পারে এবং অনুমোদিত_কিগুলি ফাইলে পাবলিক কী যুক্ত করতে পারে।

https://www.vagrantup.com/docs/provisioning/file.html

Vagrant.configure("2") do |config|
  # ... other configuration

  config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end

আপনি vagrant ssh nameএকটি বাক্সের মধ্যে কীভাবে ব্যবহার করবেন ? প্রশ্নটি নোড 1.লোকাল থেকে মাস্টার.লোকাল যারা উভয় যন্ত্রে যোদ্ধা দ্বারা স্পিন আপ দ্বারা ssh দ্বারা সংযোগ সম্পর্কে।
তেনসিবাই

যা ইতিমধ্যে নীচে আপনার মোছা উত্তরের অধীনে যা বলা হয়েছিল ...
তেনসিবাই

আমি উত্তরটি আপডেট করব
030

0

এই লিঙ্কটি চেষ্টা করুন । আপনাকে নিম্নলিখিতগুলির মধ্যে একটি কার্যকর করতে হবে:

  • ssh -i <pathto/private_key> <vagrant>@<ip>
  • ssh -o PreferredAuthentications=password user@server-ip (যদি আপনি পাসওয়ার্ড ভিত্তিক প্রমাণীকরণ অক্ষম না করেন)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.