একটি অ্যাডহক কমান্ড সহ হোস্ট বা গোষ্ঠীর জন্য সমস্ত উত্তরযোগ্য পরিবর্তনশীল তালিকাবদ্ধ করুন?


25

উত্তরযোগ্য পরিবর্তনশীল বিভিন্ন উত্স থেকে আসে। এটা উদাহরণস্বরূপ নামে একজন subfolder মধ্যে YAML ফাইল তৈরি করে host_vars এবং group_vars প্রদান করা সম্ভব host_varsএবং group_varsজায় ফাইল ধারণকারী ফোল্ডার যথাক্রমে।

আমি কীভাবে সমস্ত ভেরিয়েবল তালিকাভুক্ত করতে পারি উত্তরীয় কোনও প্লেবুকের অভ্যন্তরে একটি গ্রুপ বা হোস্ট সম্পর্কে জানতে পারে? দ্রষ্টব্য: আমি চেষ্টা করেছি ansible -m debug -e 'var=hostvars' hostএবং ansible -m debug -e '- debug: var=hostvars'কোন ফল লাভ হয়নি।

: ইঙ্গিত ansible <group|host> -m setupহয় না সঠিক উত্তরটি যেমন নেই না (এটি শুধুমাত্র রয়েছে সব ভেরিয়েবল যে অন্যান্য উৎস থেকে আসা অন্তর্ভুক্ত { "ansible_facts" : { ... } }আসলে এটা এমনকি এর মাধ্যমে একটি গতিশীল জায় স্ক্রিপ্ট (দ্বারা উপলব্ধ ভেরিয়েবল অন্তর্ভুক্ত নয়। _metaএবং তাই)।

উত্তরীয় সংস্করণ: 1.9.1।

উত্তর:


26

ansible -m debug -a "var=hostvars[inventory_hostname]"কাজ মনে হচ্ছে। বৈধ পরিবর্তনশীল উৎস ( host_vars, group_vars, _metaএকটি গতিশীল জায় মধ্যে, ইত্যাদি) সব বিবেচনায় নেয়া হয়।

গতিশীল ইনভেন্টরি স্ক্রিপ্ট সহ hosts.sh:

#!/bin/sh
if test "$1" = "--host"; then
        echo {}
else
        cat <<EOF
{
  "ungrouped": [ "x.example.com", "y.example.com" ],
  "group1": [ "a.example.com" ],
  "group2": [ "b.example.com" ],
  "groups": {
    "children": [ "group1", "group2" ],
    "vars": { "ansible_ssh_user": "user" }
  },
  "_meta": {
    "hostvars": {
      "a.example.com": { "ansible_ssh_host": "10.0.0.1" },
      "b.example.com": { "ansible_ssh_host": "10.0.0.2" }
    }
  }
}
EOF
fi

তুমি পেতে পার:

$ chmod +x hosts.sh
$ ansible -i hosts.sh a.example.com -m debug -a "var=hostvars[inventory_hostname]"
a.example.com | success >> {
    "var": {
        "hostvars": {
            "ansible_ssh_host": "10.0.0.1", 
            "ansible_ssh_user": "user", 
            "group_names": [
                "group1", 
                "groups"
            ], 
            "groups": {
                "all": [
                    "x.example.com", 
                    "y.example.com", 
                    "a.example.com", 
                    "b.example.com"
                ], 
                "group1": [
                    "a.example.com"
                ], 
                "group2": [
                    "b.example.com"
                ], 
                "groups": [
                    "a.example.com", 
                    "b.example.com"
                ], 
                "ungrouped": [
                    "x.example.com", 
                    "y.example.com"
                ]
            }, 
            "inventory_hostname": "a.example.com", 
            "inventory_hostname_short": "a"
        }
    }
}

জবাবদিহিতা সহ 2.0.2, এটি আর কাজ করবে বলে মনে হয় না। আউটপুটটি হলlocalhost | SUCCESS => { "hostvars": "<ansible.vars.hostvars.HostVars object at 0x7f320943da10>" }
জুলাকিস

প্রস্তাবিত সম্পাদন করা ব্যবহার করতে "var=hostvars[inventory_hostname]"উপর ansible> 2.0
স্টুয়ার্ট-ওয়ারেন

1.9.4 এর জন্য এটি ফেরত পাঠানো জিনিসটি ফেরায় নাansible my.hostname.example.com -m setup -i ../my/inventory/hosts.example -u root
আকস্তাদদিনভ

1
এটি আমার জন্য কাজ করেছেansible host-name -m debug -a "var=[var_name]" -i inventory/testing/hosts
মন্টারো

2

এফওয়াইআই: এই গিথুব প্রকল্পটি আপনাকে দেখায় যে সমস্ত হোস্টে 90% ভেরিয়েবল কীভাবে তালিকাভুক্ত করা যায়। আমি এটি একক হোস্ট কমান্ডের চেয়ে বিশ্বব্যাপী দরকারী বলে মনে করি। README এর মধ্যে একটি সাধারণ তালিকা প্রতিবেদন তৈরির জন্য নির্দেশাবলী অন্তর্ভুক্ত রয়েছে। সমস্ত তথ্য দেখতে প্লেবুকের শেষে এটি চালানো আরও মূল্যবান। কার্য আচরণ ব্যবহারের নিবন্ধকে ডিবাগ করতে:


2

উপরের সত্যিই উত্তরের উত্তরে একটি ছোট্ট টিপ যুক্ত করা, আপনি যদি প্রোগ্রামটিমেটিকভাবে আপনার চারপাশে ঝাঁকুনির জন্য চান তবে পারেন

হোস্টওয়ারদের জন্য বিদ্যমান উত্তরটি ব্যবহার করুন :

ansible -m debug myhost -a "var=hostvars[inventory_hostname].ansible_version"

তবে উত্তরযোগ্য_ফ্যাক্টগুলি খালি কারণ মডিউলটি debugচালায় না setup। সুতরাং আপনাকে jqবৈধ জসন তৈরি করতে আউটপুটটি ছাঁটাই করার পরে অতিরিক্ত কিছু চেষ্টা করতে হবে।

ansible -m setup myhost | sed 's#.*SUCCESS =>##' | jq .ansible_facts.ansible_all_ipv4_addresses

আমি ভেবেছিলাম যে আপনি যখন কেবল একটি জিনিস চান তখন উত্তরগুলি সঠিকভাবে ফিরে আসে এমন পাঠ্যের দৈত্য প্রাচীরটি অনুসন্ধান করার সময় লোকেরা এই দরকারীটি খুঁজে পেতে পারে might jq .ansible_facts.ansible_devices.vda.size

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