পুতুল ব্যবহার করে এসএসএইচ কীগুলি সরানোর জন্য অনুমোদিত নয়


12

আমি পুতুল ব্যবহার করছি এসএসএইচ কীগুলি বিতরণ করার জন্য:

ssh_authorized_key { "alice@foo.com":
   ensure => present,
   key => 'xxxx',
   type => 'ssh-rsa',
   user => 'deploy',
}

Multiple / .ssh / अधिकृत_keys ফাইলটি একাধিক ক্লাসের কীগুলির মিশ্রণ সমাপ্ত করে, যা পছন্দসই ফলাফল। তবে, কোনও কী যদি ম্যানুয়ালি $ HOME / .ssh / ਅਧਿਕਾਰ্য_কিগুলিতে যুক্ত করা হয় তবে পুতুল এটিকে তার জায়গায় রেখে দেবে। ম্যানিফেস্টে স্পষ্টভাবে সংজ্ঞায়িত করা হয়নি এমন কী কী সর্বদা অপসারণের কোনও উপায় আছে?

আমার কাছে পুতুল সংস্করণ 2.7.1 আছে।


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

উত্তর:



13

ssh_authorized_keyসংস্থান ব্যবহার করার পরিবর্তে , আমি একটি authorized_keysসংস্থান সংজ্ঞা দেওয়ার সিদ্ধান্ত নিয়েছি , যা একক ব্যবহারকারীর জন্য সমস্ত এসএসএইচ কীগুলির একটি তালিকা গ্রহণ করে। সংজ্ঞায়িতটি দেখতে এরকম দেখাচ্ছে:

define authorized_keys ($sshkeys, $ensure = "present", $home = '') {
    # This line allows default homedir based on $title variable.
    # If $home is empty, the default is used.
    $homedir = $home ? {'' => "/home/${title}", default => $home}
    file {
        "${homedir}/.ssh":
            ensure  => "directory",
            owner   => $title,
            group   => $title,
            mode    => 700,
            require => User[$title];
        "${homedir}/.ssh/authorized_keys":
            ensure  => $ensure,
            owner   => $ensure ? {'present' => $title, default => undef },
            group   => $ensure ? {'present' => $title, default => undef },
            mode    => 600,
            require => File["${homedir}/.ssh"],
            content => template("authorized_keys.erb");
    }
}

$ssh_keysপ্যারামিটার সমস্ত প্রয়োজনীয় কীগুলি তালিকা হিসাবে নেয়। authorized_keys.erbটেমপ্লেট ভালো দেখায়:

# NOTICE: This file is autogenerated by Puppet and should not be modified
<% sshkeys.each do |key| -%>
<%= key %>
<% end -%>

ব্যবহার

user {'mikko':
    ...
}
authorized_keys {'mikko':
    sshkeys => [
        'ssh-rsa XXXXXXYYYYYYYYYZZZZZZZZZ mikko@domain.tld',
        'ssh-rsa XXXXXXZZZZZZZZZHHHHHHHHH mikko@other-host.tld',
    ],
}

শর্তসাপেক্ষে এসএসএইচ কী যুক্ত করা (উদাহরণস্বরূপ বিভিন্ন শ্রেণীর মধ্যে) পুতুলের +>অপারেটরকে ধন্যবাদ :

Authorized_keys <| title == 'mikko' |> {
    sshkeys +> 'ssh-rsa ASDFASDFASDFASDF mikko@somewhere-else.tld'
}

এই পদ্ধতির সাহায্যে, ব্যবহারকারীর কাছে কখনই কী থাকবে না যা পুতুলের কনফিগারেশনে স্পষ্টভাবে নির্দিষ্ট করা হয়নি। মূল স্ট্রিংটি ਅਧਿਕਾਰ্য_কিগুলিতে যেমন ব্যবহৃত হয় তেমনি বিকল্পগুলি এবং বিধিনিষেধ যুক্ত করা তুচ্ছ।

অন্যরা যদি এই পদ্ধতিটি সফলভাবে ব্যবহার করে থাকে তা শুনে আমি আনন্দিত হব!


3

আপনার রিসোর্স মেটাটাইপ ব্যবহার করে এটি করতে সক্ষম হওয়া উচিত । ই জি

resources { 'ssh_authorized_key': noop => true, purge => true, }

সেটিং noop => true,অপসারণটি ঘটতে বাধা দেয়। পরিবর্তে, পুতুল কি সরানো হবে তা রিপোর্ট করবে। এটি যদি আপনি চান তবে নুপের বিবৃতিটি সরিয়ে দিন ।

নিয়ন্ত্রণহীন সম্পদগুলিতে অপারেশন করার জন্য আদর্শ সিনট্যাক্সটি আলোচনা চলছে

সম্পাদনা: মন্তব্যে উল্লিখিত হিসাবে, এই উত্তরটি কার্যকর হয় না।


আমি যা খুঁজছি ঠিক তেমনই এই শব্দটি। আমি যখন এই লাইনটি যুক্ত করব, তখন পুতুল এই ত্রুটিটি উত্পাদন করে: puppet-agent[9895]: (/Stage[main]//Resources[ssh_authorized_key]) Failed to generate additional resources using 'generate': Attribute 'user' or 'target' is mandatory. আমি একজন ব্যবহারকারী যুক্ত করার চেষ্টা করেছি, এবং তারপরে এটি বলে Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter user । কোন ধারনা?
ডিলান ট্যাক

আমি নিশ্চিত নই. এটি সম্ভবত google.google.com/group/puppet-users
সায়ুরাস

1
আমি কেন এটি গ্রহণযোগ্য উত্তর হ'ল সত্যই অস্পষ্ট: পুতুল ল্যাবগুলি অনুসারে, এটি কাজ করে না এবং ফলাফল করে না: پروژې . পুপেটল্যাবস / বিবিসি / ১৯১17 । ওপি, এটি আপনার পক্ষে কাজ করেছিল?
বিল ওয়েইস

1
না, আমি এটি চেষ্টা করে দেখিনি, আমি কেবল এটি অন্যান্য সংস্থার (যেমন হোস্ট, নাগিওস প্রকারের) মতো আচরণ করার প্রত্যাশা করেছি। দেখে মনে হচ্ছে আপনি ঠিকই আছেন এবং এটি এখনও এসএসএস-এর কীগুলির জন্য কাজ করে না
বিসুইস

1

পুতুল ফোর্জে অ্যাপাচি লাইসেন্স, সংস্করণ ২.০ এর অধীনে একটি মডিউল প্রকাশিত হয়েছে যা এই ক্ষমতাটি সরবরাহ করে।

এটি যদিও টেমপ্লেটের পরিবর্তে পুতুলের কনকটের উপর নির্ভর করে।

https://github.com/nightfly19/puppet-ssh_keys/tree/master/manifests

প্যারামিটার হিসাবে কীগুলির অ্যারে পাস করার পরিবর্তে আপনি প্রতিটি কীগুলির জন্য পৃথক এন্ট্রি সংজ্ঞায়িত করেন।

মিক্কোর থেকে ভিন্ন পদ্ধতির, তবে একই নেট ফলাফল।


forge.puppetlabs.com/nightfly/ssh_keys হল পুতুল ফোরজি লিঙ্ক।
রডনি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.