จัดการ Server ง่ายๆด้วย Ansible Automation

ในกรณีที่เราต้องทำการติดตั้งระบบที่พัฒนาขึ้นให้ลูกค้า หลายๆครั้ง หลังจากเราลง OS บน VM หรือ Bare Metal ของเราแล้ว ก่อนที่เราจะเอาแอพพลิเคชั่นที่เราพัฒนาขึ้นไป deploy ได้ เราจะต้องทำขั้นตอนหลายขั้นเพื่อให้ server มี environment ที่แอพพลิเคชั่นต้องใช้ และมีความปลอดภัยไปพร้อมกันๆ

การทำขั้นตอนซ้ำๆอย่างนี้ให้ลูกค้าหลายๆเจ้า ผมว่ามันน่าเบื่อและน่าจะมีวิธีที่ทำให้มันง่ายและรวดเร็วกว่านี้ ผมจึงได้ลองค้นหาเครื่องมือมาช่วยและก็ไปเจอกับ Ansible!

Ansible คือ IT Automation Tool ที่ให้คุณสามารถเขียนไฟล์ Playbook เพื่อให้ Ansible ทำ task ต่างๆให้ จุดเด่นของมันก็คือ หลังจากคุณเขียนไฟล์ playbook ครั้งแรกแล้ว คุณสามารถเอาไปรันที่ไหนเลยก็ได้

ถึงจุดนี้แล้วหลายคนคงคิดว่ามันแตกต่างจากเขียน script shell หรือ cmd ทั่วไปยังไงใช่ไหมครับ คำตอบก็คือ ต่างกันเยอะมาก

  1. Ansible Playbook เขียนแบบ yaml เพราะฉะนั้นมันจะอ่านง่ายมาก
  2. มี modules หรือ tasks ที่ ansible เขียนมาให้อยู่แล้ว (list ของ modules) เช่นเราต้องการให้ทำการรัน service httpd ก็แค่เขียน tasks ว่า
    - name: start httpd
      service: name=httpd state=running
  3. รู้ว่าควรจะทำ task หรือไม่ เช่นตัวอย่างข้างบน ถ้า httpd มันรันอยู่แล้ว ansible ก็จะไม่รันซ้ำ ตัวนี้ดีมากๆในเคสที่เราไม่ควรจะทำซ้ำ เราสามารถเขียน condition ให้มันเช็คก่อนว่าต้องทำไหม แต่ในหลายๆครั้ง modules ของ ansible จะทำการเช็คให้เราอัตโนมัติเลยนะเออ
  4. Inventory หรือรายชื่อคอมพิวเตอร์หรือ server ที่เราต้องการจะรัน playbook นั้นเอง ความหมายก็คือเราไม่ต้องลง ansible ในทุก server ขอแค่คอมหลักที่เราลง ansible ไว้สามารถ access ansible ผ่าน ssh ได้ก็เพียงพอแล้ว
  5. ฉลาดมาก นอกจากเราไม่ต้องกังวลว่ามันจะทำ tasks ทำเมื่อเรารันใหม่อีกครั้ง มันยังรู้ด้วยว่า OS ที่เราสั่งให้ Playbook รันนั้น เป็น OS อะไร แล้วควรใช้ command ไหน

ยังมีอีกหลายอย่างที่คุณสามารถใช้ Ansible ทำได้ ถ้ามีโอกาสผมจะมาเขียนวิธี setup ansible และเคสการใช้งานให้ดูนะครับ ส่วนตอนนี้ลองโหลดไปเล่นกันดูก่อนได้ที่ https://www.ansible.com

 

 

Add Comment