Ansible Cho Người Mới Bắt Đầu

Ansible thực hiện triển khai cài đặt, cấu hình, và là công cụ điều phối orchestration. Nó giao tiếp với máy khách thông qua SSH, bởi thế không cần cài đặt bất kỳ agent trên máy khách. Nó cũng sử dụng cú pháp YAML để viết kịch bản playbook - tập tinh định nghĩa/ khai báo về cấu hình, triển khai - do vậy nó dễ dàng để viết và đọc hiểu bởi con người.

Cuối cùng nhưng không kém phần quan trọng, Ansible giúp bạn quản lý hạ tầng như code infrastructure as a codebase, do đó bạn có thể quản lý phiên bản và tái sử dụng.

Ansible Hoạt Động Thế Nào?

Nói chung, Ansible có ba thành phần: máy chủ Ansible, máy khách, và tập tin playbook. Kịch bản triển khai của bạn sẽ khai báo trong tập tin playbook, sau đó Ansible sẽ chuyển kịch bản này đến máy chủ khách thông qua giao thức SSH và triển khai nó.

Cài Đặt Ansible

Bước 1 - Cài Đặt Ansible
Với Ubuntu 18.04 LTS, phiên bản Ansible mặc định là 2.5, tất nhiên, đây là phiên bản đang hoàn thiện bởi lập trình viên. Bởi thế, bạn nên cài đặt phiên bản ổn định stable 2.4. Giờ thêm ansible 2.4 repository.

[email protected]:~$ sudo add-apt-repository ppa:ansible/ansible-2.4
[email protected]:~$ sudo apt-get update
[email protected]:~$ sudo apt-cache show ansible
Package: ansible
Architecture: all
Version: 2.5.1+dfsg-1

Package: ansible
Priority: optional
Section: admin
Installed-Size: 21731
Maintainer: Ansible, Inc. info@ansible.com
Architecture: all
Version: 2.4.6.0-1ppa~bionic

Tiếp theo, bạn cài đặt Ansible

[email protected]:~$ sudo apt-cache policy ansible
ansible:
Installed: (none)
Candidate: 2.5.1+dfsg-1
Version table:
2.5.1+dfsg-1 500
500 http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu bionic/universe i386 Packages
2.4.6.0-1ppa~bionic 500
500 http://ppa.launchpad.net/ansible/ansible-2.4/ubuntu bionic/main amd64 Packages
500 http://ppa.launchpad.net/ansible/ansible-2.4/ubuntu bionic/main i386 Packages
[email protected]:~$ sudo apt-get install ansible=2.4.6.0-1ppa~bionic
[email protected]:~$ ansible --version
ansible 2.4.6.0
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/skylab/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]

Bước 2 - Tạo tập tin Ansible host
Ansible chứa thông tin máy khách, bao gồm hostname và địa chỉ IP tại tập tin /etc/ansible/hosts

Có hai cách để tạo nội dung theo cú pháp cho tập tin /etc/ansible/hosts

[group name]
your_server_ip

[group name]
alias ansiblesshhost=yourserverip

Triển khai thực tế
[email protected]:~$ sudo vim /etc/ansible/hosts

[client]
10.10.1.97

[client]
client1 ansiblesshhost=10.10.1.97

Bước 3 - Tạo SSH key cho Ansible
Tiếp theo, tạo tập tin SSH authorized_keys trên máy khách, bạn có thể dùng công cụ ssh-copy-id để di chuyển SSH public key từ máy chủ Ansible tới máy khách. Nhưng, từ phiên bản Ubuntu 16.04, bạn gặp khó khăn,bởi vì truy cập với root đã bị giới hạn ngăn chặn bời lựa chọn PermitRootLogin prohibit-password tại vùng Authentication trong tập tin cấu hình SSH /etc/ssh/sshd_config. Nó có nghĩa SSH duy nhất cho phép thiết lập và tạo kết nối với SSH key.

Tiếp theo, tạo SSH authorized_keys cho tài khoản root

[email protected]:~# touch ~/.ssh/authorizedkeys; chmod 644 ~/.ssh/authorizedkeys; vim ~/.ssh/authorized_keys

Sau đó chép SSH public key (~/.ssh/id_rsa.pub) của máy chủ Ansible tới authorized_keys của máy khách. Tới đây, kết nối giữa máy chủ Ansible và máy khách đã thực hiện được, khai báo thiết lập thành công.

[email protected]:~$ ssh [email protected] [email protected]:~#

Bước 4 - Truy cập vào máy khách
Mặc định, Ansible sẽ truy cập vào máy khách thông qua tài khoản root. Điều này là hợp lý, bởi vì bạn đã thêm Ansible public key tới authorized_keys của root ở bước 3. Nhưng, mặc định, Ansible sẽ cố gắng truy cập với tài khoản người dùng hiện tại ở máy chủ Ansible. Bởi vậy, cố gắng truy cập sẽ gặp lỗi:

[email protected]:~$ ansible -i /etc/ansible/hosts -m ping all
client1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: [email protected]: Permission denied (publickey,password).\r\n",
"unreachable": true
}

bài đang viết, vui lòng chờ để đọc bản hoàn thiện

Tien Phan

Read more posts by this author.

Subscribe to

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!