नमक स्तंभों के माध्यम से मास्टर से मिनियन तक ssh कुंजी तैनात करें


11

मेरे पास दो ssh कीज़ हैं जिन्हें मैं अपने एक मिनियन में तैनात करने की कोशिश कर रहा हूँ। लेकिन मैं इसे लागू करने के लिए प्राप्त करने के लिए प्रतीत नहीं कर सकते। यह त्रुटिपूर्ण है। यहाँ init.slsस्तंभों में है:

/xxx/yyy/zzz/id_rsa:
  file.managed:
    - source: salt://private/id_rsa

/xxx/yyy/zz/id_rsa.pub:
  file.managed:
    - source: salt://private/id_rsa.pub

यहाँ मेरा init.slsराज्य है:

ssh:
  file.managed:
    - name: {{ pillar['private'] }}

मैं कुछ गलत कर रहा हूं (जाहिर है), लेकिन मुझे यकीन नहीं है कि क्या। कोई सुझाव?


मैं मदद करना चाहता हूं, लेकिन मैं दी गई जानकारी के साथ जवाब नहीं दे सकता। इसका एक कारण यम स्वरूपण है। अपना प्रश्न संपादित करें लेकिन प्रत्येक कोडब्लॉक के ऊपर और नीचे एक खाली लिंक छोड़ दें, फिर कम से कम 4 स्थानों द्वारा कोडब्लॉक में प्रत्येक पंक्ति को इंडेंट करें। दूसरा, क्या आप पहले से ही समीकरण में खंभे के बिना ऐसा करने में सफल रहे? मैंने कभी नहीं देखा स्तंभ डेटा सेट वे जिस तरह से आपके पास है।
डैन गर्थवाइट

क्या आपको अपने प्रश्न का उत्तर मिला?
दान गर्थवेट

मैं हाँ, मेरा मानना है कि किया था
secure212

जवाबों:


13

नमक स्तंभ प्रणाली में एक init.sls फ़ाइल नहीं है। दोनों राज्यों और स्तंभों में एक top.sls फ़ाइल है। जो राज्य उपनिर्देशिकाएँ हैं उनमें एक init.sls फ़ाइल हो सकती है।

चरण 1: अपने उपयोगकर्ताओं को /srv/pillar/users.sls में परिभाषित करें

users:

  - name: fred
    fullname: Fred Flintstone
    email: fflintstone@slaterockandgravel.com
    uid: 4001
    gid: 4001
    shell: /bin/bash
    groups:
      - bowling
    shadow: $6$Sasdf/Ss$asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfsadfasdfsadfsadfsdf
    authkey: ssh-dss AAAAasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafa = fflinstone@slaterockandgravel.com
    sshpub: ssh-dss AAAAasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafa = fflinstone@slaterockandgravel.com

  - name: barney
    fullname: Barney Rubble
    email: brubbel@slaterockandgravel.com
    uid: 4002
    gid: 4002
    shell: /bin/bash
    groups:
      - bowling
    shadow: $6$Suiop/Ss$uiopuiopuiopuiopuiopuiopuiopuiopuiopuiopuiopsadfuiopsadfsadfsdf
    authkey: ssh-dss AAAAuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafa = fflinstone@slaterockandgravel.com
    sshpub: ssh-dss AAAAuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafa = fflinstone@slaterockandgravel.com

चरण 2: नया स्तंभ /srv/pillar/top.sls में जोड़ें

base:
  'testminion':
    - users

चरण 3: /srv/salt/user/init.sls में राज्यों में मैप करने के लिए jinja का उपयोग करें

{% for user in pillar['users'] %}
user_{{user.name}}:
  group.present:
    - name: {{user.name}}
    - gid: {{user.gid}}

  user.present:
    - name: {{user.name}}
    - fullname: {{user.fullname}}
    - password: {{user.shadow}}
    - shell: {{user.shell}}
    - uid: {{user.uid}}
    - gid: {{user.gid}}
    {% if user.groups %}
    - optional_groups:
      {% for group in user.groups %}
      - {{group}}
      {% endfor %}
    {% endif %}
    - require:
      - group: user_{{user.name}}

  file.directory:
    - name: /home/{{user.name}}
    - user: {{user.name}}
    - group: {{user.name}}
    - mode: 0751
    - makedirs: True

user_{{user.name}}_forward:
  file.append:
    - name: /home/{{user.name}}/.forward
    - text: {{user.email}}

user_{{user.name}}_sshdir:
  file.directory:
    - name: /home/{{user.name}}/.ssh
    - user: {{user.name}}
    - group: {{user.name}}
    - mode: 0700

{% if 'authkey' in user %}
user_{{user.name}}_authkeys:
  ssh_auth.present:
    - user: {{user.name}}
    - name: {{user.authkey}}
{% endif %}

