Ansible #3 ตอน Quick Start กับ Ansible
ตอนแรกคิดว่าจะเขียนให้เป็นขั้นเป็นตอน เรียนรู้ทฤษฎีให้เต็มที่แล้วค่อยลงมือใช้งานกัน แต่พอเตรียมหัวข้อตามที่วางแผนไว้ คิดว่ากว่าจะได้ลงมือใช้งาน Ansible กันได้จริงคงจะอีกหลายเดือน ก็เลยเปลี่ยนแผน มาแนะนำวิธีการใช้งานในเบื้องต้นกันให้เห็นภาพกันก่อน ถ้าจะใช้งาน Ansible แบบง่าย ๆ จะเริ่มต้นกันอย่างไร
คำสั่งและศัพท์ที่เบื้องต้นในการใช้งานที่จะแนะนำมีโครงสร้างดังนี้
$ ansible pattern -i <inventory file> [option]ตัวอย่าง$ ansible web -i myhost -m ping
จากตัวอย่างอธิบายแต่ละค่าในดังอย่างได้ดังนี้
- ansible เป็นหนึ่งในชุดคำสั่งใน Ansible ที่ทำงานในลักษณะ ad-hoc คือทำงานเพียงอย่างเดียวตามที่กำหนดให้เท่านั้น ซึ่งการใช้งานโดยทั่วไปเราสามารถกำหนดให้ Ansible ทำงานเพียงงานเดียว, ทำงานหลาย ๆ งานติดต่อกัน หรือ กำหนดเงื่อนไขในการทำงานในแต่ละงานที่สั่งก็ได้
- web เป็นส่วนของคำสั่งที่เรียกว่า pattern หรือในบางเอกสารเรียกว่า host-pattern ในการเรียกคำสั่ง ansible ครั้งเดียว สามารถกำหนดให้ ansible เข้าไปทำงานที่ host ได้มากกว่ากว่าหนึ่ง host ด้วยการสั่งเพียงครั้งเดียว โดยการเลือก host เหล่านั้นด้วย pattern เช่น web เพื่อบอกว่าเลือกจะจัดการกับกลุ่มของ host ที่ชื่อว่า web ซึ่งถูกนิยามไว้ใน inventory ซึ่งจะอธิบายในหัวข้อถัดไป หรือ กำหนด pattern เป็น 192.168.1.1–20 เพื่อเลือกที่จะจัดการกับ host ที่มี ip 192.168.1.1,192.168.1.2 ถึง. 192.168.1.20
- -i <inventory> เป็นส่วนของคำสั่งที่จะระบุถึงที่เก็บข้อมูลของ host และคุณลักษณะของ host รวมถึงตัวแปรต่าง ๆ ที่นิยามไว้สำปรับใช้งาน ซึ่งสามารถกรองกลุ่มของ host ได้ด้วยกำหนด pattern ได้
- option เป็นส่วนของคำสั่งที่จะกำหนดงานให้ ansible ทำงาน หรือ กำหนดความสามารถเพิ่มเติมโดยการเรียกใช้งาน module (จะอธิบายในหัวข้อถัดไป) ตัวอย่าง option
-m <module> -a <module argument> เป็น option สำหรับเรียกใช้งาน module
-u <user> เป็น option สำหรับกำหนด user ที่จะเชื่อมต่อและทำงานใน host ปลายทาง
-k เป็น option สำหรับบอกให้คำสั่ง ansible รอรับรหัสผ่านในการเชื่อมต่อไปยัง host ปลายทาง
สุดท้าย คำสั่งแรกหลังจากติดตั้ง ansible เสร็จเรียบร้อย โดยยังไม่ต้องกำหนดค่าอะไรเพิ่มเติม สำหรับ OS ในตระกูล RHEL/CentOS/Fedora และยังเป็นการทดสอบในเบื้องต้นว่า ansible พร้อมสำหรับเรียกใช้งาน
$ ansible localhost -m ping -k
SSH password: <enter your current user’s password>[WARNING]: Could not match supplied host pattern, ignoring: all
[WARNING]: provided hosts list is empty, only localhost is availablelocalhost | SUCCESS => {
"changed": false,
"failed": false,
"ping": "pong"
}$ ansible localhost -m command -a 'ls -la' -k
SSH password: <enter your current user’s password>[WARNING]: Could not match supplied host pattern, ignoring: all
[WARNING]: provided hosts list is empty, only localhost is availablelocalhost | SUCCESS | rc=0 >>
total 16
drwx------. 3 centos centos 99 Jan 2 23:52 .
drwxr-xr-x. 3 root root 20 Oct 25 22:53 ..
drwx------. 3 centos centos 17 Jan 2 23:52 .ansible
-rw-------. 1 centos centos 13 Jan 2 23:50 .bash_history
-rw-r--r--. 1 centos centos 18 Aug 3 04:11 .bash_logout
-rw-r--r--. 1 centos centos 193 Aug 3 04:11 .bash_profile
-rw-r--r--. 1 centos centos 231 Aug 3 04:11 .bashrc
หมายเหตุ ใน Linux บางตระกูลเช่น Ubuntu จะยังไม่สามารถใช้งานได้ เนื่องจาก Python ไม่ได้ถูกติดตั้งโดย Default