Saturday, January 18, 2025

[Ansible] Một tips chạy Ansible playbook

-

Truyền host trực tiếp.

Bạn có thể truyền host trực tiếp vào khi chạy playbook bằng cách sử dụng tùy chọn -i (inventory) như sau:

ansible-playbook -i "192.168.1.10," playbook.yml

Trong đó 192.168.1.10 là địa chỉ IP của host bạn muốn thực hiện playbook. Chú ý dấu phẩy , sau địa chỉ IP để đánh dấu rằng chỉ có 1 host được truyền vào. Nếu bạn muốn truyền nhiều host, chỉ cần thêm các địa chỉ IP cách nhau bằng dấu phẩy và không có khoảng trắng. Ví dụ:

ansible-playbook -i "192.168.1.10,192.168.1.20,192.168.1.30" playbook.yml

Ngoài ra, bạn cũng có thể sử dụng tùy chọn -l (limit) để chỉ định một hoặc nhiều host muốn thực hiện playbook. Ví dụ:

ansible-playbook -i inventory.yml -l webserver playbook.yml

Trong đó inventory.yml là file mô tả các host trong inventory, webserver là tên của group hoặc tên của host muốn thực hiện playbook.

Truyền tham số remote server, username và mật khẩu của remote server.

Để chạy playbook Ansible với tham số remote server, username và mật khẩu của remote server, bạn có thể sử dụng cú pháp như sau:

ansible-playbook -i <inventory file> <playbook file> --extra-vars "ansible_user=<remote user> ansible_ssh_pass=<remote password>"

Trong đó:

  • <inventory file> là file chứa danh sách các máy chủ mà playbook sẽ chạy lên.
  • <playbook file> là tên của playbook mà bạn muốn chạy.
  • <remote user> là tên người dùng của máy chủ từ xa mà bạn muốn kết nối.
  • <remote password> là mật khẩu người dùng của máy chủ từ xa mà bạn muốn kết nối.

Ví dụ, nếu bạn muốn chạy playbook setup.yml trên máy chủ webserver với người dùng ubuntu và mật khẩu password123, bạn có thể sử dụng cú pháp sau:

ansible-playbook -i inventory.ini setup.yml --extra-vars "ansible_user=ubuntu ansible_ssh_pass=password123"

Lưu ý rằng, cách này không được khuyến khích vì nó có thể gây lỗ hổng bảo mật. Thay vào đó, bạn nên sử dụng SSH Key-based authentication hoặc các phương pháp xác thực bảo mật khác để kết nối đến các máy chủ từ xa.

Truyền tham số ssh port.

Để thêm thông tin cổng SSH khi chạy Ansible playbook, bạn có thể sử dụng option -e (hoặc --extra-vars) để chỉ định biến môi trường ansible_ssh_common_args. Biến môi trường này cho phép bạn thêm các thông số tùy chỉnh cho lệnh SSH được sử dụng bởi Ansible.

Ví dụ, nếu bạn muốn sử dụng cổng SSH là 2222, bạn có thể sử dụng câu lệnh sau:

ansible-playbook -i inventory.ini playbook.yml -e "ansible_ssh_common_args='-p 2222'"

Trong đó:

  • inventory.ini là file chứa danh sách các máy chủ mà playbook sẽ chạy lên.
  • playbook.yml là tên của playbook mà bạn muốn chạy.
  • -e hoặc --extra-vars cho phép bạn chỉ định các biến môi trường tùy chỉnh cho Ansible.
  • ansible_ssh_common_args là biến môi trường để chỉ định các tham số tùy chỉnh cho lệnh SSH được sử dụng bởi Ansible.
  • '-p 2222' là tham số để chỉ định cổng SSH là 2222.

Lưu ý rằng, để sử dụng cổng SSH tùy chỉnh này, bạn cần đảm bảo rằng cổng này đã được mở trên máy chủ từ xa và được phép truy cập từ máy chủ Ansible.

Ví dụ sau đây sẽ có đủ thông tin port ssh, username, password.

ansible-playbook playbook.yml -i "192.168.13.213," --extra-vars "ansible_user=root ansible_ssh_pass=hoanghd" -e "ansible_ssh_common_args='-p 8022'"

Đây là một câu lệnh chạy playbook của Ansible với các thông số sau:

  • playbook.yml là tên của playbook mà bạn muốn chạy.
  • -i "192.168.13.213," khai báo địa chỉ IP của máy chủ mà playbook sẽ chạy, trong trường hợp này là 192.168.13.213. Dấu phẩy ở cuối chỉ ra rằng đây là một danh sách máy chủ, dù trong trường hợp này chỉ có một máy chủ duy nhất.
  • --extra-vars "ansible_user=root ansible_ssh_pass=hoanghd" khai báo các biến môi trường (environment variables) bổ sung để sử dụng trong playbook. Trong trường hợp này, ansible_user được đặt là root, tức là sử dụng tài khoản root để đăng nhập vào máy chủ, và ansible_ssh_pass được đặt là hoanghd, tức là sử dụng mật khẩu hoanghd để đăng nhập.
  • -e "ansible_ssh_common_args='-p 8022'" khai báo các biến môi trường bổ sung khác. Trong trường hợp này, ansible_ssh_common_args được đặt là -p 8022, tức là sử dụng cổng 8022 để kết nối SSH đến máy chủ.

Với các thông số trên, Ansible sẽ thực thi playbook playbook.yml trên máy chủ có địa chỉ IP là 192.168.13.213, sử dụng tài khoản root và mật khẩu hoanghd, kết nối SSH đến cổng 8022.

Bạn có thể khai báo các thông tin remote server, SSH port, tên đăng nhập và mật khẩu trong file inventory của Ansible.

Cú pháp để khai báo một máy chủ trong file inventory như sau:

[group_name]
host1 ansible_ssh_host=remote_server ansible_ssh_port=ssh_port ansible_ssh_user=remote_user ansible_ssh_pass=remote_pass

Trong đó:

  • group_name là tên nhóm máy chủ của bạn.
  • host1 là tên của máy chủ trong nhóm đó.
  • ansible_ssh_host là địa chỉ IP hoặc tên miền của máy chủ.
  • ansible_ssh_port là cổng SSH để kết nối đến máy chủ.
  • ansible_ssh_user là tên đăng nhập để đăng nhập vào máy chủ.
  • ansible_ssh_pass là mật khẩu để đăng nhập vào máy chủ.

Ví dụ, nếu bạn muốn khai báo máy chủ có địa chỉ IP là 192.168.1.100, cổng SSH là 2222, tên đăng nhập là remote_user và mật khẩu là remote_pass, bạn có thể thêm dòng sau vào file inventory:

[web_servers]
web1 ansible_ssh_host=192.168.1.100 ansible_ssh_port=2222 ansible_ssh_user=remote_user ansible_ssh_pass=remote_pass

Sau đó, trong playbook của bạn, bạn có thể sử dụng tên nhóm web_servers và tên máy chủ web1 để thực hiện các tác vụ trên máy chủ đó.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories