উত্তরযোগ্য: ফাইলের সামগ্রীতে ভেরিয়েবল সেট করুন


94

আমি ansible-playbookএকটি ফাইলের বিষয়বস্তুতে একটি ভেরিয়েবল সেট করতে চাই এর সাথে ইসি 2 মডিউলটি ব্যবহার করছি । আমি বর্তমানে এটি কীভাবে করছি তা এখানে।

  1. ফাইলের নাম সহ ভার
  2. catফাইল শেল টাস্ক
  3. catসি 2 মডিউলে যাওয়ার ফলাফলটি ব্যবহার করুন ।

আমার প্লেবুকের বিষয়বস্তুর উদাহরণ।

vars:
  amazon_linux_ami: "ami-fb8e9292"
  user_data_file: "base-ami-userdata.sh"
tasks:
- name: user_data_contents
  shell: cat {{ user_data_file }}
  register: user_data_action
- name: launch ec2-instance
  local_action:
...
  user_data: "{{ user_data_action.stdout }}"

আমি ধরে নিয়েছি এটি করার আরও অনেক সহজ উপায় আছে তবে উত্তরীয় ডক্স অনুসন্ধান করার সময় আমি এটি খুঁজে পেলাম না।


এই আমার জন্য কাজ করে। আমি কীভাবে অনুসন্ধান (পাইপ) কমান্ডে ভেরিয়েবল এম্বেড করতে পারি তা খুঁজে পেলাম না।
এরিকসন.সেপদা

উত্তর:


93

আপনি ব্যবহার করতে পারেন লুক- একটি ফাইল যেমন বিষয়বস্তু পেতে অনুক্রমে Ansible মধ্যে

user_data: "{{ lookup('file', user_data_file) }}"

ক্যাভেট: এই লুক্কুলি দূরবর্তী ফাইল নয়, স্থানীয় ফাইলগুলির সাথে কাজ করবে।

এখানে ডক্স থেকে একটি সম্পূর্ণ উদাহরণ :

- hosts: all
  vars:
     contents: "{{ lookup('file', '/etc/foo.txt') }}"
  tasks:
     - debug: msg="the value of foo.txt is {{ contents }}"

91
দ্রষ্টব্য যে স্থানীয়ভাবে স্থানীয় অনুসন্ধান চলছে, যখন cat@ টেস্টারজেফের উদাহরণে কমান্ডটি দূরবর্তী মেশিনে চলছে।
অ্যালেক্স দুপুয়

8
দূরবর্তী অনুসন্ধানের জন্য
মার্কো ফেরারি

16

আপনি ব্যবহার করতে পারেন গবগব করে খাওয়া দূরবর্তী হোস্ট থেকে একটি ফাইল আনতে মডিউল: (এটা পরামর্শ জন্য @mlissner ধন্যবাদ)

vars:
  amazon_linux_ami: "ami-fb8e9292"
  user_data_file: "base-ami-userdata.sh"
tasks:
- name: Load data
  slurp:
    src: "{{ user_data_file }}"
  register: slurped_user_data
- name: Decode data and store as fact # You can skip this if you want to use the right hand side directly...
  set_fact:
    user_data: "{{ slurped_user_data.content | b64decode }}"

8

আপনি ব্যবহার করতে পারেন মডিউল আনা স্থানীয় দূরবর্তী হোস্ট থেকে ফাইল কপি, এবং মডিউল অনুসন্ধান সংগৃহীত ফাইলের সামগ্রী পড়তে।


6
আমি জবাবদিহি করতে সম্পূর্ণ নতুন, তবে কেন এই জন্য স্লারপ ব্যবহার করবেন না? কোনও ফাইলের বিষয়বস্তু টানতে এটি রিমোটে কাজ করছে বলে মনে হচ্ছে।
mlissner

0

অনুসন্ধান কেবল লোকালহোস্টে কাজ করে। আপনি উদ্ধার করতে চান যদি একটি ভেরিয়েবল থেকে ভেরিয়েবল দায়ের আপনি দূরবর্তী অবস্থান থেকে include_vars ব্যবহার করেছেন: {{ varfile }}। এর সূচিপত্রগুলি {{ varfile }}ফর্মের একটি অভিধান হওয়া উচিত {"key":"value"}, আপনি উত্তরসূরী খুঁজে পাবেন যাতে আপনি কোলনের পরে কোনও স্থান অন্তর্ভুক্ত করেন তবে আপনাকে সমস্যা দেয়।


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