Ansible กลายเป็น Directive เพื่อเรียกใช้คำสั่งตามที่ระบุผู้ใช้

Ansible Become Directive Run Commands



เมื่อใช้ 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 และอื่นๆ มาใช้งาน

  1. กลายเป็น_เมธอด : ตั้งค่าวิธีการยกระดับสิทธิ์ เช่น su หรือ sudo
  2. คำสั่งกลายเป็น_user : ระบุผู้ใช้เพื่อเรียกใช้คำสั่งเป็น; นี้ไม่ได้หมายความถึงกลายเป็น: ใช่
  3. กลายเป็น_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