হোস্টের এসএসএইচ কী ব্যবহার করে, ভ্যাগ্রান্ট ভিএম এর মধ্যে ক্লোন প্রাইভেট রেপোগুলি কীভাবে পাবেন?


11

আমি পাপলেটল্যাবগুলি vcsrepoপাবলিক গিট রেপো ক্লোন করতে ব্যবহার করতে সক্ষম , তবে আমি হোস্টের এসএসএইচ কীগুলি ব্যবহার করে প্রাইভেট রেপো ক্লোন করতে সক্ষম হতে চাই।

এটি সম্পাদন করার জন্য Vagrantfileএবং / বা কনফিগারেশনটি দেখতে কেমন হবে manifests/default.pp?

উত্তর:


10

আমি পুতুল অংশটি সাহায্য করতে পারি না তবে আপনি এসএসএইচ এজেন্টকে সেট করে ফরোয়ার্ড করতে পারেন:

Vagrant.configure("2") do |config|
  config.ssh.forward_agent = true
  # ...
end

এইভাবে এসএসএইচ সংযোগগুলি (গিট দ্বারাও তৈরি করুন) হোস্ট থেকে আপনার ব্যক্তিগত কীগুলি ব্যবহার করার চেষ্টা করুন।


একটি ত্রুটি রয়েছে যার কারণে এটি বেশিরভাগ ক্ষেত্রে উইন্ডোজটিতে কাজ না করে।
চেজ স্যান্ডম্যান

@ চেজস্যান্ডম্যান আপনি কি ত্রুটি সম্পর্কে আরও তথ্য দিতে পারেন? গিথুব ইস্যুতে আপনার কি কোনও লিঙ্ক আছে? আমি এটি খুঁজে পেয়েছি তবে আমি মনে করি এটি এক নয় কারণ এটি ভার্চুয়ালবক্স 5 সম্পর্কিত বলে মনে হচ্ছে: github.com/mitchellh/vagrant/issues/6225
মাস্তাজি

5

আমার মেশিনে কাজ করে!

Vagrantfile:

VAGRANTFILE_API_VERSION = '2'

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = 'precise64'
  config.vm.box_url = 'http://files.vagrantup.com/precise64.box'

  #
  # Use host authenticaton for git and maven.
  #
  # Ensure host private key is registered with host SSH agent:
  #
  # ssh-add -L
  # ssh-add ~/.ssh/id_rsa
  # ssh-add -L
  #

  config.ssh.private_key_path = ['~/.vagrant.d/insecure_private_key', '~/.ssh/id_rsa']
  config.ssh.forward_agent = true

  config.vm.synced_folder "~/.m2", "/home/vagrant/.m2"

  config.vm.provision :shell, path: 'upgrade-puppet.sh'

  # Install puppet modules
  config.vm.provision :shell, path: 'bootstrap.rb', args: %w(
    puppetlabs-stdlib
    puppetlabs/apt
    puppetlabs/vcsrepo
  )

  config.vm.provision :puppet do |puppet|
    puppet.options = ENV['PUPPET_OPTIONS']
  end
end

upgrade-puppet.sh:

#!/bin/bash

apt-get install --yes lsb-release > /dev/null
DISTRIB_CODENAME=$(lsb_release --codename --short)
DEB="puppetlabs-release-${DISTRIB_CODENAME}.deb"
DEB_PROVIDES="/etc/apt/sources.list.d/puppetlabs.list" # Assume that this file's existence means we have the Puppet Labs repo added

if [ ! -e $DEB_PROVIDES ]
then
    # Print statement useful for debugging, but automated runs of this will interpret any output as an error
    # print "Could not find $DEB_PROVIDES - fetching and installing $DEB"
    wget -q http://apt.puppetlabs.com/$DEB
    sudo dpkg -i $DEB
fi
sudo apt-get update > /dev/null
sudo apt-get install --yes puppet > /dev/null

mkdir -p /etc/puppet
touch /etc/puppet/hiera.yaml

bootstrap.sh:

#!/usr/bin/env ruby

modules_dir = '/etc/puppet/modules'

puts `mkdir -p #{modules_dir}` unless File::exists? modules_dir

mods = ARGV

installed = `puppet module list`.split "\n"

mods.each do |mod|
  puts `puppet module install #{mod}` unless installed.any? { |i| i.include?(mod.sub('/','-')) }
end

টেপা / default.pp:

exec { 'ssh know github':
  command => 'ssh -Tv git@github.com -o StrictHostKeyChecking=no; echo Success',
  path    => '/bin:/usr/bin',
  user    => 'vagrant'
}

vcsrepo { '/home/vagrant/a-private-repo':
  ensure   => latest,
  provider => git,
  source   => 'git@github.com:mcandre/a-private-repo.git',
  user     => 'vagrant',
  owner    => 'vagrant',
  group    => 'vagrant',
  require  => Exec['ssh know github']
}

bootstrap.shbootstrap.rbএটি কাজ করার জন্য হতে হবে ।
Monkpit

2

আমি জানি আপনি পুতুল ব্যবহার করছেন তবে আমি এটি পেয়েছি এবং এই ব্যাশ স্ক্রিপ্টটি ব্যবহার করে চালাচ্ছি ( provisioners/shell/application.setup.sh):

#!/bin/bash

local_user=vagrant

if [ ! -n "$(grep "^bitbucket.org " /home/$local_user/.ssh/known_hosts)" ]; then 
    ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts 2>/dev/null;
fi

if [[ ! -d "/home/$local_user/app" ]]; then
    git clone git@bitbucket.org:czerasz/some-app.git /home/$local_user/app

    chown -R $local_user:$local_user /home/$local_user/app

    su - $local_user -c "source /usr/local/bin/virtualenvwrapper.sh && mkvirtualenv some-env && workon some-env && pip install -r /home/$local_user/app/requirements.txt"
fi

যে কেউ এটিকে সহজেই পুতুল ম্যানিফেস্টে রূপান্তর করতে পারে ...

একসাথে এই সঙ্গে Vagrantfile

config.vm.define "web1", primary: true do |web1_config|
    web1_config.ssh.forward_agent = true

    # Create a private network, which allows host-only access to the machine
    web1_config.vm.network "private_network", ip: "192.168.11.10"
    web1_config.vm.hostname = "web1.#{domain}"

    web1_config.vm.provision "shell", path: "provisioners/shell/python.setup.sh"
    web1_config.vm.provision "shell", path: "provisioners/shell/application.setup.sh"
end

আমার জন্য মূল বক্তব্যটি ছিল যখন আমি মৃত্যুদণ্ড কার্যকর করি:

su - $local_user -c "ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts 2>/dev/null;"
su - $local_user -c "git clone git@bitbucket.org:czerasz/some-app.git /home/$local_user/app"

এটি কার্যকর হয়নি। যেন কী ব্যবহার করে কীগুলি পাস করা হয়নি su। সুতরাং আমি রেপোটিকে রুট হিসাবে ক্লোন করেছি এবং তারপরে মালিকানা পরিবর্তন করেছি।

এই পোস্টটি খুব সহায়ক ছিল।


সাথি ..... আমি আপনার নিজের অবধি এই চারপাশে মোটামুটি অস্বাস্থ্যকর পোস্টগুলির একগুচ্ছ পেয়েছি। চিয়ার্স !!!
এরিক হোডনস্কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.