Score:1

Ansible - ไม่สามารถอ้างถึงค่าพารามิเตอร์โมดูล

ธง ph
azk

นี่คือเพลย์บุ๊กของฉัน

---
- โฮสต์: mytestserver
  กลายเป็น: จริง
  makes_method: sudo
  Gather_facts: จริง

  วาร์:
  # เพื่อรับ vgname และ lvname จากอุปกรณ์ของ ansible_mounts 
    mt: "{{ MT }}" #Extravariable
    disp_pth: "{{ รายการ['อุปกรณ์'] }}"
    disp_tmp: "{{ disp_pth | ชื่อฐาน }}"
    DISP: "{{ disp_tmp.split('-') }}"
    ชื่อ VG: "{{ DISP.0 }}"
    LVname1: "{{ DISP.1 }}"
    DISPP2: "{{ DISP.3|default('') }}"
    LVname2: "{{ DISP.1 }}-{{ DISPP2 }}"
    LVname: "{{ LVname2 ถ้า (disp_tmp | regex_search('--')) อื่น LVname1 }}"


  งาน:
    - ชื่อ: รับค่าระบบไฟล์
      ระดับ:
        vg: "{{ VGname }}"
        เลเวล: "{{ ชื่อเลเวล }}"
      with_items: "{{ ansible_mounts }}"
      เมื่อ: item.mount == MT
      ลงทะเบียน: myfs

    - แก้ปัญหา:
        var: myfs

เมื่อฉันดำเนินการ:

$ ansible-playbook -i proyects/Inventory/awx_hosts -l mytestserver getlvmfacts.yml -e MT=/DATA

ฉันได้รับค่า:

เล่น [เซิร์ฟเวอร์ mytest] *********************************************** ************************************************** ************************************************** ************************************************** **************

TASK [รวบรวมข้อเท็จจริง] ********************************************* ************************************************** ************************************************** ************************************************** ***************
ตกลง: [mytestserver]

TASK [รับค่าระบบไฟล์] *********************************************** ************************************************** ************************************************** ************************************************** **********
โอเค: [mytestserver] => (item={'block_used': 21620, 'uuid': '7fef92b8-8157-43d1-92b4-525a56fa33f8', 'size_total': 1056858112, 'block_total': 258022, 'mount': ' /DATA', 'block_available': 236402, 'size_available': 968302592, 'fstype': 'ext4', 'inode_total': 65536, 'options': 'rw', 'device': '/dev/mapper/vgAPP- ข้อมูล', 'inode_used': 11, 'block_size': 4096, 'inode_available': 65525})

งาน [แก้ไขข้อบกพร่อง] *********************************************** ************************************************** ************************************************** ************************************************** ************************
ตกลง: [mytestserver] => {
    "myfs": {
        "เปลี่ยนแปลง": เท็จ
        "msg": "รายการทั้งหมดเสร็จสมบูรณ์",
        "ผล": [
            {
                "ansible_loop_var": "รายการ",
                "เปลี่ยนแปลง": เท็จ
                "สิ่งของ": {
                    "block_available": 414770,
                    "block_size": 4096,
                    "block_total": 516052,
                    "block_used": 101282,
                    "อุปกรณ์": "/dev/mapper/vg00-lvol01",
                    "fstype": "ต่อ 3",
                    "inode_available": 124211,
                    "inode_total": 131072,
                    "inode_used": 6861,
                    "เมาท์": "/",
                    "ตัวเลือก": "rw",
                    "size_available": 1698897920,
                    "size_total": 2113748992,
                    "uuid": "7df9171b-c31f-434f-94c5-344d02775e89"
                },
                "skip_reason": "ผลลัพธ์แบบมีเงื่อนไขเป็นเท็จ",
                "ข้าม": จริง
            },
            {
                "ansible_loop_var": "รายการ",
                "เปลี่ยนแปลง": เท็จ
                "สิ่งของ": {
                    "block_available": 1037688,
                    "block_size": 4096,
                    "block_total": 1046016,
                    "block_used": 8328,
                    "อุปกรณ์": "/dev/mapper/vgDATA-BASET--DATA1",
                    "fstype": "xfs",
                    "inode_available": 4194301,
                    "inode_total": 4194304,
                    "inode_used": 3,
                    "เมานต์": "/BASET/DATA1",
                    "ตัวเลือก": "rw",
                    "size_available": 4250370048,
                    "size_total": 4284481536,
                    "uuid": "91689e9b-552c-4f0e-b0ec-0d3d25154a72"
                },
                "skip_reason": "ผลลัพธ์แบบมีเงื่อนไขเป็นเท็จ",
                "ข้าม": จริง
            },
            {
                "ansible_loop_var": "รายการ",
                "เปลี่ยนแปลง": เท็จ
                "ล้มเหลว": เท็จ
                "การร้องขอ": {
                    "module_args": {
                        "ใช้งานอยู่": จริง
                        "แรง": เท็จ
                        "lv": "ข้อมูล",
                        "ตัวเลือก": null,
                        "pvs": โมฆะ
                        "resizefs": เท็จ
                        "หด": จริง
                        "ขนาด": โมฆะ
                        "ภาพรวม": null,
                        "สถานะ": "ปัจจุบัน",
                        "ทินพูล": null,
                        "vg": "vgแอป"
                    }
                },
                "สิ่งของ": {
                    "block_available": 236402,
                    "block_size": 4096,
                    "block_total": 258022,
                    "block_used": 21620,
                    "อุปกรณ์": "/dev/mapper/vgAPP-DATA",
                    "fstype": "ext4",
                    "inode_available": 65525,
                    "inode_total": 65536,
                    "inode_used": 11,
                    "เมาท์": "/DATA",
                    "ตัวเลือก": "rw",
                    "size_available": 968302592,
                    "size_total": 1056858112,
                    "uuid": "7fef92b8-8157-43d1-92b4-525a56fa33f8"
                },
                "lv": "ข้อมูล",
                "ขนาด": 1024.0,
                "vg": "vgแอป"
            },
            {
                "ansible_loop_var": "รายการ",
                "เปลี่ยนแปลง": เท็จ
                "สิ่งของ": {
                    "block_available": 472667,
                    "block_size": 4096,
                    "block_total": 516052,
                    "block_used": 43385,
                    "อุปกรณ์": "/dev/mapper/vg00-lvol07",
                    "fstype": "ต่อ 3",
                    "inode_available": 131061,
                    "inode_total": 131072,
                    "inode_used": 11,
                    "ภูเขา": "/tivoli",
                    "ตัวเลือก": "rw",
                    "size_available": 1936044032,
                    "size_total": 2113748992,
                    "uuid": "2310d046-eaad-4419-a94b-197c2c56502c"
                },
                "skip_reason": "ผลลัพธ์แบบมีเงื่อนไขเป็นเท็จ",
                "ข้าม": จริง
            }
        ]
    }
}

