เมื่อใช้ Ansible คุณสามารถดำเนินการต่างๆ บนเครื่องระยะไกลได้โดยใช้คำสั่ง raw หรือ Ansible playbook โดยค่าเริ่มต้น Ansible playbook จะทำงานบนโฮสต์ระยะไกลในฐานะผู้ใช้เดียวกันบนตัวควบคุม Ansible นั่นหมายความว่า หากคุณต้องการเรียกใช้คำสั่งในฐานะผู้ใช้อื่นบนเครื่องระยะไกล คุณจะต้องระบุคำสั่งนั้นอย่างชัดเจนใน Ansible playbook ของคุณ
ในการใช้ฟังก์ชันการทำงานของคำสั่งที่รันในฐานะผู้ใช้รายอื่น คุณจะต้องใช้คุณสมบัติ sudo ที่มีอยู่ในระบบ Linux Ansible กลายเป็น directive ให้คุณเรียกใช้คำสั่งในฐานะผู้ใช้ที่ระบุ
ข้อมูลของผู้ใช้ถูกระบุใน Ansible playbook โดยใช้ตัวแปร become เช่น become_pass เพื่อระบุรหัสผ่านของผู้ใช้ become_user และผู้ใช้รายใดสามารถเรียกใช้คำสั่งได้
วิธีเรียกใช้ Ansible Tasks เป็นรูท
ในการรันคำสั่งเฉพาะในฐานะผู้ใช้รูทใน Ansible คุณสามารถใช้คำสั่ง become และตั้งค่าเป็น 'true' ได้ การทำเช่นนี้บอกให้ Ansible ใช้ sudo โดยไม่มีอาร์กิวเมนต์เมื่อรันคำสั่ง
ตัวอย่างเช่น ลองใช้ Ansible playbook ที่อัปเดตแพ็คเกจเซิร์ฟเวอร์ MySQL แล้วรีสตาร์ท ในการดำเนินการตามปกติของ Linux คุณจะต้องเข้าสู่ระบบในฐานะผู้ใช้รูทเพื่อดำเนินการดังกล่าว ใน Ansible คุณสามารถเรียก be: yes directive ดังที่แสดงด้านล่าง:
- เจ้าภาพ: ทั้งหมด
กลายเป็น:ใช่
งาน:
- ชื่อ: Ansible runเช่นรูทและอัปเดต sys
ยำ:
ชื่อ: mysql-เซิร์ฟเวอร์
รัฐ: ล่าสุด
- ชื่อ:
บริการ.บริการ:
ชื่อ: mysqld
สถานะ: เริ่มใหม่
ใน playbook ด้านบน เราใช้ be directive และไม่ได้ระบุผู้ใช้ become_user เนื่องจากคำสั่งใดๆ ภายใต้ be directive จะถูกเรียกใช้เป็น root โดยค่าเริ่มต้น
ซึ่งคล้ายกับการระบุว่าเป็น:
- เจ้าภาพ: ทั้งหมด
กลายเป็น:ใช่
กลายเป็น_user: root
งาน:
- ชื่อ: Ansible runเช่นรูทและอัปเดต sys
ยำ:
ชื่อ: mysql-เซิร์ฟเวอร์
รัฐ: ล่าสุด
- ชื่อ:service.service:
ชื่อ: mysqld
สถานะ: เริ่มใหม่
วิธีเรียกใช้ Ansible Tasks เป็น Sudo
ในการรันงาน Ansible ในฐานะผู้ใช้เฉพาะ แทนที่จะเป็นผู้ใช้รูทปกติ คุณสามารถใช้คำสั่ง become_user และส่งชื่อผู้ใช้ของผู้ใช้เพื่อดำเนินงานได้ นี่เหมือนกับการใช้คำสั่ง sudo -u ใน Unix
ในการนำคำสั่ง be_user ไปใช้ คุณต้องเปิดใช้งานคำสั่ง become ก่อน เนื่องจาก become_user ไม่สามารถใช้งานได้หากไม่มีการเปิดใช้งานคำสั่งนี้
พิจารณา playbook ต่อไปนี้ ซึ่งคำสั่งถูกเรียกใช้ในฐานะผู้ใช้ไม่มีใคร
- ชื่อ: Run aสั่งการ เช่นผู้ใช้รายอื่น(ไม่มีใคร)สั่งการ:ปลของ
กลายเป็น:จริง
กลายเป็น_เมธอด:ของมัน
กลายเป็น_user:ไม่มีใคร
กลายเป็น_flags:'-s /bin/bash'
ในข้อมูลโค้ด playbook ด้านบน เราได้นำคำสั่ง become, become_user และอื่นๆ มาใช้งาน
- กลายเป็น_เมธอด : ตั้งค่าวิธีการยกระดับสิทธิ์ เช่น su หรือ sudo
- คำสั่งกลายเป็น_user : ระบุผู้ใช้เพื่อเรียกใช้คำสั่งเป็น; นี้ไม่ได้หมายความถึงกลายเป็น: ใช่
- กลายเป็น_flags : ตั้งค่าแฟล็กที่จะใช้สำหรับงานที่ระบุ
ตอนนี้คุณสามารถเรียกใช้ playbook ด้านบนด้วย ansible-playbook filename.yml และดูผลลัพธ์ด้วยตัวคุณเอง สำหรับงานที่มีเอาต์พุต คุณอาจต้องใช้โมดูลการดีบัก
วิธีเรียกใช้ Ansible กลายเป็นด้วยรหัสผ่าน
ในการเรียกใช้คำสั่ง become ที่ต้องใช้รหัสผ่าน คุณสามารถบอกให้ Ansible ขอรหัสผ่านเมื่อเรียกใช้ playbook ที่ระบุ
ตัวอย่างเช่น หากต้องการเรียกใช้ playbook ด้วยรหัสผ่าน ให้ป้อนคำสั่งด้านล่าง:
ansible-playbookกลายเป็น_pass.yml--ask-กลายเป็น-passคุณยังสามารถระบุแฟล็ก -K ซึ่งดำเนินการคล้ายกับคำสั่งด้านบน ตัวอย่างเช่น:
ansible-playbookกลายเป็น_pass.yml-ถึงเมื่อระบุแล้ว คุณจะได้รับแจ้งให้ป้อนรหัสผ่านเมื่องานต่างๆ กำลังดำเนินการ
บันทึก : คุณยังสามารถใช้คำสั่ง become ในคำสั่ง raw ของ Ansible AD HOC โดยใช้แฟล็ก -b หากต้องการเรียนรู้เพิ่มเติม โปรดดูเอกสารที่ให้ไว้ด้านล่าง:
https://linkfy.to/becomeDocumentation
บทสรุป
หลังจากอ่านบทความนี้ คุณควรทราบวิธีใช้คำสั่ง Ansible BECOME เพื่อดำเนินการยกระดับสิทธิ์สำหรับงานต่างๆ
ด้วยเหตุผลด้านความปลอดภัย ควรใช้ข้อจำกัดสำหรับบัญชีต่างๆ และระบุให้ชัดเจนว่าจะใช้เมื่อใด ดังนั้นการเพิ่มสิทธิพิเศษจึงเป็นส่วนสำคัญของการใช้ sudo และ su ใน Ansible