ใช้งาน Ansible แบบง่ายๆ


Ansible

  • เป็น Automate Engine
  • สามารถทำตัวเองเป็น Software Provisioning ทำการสร้าง Droplet หรือ VM ขึ้นมาได้
  • Open Source
  • agentless แปลว่า ไม่จำเป็นต้องมีอะไรอยู่ในเครื่องปลายทางก็สามารถ สั่งทำอะไรได้
  • เขียนด้วย Python กล่าวคือ เครื่องไหนที่มี Python สามารถ ใช้งานมันได้

ทำไมถึงต้องใช้มัน ?

เช่น เราเจอปัญหาว่าเรามี server สำหรับ deploy หลายตัว และ หลาย environment ซึ่ง อาจจะเขียน เป็น ไฟล์ shell แล้วให้ jenkin ไปเรียกใช้ไฟล์นั้นก็ได้ แต่พอดีไปเจอ Tool ตัวนี้มา เลยลองใช้ดู

Step 1 Install Ansible

อันนี้ ได้ทำการ สร้าง server เพื่อใช้ งาน ansible เลย

$ apt install ansible -y

เมื่อติดตั้งเสร็จ ลอง เช็คด้วย

$ ansible --version

output

$ ansible --version
...
ansible 2.9.6
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.2 (default, Apr 27 2020, 15:53:34) [GCC 9.3.0]

Step 2 เพิ่ม host ที่เตรียมไว้ สำหรับ deploy

$ vi /etc/ansible/hosts

จากนั้น เพิ่ม ( อันนี้จริงๆ เขาไป set ใน playbook.yml แทนก็ได้ )

<name อะไรก็ได้> 
ansible_ssh_private_key_file=<key> 
ansible_python_interpreter=<python เครื่องdeploy>  
ansible_ssh_user=<user> 
ansible_ssh_host=<host>

หลังจากเพิ่ม ลองทดสอบดู host ที่เพิ่ม

$ ansible --list-host all

output

$ ansible --list-host all  
hosts (1):    
service1

หรือ ลอง ping หา เครื่องที่เพิ่มได้เลยด้วย ( เครื่องปลายทางต้องมี python ด้วย )

$ ansible -m ping all

หรือ ระบุ namehost

$ ansible -m ping service1

output

$ ansible -m ping service1
...
service1 | SUCCESS => {    "changed": false,    "ping": "pong"}

หรือ เราสามารถใช้ shell ใน เครื่องปลายทางได้แบบนี้

$ ansible -m shell -a '<คำสั่ง shell ที่จะใช้>' <namehost ที่ตั้ง>

ex.

$ ansible -m shell -a 'free -m' server1