উত্তরযোগ্য জন্য sudo পাসওয়ার্ড উল্লেখ করুন


224

অ-ইন্টারেক্টিভ উপায়ে উত্তর দেওয়ার জন্য আমি কীভাবে একটি sudo পাসওয়ার্ড নির্দিষ্ট করব?

আমি এর মতো উত্তরযোগ্য প্লেবুক চালাচ্ছি:

$ ansible-playbook playbook.yml -i inventory.ini \
    --user=username --ask-sudo-pass

তবে আমি এটি এভাবে চালাতে চাই:

$ ansible-playbook playbook.yml -i inventory.ini \
    --user=username` **--sudo-pass=12345**

কোন উপায় আছে? আমি যতটা সম্ভব আমার প্রকল্প স্থাপনার স্বয়ংক্রিয় করতে চাই।


উত্তর:


169

আপনি কমান্ড লাইনের মাধ্যমে ভেরিয়েবল পাস করতে পারেন --extra-vars "name=value"। সুডোর পাসওয়ার্ড ভেরিয়েবল ansible_sudo_pass। সুতরাং আপনার আদেশটি দেখতে হবে:

ansible-playbook playbook.yml -i inventory.ini --user=username \
                              --extra-vars "ansible_sudo_pass=yourPassword"

আপডেট 2017 : উত্তর 2.2.1.0 এখন var ব্যবহার করে ansible_become_pass। হয় কাজ মনে হয়।


7
সুরক্ষা দৃষ্টিকোণ থেকে সেরা উত্তর, আপনি নিম্নলিখিতটি যুক্ত করুন: history -cyML কার্যকর করার পরে।
কিলটেক

12
@ কিলটেক: বা লাইনের শুরুতে একটি অতিরিক্ত স্থান যুক্ত করুন ( ব্যাশে ) যা * লাইনটি * লিখবে না.bash_history
সিসিপিজ্জা

44
কমান্ড লাইনে পাসওয়ার্ড পাস করার জন্য একটি ভাল অনুশীলন নয়। কমান্ড কার্যকর করার সময়, প্রক্রিয়া তালিকায় যে কেউ পাসওয়ার্ড দেখতে সক্ষম হবে ...
পাভেল চেরনিকভ ২

22
এখনও, শুধু এটি করবেন না। --ask-sudo-pass
জেসনজি

2
@ এসক্রুটারি এটি কিছু পরিস্থিতিতে একেবারে বৈধ: যেমন: ব্যবহারকারীর পাবলিক এসএস-কে কী ইনজেক্ট করতে একটি ডিফল্ট, বিশ্ব-পরিচিত, প্রাথমিক পাসওয়ার্ড থেকে পরিবর্তন করুন ... নতুন করে পুনরায় চিত্রযুক্ত সিস্টেমটির প্রাথমিক কনফিগারেশনটি ভাবেন।
সেরেডিগ

236

ডকগুলি প্লেইন্টেক্সটে সুডো পাসওয়ার্ড সেট করার বিরুদ্ধে, এবং চলমান অবস্থায় কমান্ড লাইনে ব্যবহার করার বিরুদ্ধে দৃ strongly ়ভাবে পরামর্শ দেয়--ask-sudo-passansible-playbook


২০১ Update আপডেট:

উত্তরযোগ্য 2.0 (হ'ল 100% নয়) অবহিত --ask-sudo-passহিসাবে চিহ্নিত হয়েছে। আপনার প্লেবুকগুলি জুড়ে ব্যবহারের পরিবর্তে ডক্স এখন --ask-become-passপরিবর্তে ব্যবহারের পরামর্শ দেয় ।sudobecome


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

9
দ্রষ্টব্য - এ্যাস্ক-সুডো-পাস-কে-এ অনুগ্রহ করা যেতে পারে, তবে যতদূর আমি দেখতে পাচ্ছি, বিভিন্ন পাসওয়ার্ড সহ একাধিক সার্ভারে চলছে কোনও প্লেবুক পরিচালনা করার উপায় নেই (এটি কেবল আপনাকে একবার জিজ্ঞাসা করে), তাই আমি পাসওয়ার্ডহীন মনে করি সুডো যাবার উপায়।
উইলিয়াম তারেল

1
কাজ বলে মনে হচ্ছে না। তবে পরবর্তী পরামর্শ ("কিছু-হোস্ট উত্তরযোগ্য_সুডো_পাস = 'ফুবার'") করে
নাদভকভ

--ask-sudo-Pass এর আগে অবহিত হয়েছিল, 1.9-এ
ক্রিস বেটি

উত্তরটি যদি আপনার কাছে থাকে তবে উত্স লিঙ্কের সাথে আপডেট করতে পছন্দ করব।
ডিফর

106

সম্ভবত এটি করার সর্বোত্তম উপায় - এই ধারণাটি গ্রহণ করে যে আপনি স্কটডড দ্বারা সরবরাহিত NOPASSWD সমাধানটি ব্যবহার করতে পারবেন না তা হ'ল মিনেসিয়া ভুটকোচির সমাধানটি উত্তরীয় ভল্টের সাথে মিশ্রিত করা ।

উদাহরণস্বরূপ, আপনার কাছে এমন কোনও প্লেবুক থাকতে পারে:

- hosts: all

  vars_files:
    - secret

  tasks:
    - name: Do something as sudo
      service: name=nginx state=restarted
      sudo: yes

এখানে আমরা এমন একটি ফাইল অন্তর্ভুক্ত করছি যাতে secretআমাদের সুডো পাসওয়ার্ড থাকবে।

এই ফাইলটির একটি এনক্রিপ্ট করা সংস্করণ তৈরি করতে আমরা উত্তরযোগ্য-ভল্ট ব্যবহার করব:

ansible-vault create secret

এটি আপনাকে একটি পাসওয়ার্ড জিজ্ঞাসা করবে, তারপরে ফাইলটি সম্পাদনা করার জন্য আপনার ডিফল্ট সম্পাদকটি খুলুন open আপনি ansible_sudo_passএখানে রাখতে পারেন।

যেমন secret::

ansible_sudo_pass: mysudopassword

সংরক্ষণ করুন এবং প্রস্থান করুন, এখন আপনার কাছে একটি এনক্রিপ্ট করা secretফাইল রয়েছে যা আপনি আপনার প্লেবুক চালানোর সময় উত্তরটি ডিক্রিপ্ট করতে সক্ষম। দ্রষ্টব্য: আপনি ফাইলটি সম্পাদনা করতে পারেন ansible-vault edit secret(এবং ফাইলটি তৈরি করার সময় আপনি যে পাসওয়ার্ডটি ব্যবহার করেছিলেন তা প্রবেশ করুন)

ধাঁধাটির চূড়ান্ত খণ্ডটি হ'ল উত্তর সরবরাহ করা --vault-password-fileযা এটি আপনার secretফাইলটি ডিক্রিপ্ট করার জন্য ব্যবহার করবে ।

নামক একটি ফাইল তৈরি করুন vault.txtএবং এতে আপনার secretফাইল তৈরির সময় আপনি যে পাসওয়ার্ডটি ব্যবহার করেছিলেন তা রেখে দিন । পাসওয়ার্ডটি ফাইলের একক লাইন হিসাবে স্ট্রিং হওয়া উচিত।

উত্তরযোগ্য ডক্স থেকে:

.. নিশ্চিত করুন যে ফাইলটিতে অনুমতিগুলি এমন যে অন্য কেউ আপনার কী অ্যাক্সেস করতে পারে না এবং আপনার কী উত্স নিয়ন্ত্রণে যুক্ত করতে পারে না

শেষ অবধি: আপনি এখন আপনার প্লেবুকটি এরকম কিছু দিয়ে চালাতে পারেন

ansible-playbook playbook.yml -u someuser -i hosts --sudo --vault-password-file=vault.txt 

উপরেরটি নিম্নলিখিত ডিরেক্টরি বিন্যাসটি ধরে নিচ্ছে:

.
|_ playbook.yml
|_ secret
|_ hosts
|_ vault.txt

আপনি এখানে উত্তরযোগ্য ভল্ট সম্পর্কে আরও পড়তে পারেন: https://docs.ansible.com/playbooks_vault.html


5
দ্রষ্টব্য: উত্তরযোগ্য 1.9 হিসাবে, এটি প্রদর্শিত হয় যে আপনি আর উত্তরযোগ্য_সুডো_পাস (বা উত্তরযোগ্য_বিকোম_পাস) ভেরিয়েবলটি ব্যবহার করতে পারবেন না: "মারাত্মক: [...] => পাসওয়ার্ড হারিয়েছে"
toast38coza

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

6
বা আরও সহজভাবে: ansible-vault create group_vars/all/ansible.ymlএবং ansible_sudo_pass: yourpasswordসেখানে যুক্ত করুন। প্লেবুক বা তালিকা পরিবর্তন করার দরকার নেই
বুক ভার্স্টিঘ

1
এটি চেষ্টা fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE", "parsed": false}
করেও

8
আপনি যদি ভল্টের পাশের পাসওয়ার্ডটি ঠিক পাশের সরল পাঠ্যে সঞ্চয় করেন তবে ভল্টটি কী ভাল?
এরিক

44

কোডটি ( runner/__init__.py) দেখে আপনি মনে করেন আপনি সম্ভবত এটি নিজের ইনভেন্টরি ফাইলে সেট করতে পারেন:

[whatever]
some-host ansible_sudo_pass='foobar'

ansible.cfgকনফিগারেশনের ফাইলটিতেও কিছু বিধান রয়েছে বলে মনে হয় , তবে এখনই বাস্তবায়ন করা হয়নি ( constants.py)।


7
নিরাপদে এটি কনফিগার করার একটি দুর্দান্ত উপায় হ'ল এটি ডিরেক্টরি host_varsবা group_varsডিরেক্টরিতে সঞ্চয় করা এবং তারপরে উত্তর-ভল্ট
কাইল

44

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

আপনি যা করতে পারেন তা হ'ল টার্গেট মেশিনে একটি ব্যবহারকারী তৈরি করা এবং তাদেরকে সমস্ত কমান্ড বা কমান্ডের একটি সীমিত তালিকাতে পাসওয়ার্ডহীন সুডোর সুবিধা প্রদান করা।

যদি আপনি sudo visudoনীচের মতো একটি লাইন চালান এবং প্রবেশ করেন, তবে ব্যবহারকারী 'সুবিধাপ্রাপ্ত ব্যবহারকারী' যখন তারা এমন কিছু চালায় তখন কোনও পাসওয়ার্ড প্রবেশ করতে হবে না sudo service xxxx start:

%privilegedUser ALL= NOPASSWD: /usr/bin/service

7
@bschlueter যাতে আপনি খারাপ অভ্যাসটি সমর্থন করছেন?
স্টিফেন

1
আমি এটি একটি ভাল ধারণা বলে মনে করি না। --Ask-sudo-Pass ব্যবহার করা আমার কাছে বোধগম্য।
কেজিপিডিভোপার

@ সিমোন চিত্তাদিনী আমি সম্পূর্ণরূপে একমত হিসাবে সত্য যে আমি দিতে যাচ্ছিলাম উত্তর। এটি একটি সুরক্ষা ঝুঁকি।
আইনার্ক

আপনি যদি স্টেজিং / প্রোডে মোতায়েনের জন্য পাসওয়ার্ডহীন সুডো ব্যবহার করছেন তবে এটি প্রতিদিন সুরক্ষা ঝুঁকির চেয়ে কম নয়, তবে প্রতিদিন এই প্রতি 15 মিনিটে আপনার লোকালহোস্টে স্থাপনের সময় আপনার স্থানীয় ল্যাপটপ লগইন পাসওয়ার্ড টাইপ করতে এই উত্তরগুলি ব্যবহার করতে চান।
জোনাথন হার্টলি

আপনি কীভাবে এই রেখাটি উত্তরযুক্ত ব্যবহার করে যুক্ত করবেন?
ম্যাথিয়াস

21

উবুন্টু পাসওয়ার্ড একটি পরিবর্তনশীল নামক যেমন সংরক্ষণ করা হয় ansible_sudo_pass। আপনি এই পরিবর্তনশীলটি কয়েকটি উপায়ে সেট করতে পারেন:

প্রতি হোস্ট, আপনার জায় হোস্ট ফাইল ( inventory/<inventoryname>/hosts)

[server]
10.0.0.0 ansible_sudo_pass=foobar

প্রতি গ্রুপ, আপনার ইনভেন্টরি গ্রুপ ফাইল ( inventory/<inventoryname>/groups)

[server:vars]
ansible_sudo_pass=foobar

প্রতি গ্রুপে, গ্রুপ বারে ( group_vars/<groupname>/ansible.yml)

ansible_sudo_pass: "foobar"

প্রতি গ্রুপ, এনক্রিপ্ট করা ( ansible-vault create group_vars/<groupname>/ansible.yml)

ansible_sudo_pass: "foobar"

18

আপনি একটি গোষ্ঠী বা সমস্ত সার্ভারের জন্য একবারে পাসওয়ার্ড সেট করতে পারেন:

[all:vars]
ansible_sudo_pass=default_sudo_password_for_all_hosts

[group1:vars]
ansible_sudo_pass=default_sudo_password_for_group1

14

আমি এটির উপর দিয়ে আমার চুল ছিঁড়ে ফেলছিলাম, এখন আমি একটি সমাধান পেয়েছি যা আমি যা চাই তা করে:

সুডো পাসওয়ার্ড সহ হোস্ট প্রতি 1 টি এনক্রিপ্ট করা ফাইল

জন্য / etc / ansible / হোস্ট:

[all:vars]
ansible_ssh_connection=ssh ansible_ssh_user=myuser ansible_ssh_private_key_file=~/.ssh/id_rsa

[some_service_group]
node-0
node-1

তারপরে আপনি প্রতিটি হোস্টের জন্য একটি এনক্রিপ্ট করা ভেরি-ফাইলটি তৈরি করুন:

ansible-vault create /etc/ansible/host_vars/node-0

বিষয়বস্তু সহ

ansible_sudo_pass: "my_sudo_pass_for_host_node-0"

কীভাবে আপনি ভল্টের পাসওয়ার্ডটি সাজান (--ask-vault-pass এর মাধ্যমে প্রবেশ করুন) বা সিএফজির মাধ্যমে আপনার উপর নির্ভর করে

এর ভিত্তিতে আমার সন্দেহ হয় আপনি কেবল পুরো হোস্ট ফাইলটি এনক্রিপ্ট করতে পারবেন ...


ভল্ট ব্যবহার করে এনক্রিপ্ট করা আমার কাছে সবচেয়ে বেশি অর্থবোধ করে, যদিও আমি সেগুলি ব্যবহারের জন্য লড়াই করেছি ansible-playback। আমি ব্যবহার করতে হয়েছে -e @vault/filename.extআমার সঙ্গে খিলান ব্যবহার করতে ansible-playbookকল।
অ্যালেক্স

9

এই কাজ করতে একটি আরো কাণ্ডজ্ঞান উপায় আপনার দোকান হয় sudoযেমন একটি নিরাপদ খিলান পাসওয়ার্ড LastPassiOS এর বা KeePass এবং তারপর পাস ansible-playbookব্যবহার -e@কিন্তু একটি প্রকৃত ফাইলের মধ্যে বিষয়বস্তু hardcoding পরিবর্তে, আপনি কনস্ট্রাক্ট ব্যবহার করতে পারেন -e@<(...)একটি কমান্ড চালানোর জন্য সাব-শেল, এবং এর আউটপুট (STDOUT) কে একটি বেনামি ফাইল বর্ণনাকারীতে পুনঃনির্দেশ করুন, কার্যকরভাবে পাসওয়ার্ডটি ফিডে -e@<(..)

উদাহরণ

$ ansible-playbook -i /tmp/hosts pb.yml \
   -e@<(echo "ansible_sudo_pass: $(lpass show folder1/item1 --password)")

উপরেরটি বেশ কয়েকটি কাজ করছে, আসুন এটি ভেঙে দিন।

  • ansible-playbook -i /tmp/hosts pb.yml - স্পষ্টতই উত্তরযোগ্য-প্লেবুকের মাধ্যমে একটি প্লেবুক চলছে
  • $(lpass show folder1/item1 --password)"- লাস্টপাস সিএলআই চালায় lpassএবং ব্যবহারের জন্য পাসওয়ার্ড পুনরুদ্ধার করে
  • echo "ansible_sudo_pass: ...password..." - 'উত্তরযোগ্য_সুডো_পাস:' স্ট্রিংটি নেয় এবং সরবরাহকৃত পাসওয়ার্ডের সাথে এটি একত্রিত করে lpass
  • -e@<(..)- উপরেরটি একসাথে রাখে এবং গ্রাহক হওয়ার <(...)জন্য ফাইল বর্ণনাকারী হিসাবে সাবসেল সংযুক্ত করে ansible-playbook

আরও উন্নতি

আপনি যদি টাইপ না করে থাকেন তবে প্রতিবার আপনি কেবল এমন পছন্দ করতে পারেন। প্রথমে আপনার .bashrcপছন্দ মতো একটি উপনাম তৈরি করুন :

$ cat ~/.bashrc
alias asp='echo "ansible_sudo_pass: $(lpass show folder1/item1 --password)"'

এখন আপনি আপনার প্লেবুকটি এভাবে চালাতে পারেন:

$ ansible-playbook -i /tmp/hosts pb.yml -e@<(asp)

তথ্যসূত্র


1
সাবসেল ব্যবহার করা খুব স্মার্ট আইডিয়া! যারা ভাবছেন তাদের জন্য, এটি 1 পাসওয়ার্ডের সিএলআই-এর সাথে দেখতে কেমন দেখাচ্ছে:--extra-vars @<(echo ansible_become_pass: $(op get item <item name> | jq --raw-output '.details.sections[0].fields[] | select(.t=="password").v'))
দিতি

1
আমি এটি পছন্দ করি কারণ যখন আমি ব্যাচের ইতিহাস পরীক্ষা করেছিলাম তখন পাসওয়ার্ডটি ক্লিয়ারটেক্সটে প্রকাশ করা হয়নি। সম্ভবত এটির সত্য এটি হ'ল যদি সিস্টেম অডিটিং সক্ষম করা থাকে, কমান্ডটি কোনও ফাইল পড়ার জন্য লগ হয়, যেমন /dev/fd/63পাসওয়ার্ড দ্বারা কোনও অস্থায়ী ফাইলের বিবরণীতে থাকা, এটি প্রকাশ করা হয় না।
JPvRiel

5

আপনি যদি সরল পাঠ্য ফাইলগুলিতে পাসওয়ার্ড রাখতে স্বাচ্ছন্দ্য বোধ করেন তবে অন্য বিকল্পটি হ'ল --extra-vars প্যারামিটারের সাথে একটি JSON ফাইল ব্যবহার করুন (উত্স নিয়ন্ত্রণ থেকে ফাইলটি বাদ দিতে ভুলবেন না):

ansible-playbook --extra-vars "@private_vars.json" playbook.yml 

উত্তরযোগ্য এই বিকল্পটি 1.3 থেকে সমর্থন করেছেন


5

আপনি আপনার প্লেবুকের জন্য হোস্ট ফাইলটিতে এই জাতীয় sudo পাসওয়ার্ড লিখতে পারেন:

[host-group-name]
host-name:port ansible_sudo_pass='*your-sudo-password*'

5

উত্তরীয় ভল্টটি এখানে বেশ কয়েকবার প্রস্তাব দেওয়া হয়েছে, তবে আমি আমার প্লেবুকগুলিতে সংবেদনশীল ফাইলগুলি এনক্রিপ্ট করার জন্য গিট-ক্রিপট পছন্দ করি। আপনি যদি নিজের উত্তরসূরী প্লেবুকগুলি রাখতে গিট ব্যবহার করেন তবে এটি একটি স্ন্যাপ। জবাবদিহি ভল্টের সাথে আমি যে সমস্যাটি পেয়েছি তা হ'ল আমি অবশ্যম্ভাবীভাবে ফাইলটির এনক্রিপ্ট করা অনুলিপিগুলি নিয়ে এসেছি যার সাথে আমি কাজ করতে চাই এবং কাজ করার আগে ডিক্রিপ্ট করে যেতে হবে। git-cryptএকটি ভাল ওয়ার্কফ্লো আইএমও অফার করে।

এটি ব্যবহার করে, আপনি নিজের পাসওয়ার্ডগুলি আপনার প্লেবুকের বিভিন্ন ক্ষেত্রে রাখতে পারেন এবং আপনার প্লেবুকটিকে একটি এনক্রিপ্ট করা ফাইল হিসাবে চিহ্নিত করতে .gitattributesপারেন:

 my_playbook.yml filter=git-crypt diff=git-crypt

আপনার প্লেবুকটি স্বচ্ছভাবে গিথুবে এনক্রিপ্ট করা হবে। তারপরে আপনার কেবল জবাবদিহি করতে চালানো হোস্টটিতে আপনার এনক্রিপশন কীটি ইনস্টল করতে হবে বা ডকুমেন্টেশনের নির্দেশিকাটি সেট আপ করার জন্য এটি অনুসরণ করতে হবে gpg

gpgআপনার ssh-agentফরোয়ার্ড এসএসএইচ কীগুলির মতো এখানে ফরোয়ার্ড করার জন্য একটি ভাল প্রশ্নোত্তর রয়েছে : /superuser/161973/how-can-i-forward-a-gpg-key-via-ssh-agent


3

আপনি sshpassনীচের মতো ইউটিলিটি ব্যবহার করতে পারেন ,

$ sshpass -p "your pass" ansible pattern -m module -a args \
   -i inventory --ask-sudo-pass

3

উত্তরযোগ্য ২.৪.১.০ ব্যবহার করে এবং নিম্নলিখিতগুলি কাজ করবে:

[all]
17.26.131.10
17.26.131.11
17.26.131.12
17.26.131.13
17.26.131.14

[all:vars]
ansible_connection=ssh
ansible_user=per
ansible_ssh_pass=per
ansible_sudo_pass=per

এবং এই তালিকা সহ কেবল প্লেবুকটি চালান :

ansible-playbook -i inventory copyTest.yml

3

এটি স্বয়ংক্রিয় করতে আমার হ্যাকটি ছিল পরিবেশের পরিবর্তনশীল ব্যবহার এবং এর মাধ্যমে এটি অ্যাক্সেস করা --extra-vars="ansible_become_pass='{{ lookup('env', 'ANSIBLE_BECOME_PASS') }}'"

একটি এনভির ভার রফতানি করুন তবে বাশ / শেল ইতিহাস এড়িয়ে চলুন (একটি স্থান বা অন্য পদ্ধতিগুলির সাথে প্রিপেন্ড করুন)। উদাহরণ:

     export ANSIBLE_BECOME_PASS='<your password>'

অতিরিক্ত ansible_become_passভেরিয়েবলটি ansible-playbook, যেমন: তে পাস করার সময় এনভ ভার্চটি দেখুন

ansible-playbook playbook.yml -i inventories/dev/hosts.yml -u user --extra-vars="ansible_become_pass='{{ lookup('env', 'ANSIBLE_BECOME_PASS') }}'"

ভাল বিকল্প উত্তর:


2

আপনি উত্তরযোগ্য ভল্ট ব্যবহার করতে পারেন যা আপনার পাসওয়ার্ডকে এনক্রিপ্ট করা ভল্টে কোড করবে। এর পরে আপনি ভল্ট থেকে প্লেবুকগুলিতে পরিবর্তনশীল ব্যবহার করতে পারেন।

জবাবদিহি ভল্ট সম্পর্কিত কিছু ডকুমেন্টেশন:
http://docs.ansible.com/playbooks_vault.html

আমরা এটি পরিবেশ প্রতি খিলান হিসাবে ব্যবহার করছি। ভল্ট সম্পাদনা করতে আমাদের কমান্ডটি রয়েছে:
ansible-vault edit inventories/production/group_vars/all/vault

আপনি যদি ভল্ট ভেরিয়েবল কল করতে চান তবে আপনাকে প্যারামিটারগুলির সাথে উত্তরীয়-প্লেবুক ব্যবহার করতে হবে:
ansible-playbook -s --vault-password-file=~/.ansible_vault.password

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

আমি সার্ভারে sudoers ফাইল ব্যবহার করার পরামর্শ দিচ্ছি। এখানে গ্রুপ প্রশাসকের উদাহরণ রয়েছে:
%admin ALL=(ALL) NOPASSWD:ALL



1

পাঁচ বছর পরে আমি দেখতে পাচ্ছি এটি এখনও খুব প্রাসঙ্গিক বিষয়। লিউকোসের উত্তরটি কিছুটা মিরর করে যা আমি আমার ক্ষেত্রে সেরা উত্তর খুঁজে পাই, কেবলমাত্র উত্তরযোগ্য সরঞ্জাম ব্যবহার করে (কোনও কেন্দ্রীভূত প্রমাণীকরণ, টোকেন বা যাই হোক না কেন)। এটি ধরে নিয়েছে যে সমস্ত সার্ভারে আপনার একই ব্যবহারকারীর নাম এবং একই পাবলিক কী রয়েছে। আপনি যদি তা না করেন তবে অবশ্যই আপনাকে আরও সুনির্দিষ্ট হতে হবে এবং হোস্টগুলির পাশে সংশ্লিষ্ট ভেরিয়েবলগুলি যুক্ত করতে হবে:

[all:vars]
ansible_ssh_user=ansible
ansible_ssh_private_key_file=home/user/.ssh/mykey
[group]
192.168.0.50 ansible_sudo_pass='{{ myserver_sudo }}'

ansible-vault create mypasswd.yml
ansible-vault edit mypasswd.yml

যোগ করুন

myserver_sudo: mysecretpassword

তারপর:

ansible-playbook -i inv.ini my_role.yml --ask-vault --extra-vars '@passwd.yml'

কমপক্ষে এইভাবে আপনাকে আরও ভেরিয়েবলগুলি লিখতে হবে না যা পাসওয়ার্ডগুলিতে নির্দেশ করে।


1

@ টোস্ট 38 কোজা দ্বারা সমাধানের উপরে আমার পক্ষে কাজ করেছে; ঠিক সেই সুডো: হ্যাঁ এখন জবাবদিহি করা হয়েছে। ব্যবহারের পরিণত এবং become_user পরিবর্তে।

tasks:
 - name: Restart apache service
   service: name=apache2 state=restarted
   become: yes
   become_user: root

0

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

- name: Run expect to INSTALL TA
  shell: |
    set timeout 100
    spawn /bin/sh -i

    expect -re "$ "
    send "sudo yum remove -y xyz\n"

    expect "$ "
    send "sudo yum localinstall -y {{ rpm_remotehost_path_for_xyz }}\n"

    expect "~]$ "
    send "\n"

    exit 0
  args:
  executable: /usr/bin/expect

0

খুব সহজ, এবং শুধুমাত্র চলক ফাইল যুক্ত করুন:

উদাহরণ:

$ vim group_vars/all

এবং এগুলি যুক্ত করুন:

Ansible_connection: ssh
Ansible_ssh_user: rafael
Ansible_ssh_pass: password123
Ansible_become_pass: password123

ধন্যবাদ, তবে আমি মনে করি আপনি উত্তরযোগ্য_বিকোম_পাশের পরিবর্তে উত্তরযোগ্য_বিকোম_পাসটি বোঝাচ্ছেন।
কৃষ্ণোম

0

কেবলমাত্র একটি সংযোজন, তাই আমি সম্প্রতি যে বিরক্তি প্রকাশ করেছি তা নিয়ে আর কেউ প্রবেশ করে না:

আফাইক, উপরের টোস্ট 38 কোজারার সাধারণ লাইন বরাবর সবচেয়ে ভাল সমাধান। যদি আপনার পাসওয়ার্ড ফাইল এবং আপনার প্লেবুক এক সাথে স্ট্যাটিকভাবে বেঁধে রাখার অর্থ হয়, তবে তার টেমপ্লেটটি vars_files(বা include_vars) দিয়ে অনুসরণ করুন । আপনি যদি এগুলিকে আলাদা রাখতে চান তবে আপনি কমান্ড লাইনে ভল্ট সামগ্রীগুলি সরবরাহ করতে পারেন:

ansible-playbook --ask-vault-pass -e@<PATH_TO_VAULT_FILE> <PLAYBOOK_FILE>

এটি পূর্বসূচীতে সুস্পষ্ট, তবে এখানে গ্যাটাচস রয়েছে:

  1. রক্তাক্ত @ সাইন যদি আপনি এটি ছেড়ে চলে যান তবে বিশ্লেষণটি নিঃশব্দে ব্যর্থ হবে এবং উত্তর-প্লেবুকটি এগিয়ে যাবে যেমন আপনি কখনই ফাইলটি প্রথম স্থানে নির্দিষ্ট করেননি।

  2. কমান্ড-লাইন --extra-vars / -e বা আপনার YAML কোডের মধ্যে আপনাকে অবশ্যই ভল্টের বিষয়বস্তু স্পষ্টভাবে আমদানি করতে হবে। --ask-vault-passপতাকা (একটি মান যা পরে ব্যবহার করা হয় না পারে অথবা হতে পারে জন্য প্রম্পট ব্যতীত আপনি) নিজে কিছু করবে না।

আপনি আপনার "@" গুলি অন্তর্ভুক্ত করুন এবং একটি ঘন্টা বাঁচাতে পারেন।


-3

এটি আমার জন্য কাজ করেছে ... NOPASSWD- এর সাথে ফাইল /etc/sudoers.d/90-init-users ফাইল তৈরি করা হয়েছে

echo "user ALL=(ALL)       NOPASSWD:ALL" > 90-init-users

যেখানে "ব্যবহারকারী" আপনার ব্যবহারকারী is

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