ในตอนท้ายของจุดเชื่อมต่อที่ตรงกัน (/DATA) มีพารามิเตอร์ระบบไฟล์สามตัว:

"lv": "ข้อมูล",
"ขนาด": 1024.0,
"vg": "vgแอป"

คำถามคือ ฉันจะอ้างอิงพารามิเตอร์นี้ได้อย่างไร

ฉันได้ลองใช้ myfs.lv แต่ไม่ได้ผลและหลากหลายวิธีมากขึ้น ฉันคิดว่าเป็นเพราะสิ่งเหล่านั้นไม่ได้อยู่ข้างใน 'สิ่งของ'

ที่ต้องการ: ใช้บางอย่างเช่น "myfs.lv" และรับ "ข้อมูล"

หวังว่าคุณจะสามารถช่วยได้ ขอบคุณล่วงหน้า!

Score:1
ธง th

หากคุณอ้างถึงโครงสร้างที่แก้ไขจุดบกพร่องคุณจะเห็นสิ่งนั้น myfs.lv ผิดอย่างชัดเจนเพราะปุ่มเดียวที่ระดับบนสุดคือ ข้อความ, เปลี่ยน, และ ผล.

เมื่อคุณเรียกใช้งานในลูป ผลลัพธ์จะถูกจัดเก็บเป็นรายการภายใต้ ผล กุญแจ ของตัวแปรที่ลงทะเบียน หากต้องการเข้าถึงผลลัพธ์นั้น คุณต้องทำบางอย่างเช่น myfs.results.2.lv.

โดยทั่วไปแล้วการเขียนฮาร์ดโค้ดดัชนีแบบนี้ไม่ใช่สิ่งที่คุณต้องการ ดังนั้นคุณควรทำบางอย่างเพื่อเลือกผลลัพธ์ที่คุณต้องการแทน (myfs.results | ปฏิเสธ('ข้าม') | รายการ | อันดับแรก).lv จะดึงข้อมูล เลเวล สำหรับผลลัพธ์แรกที่ไม่ถูกข้าม

หรือแน่นอน คุณสามารถทำให้สิ่งนี้ง่ายขึ้นด้วยตัวคุณเองโดยไม่วนซ้ำกับงานแรก:

  งาน:
    - ชื่อ: รับค่าระบบไฟล์
      ระดับ:
        vg: "{{ mount_dev_split.0 }}"
        lv: "{{ mount_dev_split.1 ~ lv_name_suffix }}"
      วาร์:
        mount_dev: "{{ (ansible_facts.mounts | selectattr('mount', 'equalto', MT) | list).0.device }}"
        mount_dev_split: "{{ (mount_dev | ชื่อฐาน).split('-') }}"
        lv_name_suffix: "{{ ('-' ~ mount_dev_split.3 | default('')) if '--' in mount_dev else '' }}"
      ลงทะเบียน: myfs

    - แก้ปัญหา:
        msg: "{{ myfs.lv }}"
azk avatar
ph flag
azk
ดี. ก่อนอื่น ขอบคุณมาก!
azk avatar
ph flag
azk
ดี. ก่อนอื่น ขอบคุณมาก! คุณทำให้มันง่ายขึ้นมากด้วยวิธีนี้ ฉันยังใหม่กับ Ansible และมีองค์ประกอบที่ฉันไม่ถนัด ฉันขอขอบคุณสำหรับความช่วยเหลือของคุณ ขอบคุณอีกครั้ง!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา