Score:0

บทบาท Ansible เป็นไปได้ไหมที่จะกำหนดตัวแปรแบบมีเงื่อนไข?

ธง ng

ฉันมีบทบาท Ansible ที่ใช้ตัวแปรจำนวนมาก และเนื่องจากตัวแปรเหล่านั้นถูกกำหนดเงื่อนไขหลังจากการกำหนดค่าเซิร์ฟเวอร์ (เช่น เวอร์ชันระบบปฏิบัติการที่ใช้) ไดเร็กทอรี "MyRole/vars" ของฉันจึงเต็มไปด้วยไฟล์ต่างๆ สำหรับกรณีต่างๆ

ใน "MyRole/vars" ฉันมี:

  • RedHat6_install.yml
  • Redhat7_install.yml
  • RedHat8_install.yml
  • RedHat6_uninstall.yml
  • RedHat7_uninstall.yml
  • RedHat8_uninstall.yml

และอื่นๆ...

ฉันสงสัยว่าเป็นไปได้ไหมที่จะจัดกลุ่มตัวแปรในไฟล์เดียวและสร้างเงื่อนไขสำหรับมันเช่น:

main.yml:

    - uninstall_var_1
      เมื่อ: >
            ansible_distribution_major_version == 6
    - uninstall_var_2
      เมื่อ: >
            ansible_distribution_major_version == 7
    - uninstall_var_3
      เมื่อ: >
            ansible_distribution_major_version == 8

และอื่น ๆ ...
br flag
ดู[al_include_os_vars_path.yml](https://github.com/vbotka/ansible-lib/blob/master/tasks/al_include_os_vars_path.yml) วิธีใช้ *first_found* และ [al_include_os_vars_path_incr.yml](https://github. com/vbotka/ansible-lib/blob/master/tasks/al_include_os_vars_path_incr.yml) เพื่อรวมส่วนเพิ่ม
Score:0
ธง cz

อาจมีวิธีที่ดีกว่าในการทำเช่นนี้และฉันหวังว่าจะได้เห็น แต่สิ่งที่ฉันกำลังทำอยู่มีลักษณะเช่นนี้มาก นำมาจากบทบาท fail2ban ที่กำหนดเองที่ฉันใช้:

วาร์มีลักษณะเช่นนี้ ฉันมีไฟล์ vars สำหรับแต่ละไฟล์ {{ansible_os_family}} แล้วแทนที่ใดๆ {{ansible_distribution}}_{{ansible_distribution_major_version}} ที่อาจต้องการพวกเขา

$ ls -l
lrwxrwxrwx. 1 ข้อผิดพลาด ข้อผิดพลาด 24 7 พฤษภาคม 07:51 ล้มเหลว2ban_os_CentOS_6.yml -> ล้มเหลว2ban_os_RedHat_6.yml
lrwxrwxrwx. 1 ข้อผิดพลาด ข้อผิดพลาด 22 7 พฤษภาคม 07:51 ล้มเหลว2ban_os_CentOS.yml -> ล้มเหลว2ban_os_RedHat.yml
-rw-rw-r--. 1 ข้อผิดพลาด ข้อผิดพลาด 64 7 พฤษภาคม 07:51 fail2ban_os_Debian.yml
-rw-rw-r--. 1 ข้อผิดพลาด ข้อผิดพลาด 64 7 พฤษภาคม 07:51 ล้มเหลว2ban_os_Fedora.yml
-rw-rw-r--. 1 ข้อผิดพลาด ข้อผิดพลาด 62 7 พฤษภาคม 07:51 fail2ban_os_RedHat_6.yml
-rw-rw-r--. 1 ข้อผิดพลาด ข้อผิดพลาด 64 7 พฤษภาคม 07:51 fail2ban_os_RedHat.yml
-rw-rw-r--. 1 ข้อผิดพลาด ข้อผิดพลาด 62 7 พฤษภาคม 07:51 ล้มเหลว2ban_os_Ubuntu_14.yml
-rw-rw-r--. 1 ข้อผิดพลาด ข้อผิดพลาด 65 7 พฤษภาคม 07:51 ล้มเหลว2ban_os_Ubuntu.yml
$ cat fail2ban_os_Ubuntu.yml 
fail2ban_backend: systemd
Failed2ban_banaction: iptables-หลายพอร์ต
$ cat ล้มเหลว2ban_os_Fedora.yml 
fail2ban_backend: systemd
fail2ban_banaction: firewallcmd-ipset

ในการโหลดไฟล์เหล่านี้ บทบาท/fail2ban/tasks/main.yml เริ่มต้นดังนี้:

---
- include_vars: fail2ban_os_{{ansible_os_family}}.yml
  เพิกเฉยต่อข้อผิดพลาด: จริง

- include_vars: fail2ban_os_{{ansible_distribution}}_{{ansible_distribution_major_version}}.yml
  เพิกเฉยต่อข้อผิดพลาด: จริง

ซึ่งหมายความว่าไม่จำเป็นต้องมีไฟล์ตัวแปร แน่นอน ถ้าตัวแปรที่ต้องการไม่ได้กำหนดไว้ที่ไหนสักแห่ง งานต่อมาจะล้มเหลว จากนั้นคุณก็ไปกำหนดสิ่งที่คุณพลาดไป

เพื่อให้สิ่งต่าง ๆ สอดคล้องและบำรุงรักษาได้ ไฟล์ vars ตระกูล OS ทั่วไปมี vars ที่แสดง distros ที่รองรับล่าสุด และการแทนที่สำหรับเวอร์ชัน distro เฉพาะนั้นมีไว้สำหรับ distros รุ่นเก่า

โพสต์คำตอบ

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