หากคุณต้องการกำหนดค่าชุดคุณสมบัติบรรทัด = ค่าที่ไม่ซ้ำกันฉันขอแนะนำให้มีการวนซ้ำกระชับมากขึ้น ตัวอย่างเช่น:
- name: Configure kernel parameters
lineinfile:
dest: /etc/sysctl.conf
regexp: "^{{ item.property | regex_escape() }}="
line: "{{ item.property }}={{ item.value }}"
with_items:
- { property: 'kernel.shmall', value: '2097152' }
- { property: 'kernel.shmmax', value: '134217728' }
- { property: 'fs.file-max', value: '65536' }
ใช้ dict ตามที่ Alix Axel แนะนำและเพิ่มการลบรายการที่ใส่เครื่องหมายคอมเม้นท์ออกโดยอัตโนมัติ
- name: Configure IPV4 Forwarding
lineinfile:
path: /etc/sysctl.conf
regexp: "^#? *{{ item.key | regex_escape() }}="
line: "{{ item.key }}={{ item.value }}"
with_dict:
'net.ipv4.ip_forward': 1
template
แต่ใช้lineinfile
เป็นantipattern นอกจากนี้ยังมีการตั้งค่าสถานะสีแดงที่แข็งแกร่งที่คุณ "ไม่ทราบว่ามีอะไรในไฟล์" ซึ่งนำไปสู่ความเสี่ยงที่สำคัญของความล้มเหลวที่ไม่รู้จัก