{% if 'sshpriv' in user %}
user_{{user.name}}_sshpriv:
  file.managed:
    - name: /home/{{user.name}}/.ssh/id_rsa
    - user: {{user.name}}
    - group: {{user.name}}
    - mode: 0600
    - contents_pillar: {{user.sshpriv}}
{% endif %}

{% if 'sshpub' in user %}
user_{{user.name}}_sshpub:
  file.managed:
    - name: /home/{{user.name}}/.ssh/id_rsa.pub
    - user: {{user.name}}
    - group: {{user.name}}
    - mode: 0600
    - contents_pillar: {{user.sshpub}}
{% endif %}
{% endfor %} # user in users
# vim: ft=yaml tabstop=2 sts=2 sw=2 et ai si

नए स्तंभों के साथ मिनियन सिंक करना न भूलें!

salt targetminions saltutil.refresh_pillar

मैं नमक 2014.7.1 पर काम करने के लिए इस उदाहरण को प्राप्त करने में असमर्थ था; यह एक त्रुटि देता प्रतीत होता है: "जिंजा चर 'str ऑब्जेक्ट' में कोई विशेषता 'नाम' नहीं है"। मैंने उपयोगकर्ता / init.sls में ऐसा कुछ करने का सहारा लिया है: {% for user, data in salt['pillar.get']('users', {}).iteritems() %}यह एसएलएस फ़ाइल को महत्वपूर्ण रूप से बदल देगा; अगर मैं एक काम करने के उदाहरण के साथ आता हूं तो मैं इसे पोस्ट करूंगा।
माइक एस

फॉलोअप: यदि आप, प्रिय यात्री, इस कोड का उपयोग करना चाहते हैं, तो मेरा मानना ​​है कि इसमें कई त्रुटियां हैं। उदाहरण के लिए, "फ्रेड" और "बार्नी" के बाद कॉलोनों में नमक बर्फ़ का कारण होगा, जैसा कि "अंत" और "अंत के लिए" होगा (उन्हें वहां रिक्त स्थान नहीं होना चाहिए)। फिर से मुझे संदेह है कि निर्माण के लिए प्रारंभिक दोषपूर्ण है लेकिन मुझे इस समय नमक के बारे में ज्यादा जानकारी नहीं है इसलिए मुझे यकीन नहीं हो रहा है। कैवेट प्रोग्रामर। अपने लिए, मैं पुनरावृत्तियों () अवधारणा के साथ काम करने जा रहा हूँ।
माइक एस।

क्षमा करें, Dan, मुझे अभी भी प्रमाण मिलता है: डेटा संकलन में विफल रहा: ---------- एसएलएस का आधार प्रदान करना: उपयोगकर्ता 'विफल: जिंजा चर' str ऑब्जेक्ट 'में कोई विशेषता' नाम 'नहीं है जब मैं चलाता हूं: नमक testminion state.highstate test = True .... मैंने आपके पाठ की शब्दशः कॉपी की है, ऊपर। एकमात्र जोड़ मेरी /srv/salt/top.sls फ़ाइल थी जो एक साधारण 3-लाइनर (आधार :, '*' :, और -users) है।
माइक एस

जब तक आप इसे पहले नहीं कर लेते, मैं एक डॉकटर कंटेनर को स्पिन करूँगा और इसे सॉर्ट करूँगा।
दान गर्थवेट

"डेटा संकलन करने में विफल" के कारण /srv/pillar/top.sls में '.sls' फ़ाइल नाम प्रत्यय के कारण हुआ। मैं भी समस्याओं में भाग गया। कृपया ध्यान दें, मैं इसे फिर से लिखा है। मुझे अभी के लिए user.sshpriv को छोड़ना पड़ा, बस देर हो रही है और मैं पाठ्य सामग्री में --- से परेशान हो रहा हूँ।
दान गर्थवेट

1

यह शायद ध्यान दिया जाना चाहिए कि मूल प्रश्न के संबंध में, एक और सरल समाधान है यदि source: salt://...प्रारूप के साथ काम नहीं करता है file.managed- जैसा कि salt-sshबग के कारण अभी भी हुआ है https://github.com/saltstack/salt/issues/38458 चूंकि तय किया गया है - और contents:इसे फ़ाइल ट्री बाहरी स्तंभ के साथ स्विच करना है , जो कि मास्टर पर फ़ाइलों द्वारा भी समर्थित है।

यह आजकल https://docs.saltstack.com/en/latest/ref/pillar/all/salt.pillar.file_tree.html#module-salt.pillar.file_reefile_tree ext_pillar पर प्रलेखित है। यह संस्करण 2015.5.0 के बाद से अस्तित्व में है, इसलिए यह मूल प्रश्न और उत्तर की तुलना में नया है, फिर भी यह एक समाधान है जो आज यथोचित उपलब्ध है।

दरअसल, यह अक्सर पूछे जाने वाले प्रश्न https://docs.saltstack.com/en/latest/faq.html#is-it-possible-to-deploy-a-file-to-a-specific-minion-without पर भी है -अन्य-minions-होने का उपयोग करने के लिए यह

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.