ফাইলগ্লোব প্যাটার্ন সহ আমি কীভাবে নেস্টেড লুপ রাখতে পারি?


13

আমি জবাবদিহি করার জন্য ব্যবহারকারীদের সেটগুলির জন্য অনুমোদিত এসএসএইচ কীগুলির একটি সেট তৈরি করার চেষ্টা করছি। আমার usersমত একটি পরিবর্তনশীল সেট আপ আছে :

users:
  - { username: root, name: 'root' }
  - { username: user, name: 'User' }

একই ভূমিকায়, আমার কাছে একটি files/public_keysডিরেক্টরিতে অনুমোদিত কী ফাইলগুলির একটি সেটও রয়েছে, অনুমোদিত কী অনুসারে একটি ফাইল:

roles/common/files/public_keys/home
roles/common/files/public_keys/work

আমি প্রতিটি ব্যবহারকারীর জন্য প্রতিটি পাবলিক কী অনুলিপি করতে চাই।

আমি নিম্নলিখিত কাজটি ব্যবহার করে চেষ্টা করেছি:

- name: copy authorized keys
  authorized_key: user={{ item.0.username }} key={{ item.1 }}
  with_nested:
    - users
    - lookup('fileglob', 'public_keys/*')

তবে, item.1আক্ষরিক স্ট্রিং রয়েছে "lookup('fileglob', 'public_keys/*')", প্রতিটি ফাইলের নীচে নয় files/public_keys

আমি কি files/public_keysডিরেক্টরিতে একটি ডিরেক্টরি পেতে এবং প্রতিটি ব্যবহারকারীর জন্য প্রতিটি পাবলিক কী অনুলিপি করতে পারি?

উত্তর:


8

কৌশলটি হ'ল splitফাংশনটির মাধ্যমে ফাইলগ্লোব রিটার্ন মানকে একটি তালিকায় রূপান্তর করা , যাতে আপনি মানগুলি পুনরাবৃত্তি করতে পারেন:

- name: copy authorized keys
  authorized_key: 
    user: "{{ item.0.username }}"
    key: "{{ lookup('file', item.1) }}"
  with_nested:
    - "{{ users }}"
    - "{{ lookup('fileglob', 'public_keys/*').split(',') }}"

মনে রাখবেন যে, বেয়ার ভেরিয়েবল ব্যবহার করে, ছাড়া {{এবং }}, জন্য with_itemsAnsible v2 এ অসমর্থিত হয়েছে।


এটি উত্তর গ্রহণ করা উচিত
বিয়ার্স

0

আপনার কমান্ডটি উল্লেখযোগ্যভাবে আবারও লিখতে হতে পারে তবে ফাইলব্লবগুলিতে লুপিংয়ের ব্যবস্থা রয়েছে

উদাহরণ থেকে:

- copy: src={{ item }} dest=/etc/fooapp/ owner=root mode=600
  with_fileglob:
    - /playbooks/files/fooapp/*

অন্যান্য প্রতিশ্রুতিবদ্ধ বিকল্পগুলি হ'ল সুবিলিমেন্টগুলি ওভার লুপিং যা আসলে এসএসএইচ কী দ্বারা চিত্রিত হয়েছে


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

আমিও নিশ্চিত নই। পরবর্তী সেরা পরামর্শ মধ্যে পপ হয় #ansibleউপর irc.freenode.netএবং গুরু কোন উজ্জ্বল ধারনা আছে কিনা তা দেখতে।
টম ও'কনোর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.