Chuyện của sys

DevOps Blog

[Configuration Management] ANSIBLE TOOL September 23, 2017

Chào các bạn!

Là dân system chắc là các bạn cũng đã từng nghe nhắc nhiều đến cụm từ “Configuration Management” hoăc cứ google là ra hàng tá bài viết liên quan.

Vâng! Configuration Management (CM) có thể hiểu là công cụ hỗ trợ, cấu hình, cài đặt hệ thống một cách tự động. Có rất nhiều công cụ như Ansible, Chef, Puppet, Saltstack … Loạt bài viết này sẽ không tập trung vào việc so sánh các công cụ CM mà chỉ hướng dẫn bạn cách cài đặt và sử dụng Ansible.


1. Ansible là cái gì?

Ansible  có thể hiểu nôm na là  công cụ  dùng để quản lý cài đặt, cấu hình hệ thống một cách tập trung và cho phép thực thi câu lệnh điều khiển.

2. Ansible có những tính năng gì hay ho ?

+ Dự phòng tài nguyên (provisioning)

+ Quản lý cấu hình (configuration management)

+ Triển khai ứng dụng (app deployment)

+ Giao hàng liên tục (continous delivery)

+ Bảo mật và tuân thủ (security and compliance)

+ Điều phối (orchestration).

3. Đặc điểm của Ansible

+ Không cần cài đặt phần mềm lên các agent, chỉ cần cài đặt tại master.
+ Không service, daemon, chỉ thực thi khi được gọi
+ Cú pháp dễ đọc, dễ học, dễ hiểu

 4. Ansible playbook thì sao?

Ansible playbook giúp chúng ta tổ chức công việc của mình theo nhiều cách. Trong hình thức trực tiếp nhất, chúng ta có thể làm việc với các module của Ansible sử dụng công cụ dòng lệnh “ansible” và file inventory.

4.1. Inventory

File inventory giúp Ansible biết các server mà nó cần kết nối sử dụng SSH, thông tin kết nối nó yêu cầu, và tùy chọn các biến gắn liền với các server này. File inventory có định dạng là INI. Trong file inventory, chúng ta có thể chỉ định nhiều hơn một máy chủ và gom chúng thành nhiều nhóm.

Ex: file inventory hosts.ini như sau

[webservers]
192.168.175.129
192.168.175.130

4.2 Task (nhiệm vụ)

Một khái niệm quan trọng khác là các task. Mỗi task của Ansible chứa một tên, một module để gọi, các tham số của module, và tùy chọn các điều kiện trước và sau. Chúng cho phép chúng ta gọi các module Ansible và truyền thông tin tới các task kế tiếp.

4.3 Vars (Các biến)

Biến hữu dụng cho việc tái sử dụng thông tin chúng ta cung cấp hoặc tập hợp. Chúng ta có thể định nghĩa biến trong các file inventory, các file YAML hoặc trong các playbook.

4.4 Playbook

Ansible playbook được viết bằng cú pháp YAML . Nó có thể chứa nhiều hơn một play. Mỗi play chứa tên của các nhóm máy chủ để kết nối tới và các nhiệm vụ nó cần thực hiện. Nó cũng có thể chứa các biến/các role/các handler, nếu đã định nghĩa.

Ex: cấu trúc của một playbook

                     hosts: dbservers

                        gather_facts: no

                      vars:

                         who: World

                      tasks:

                          – name: say hello

                             debug: msg=”Hello {{ who }}”

                           – name: retrieve the uptime

                            command: uptime

Trong playbook trên, chúng ta đã nói rằng Ansible sẽ thao tác trên các server đã được định nghĩa trong nhóm máy chủ “dbservers”. Chúng ta đã tạo một biến gọi là “who” và sau đó chúng ta định nghĩa các nhiệm vụ của chúng ta. Chú ý rằng trong nhiệm vụ đầu tiên nơi chúng ta in ra một thông điệp debug, chúng ta đã sử dụng biến “who” và Ansible in “Hello World”  ra màn hình. Trong nhiệm vụ thứ 2, chúng ta nói với Ansible kết nối tới mỗi máy chủ và sau đó thực thi lệnh “uptime”.

5. Hướng dẫn cài đặt và tổ chức một ansible playbook

5.1 Cài đặt.

Việc cài đặt ansible khá là đơn giản:

         Trên CentOS:
$ yum install epel-release
$ yum install ansible
        Trên Ubuntu:
Cấu hình PPA, cài đặt:
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible
Trên các phiên bản Ubuntu cũ, gói software-properties-common có tên khác là python-software-properties

5.2 Viết một playbook cho việc triển khai các dịch vụ

Ở đây mình đã  có viết một playbook cho việc deploy các dịch vụ như nginx, mongodb, redis, postgresql.

             Mô hình deploy:

+ node master ( 192.168.75.128): cài  đặt ansible tool

+ node deploy services (192.168.75.129 & 192.168.75.130): các dịch vụ như nginx, mongodb, redis, postgresql sẽ được deploy trên 2 node này

Các bạn có thể tham khảo playbook qua link github sau:

https://github.com/lieunn/ansible-services/tree/master/roles

+  Trên node master thực thi lệnh sau để tiến hành deploy services:

                    [root@pio-instance1:]# ansible-playbook -i ansible-services/deployment ansible-services/analytics.yml

Cấu trúc tổ chức thư mục playbook:

[root@pio-instance1:~]# ll /build/ansible-services
-rw-r–r–. 1 root root 65 Sep 20 05:55 analytics.yml
-rw-r–r–. 1 root root 28 Sep 15 08:12 deployment
-rw-r–r–. 1 root root 19 Sep 23 08:47 README.md
drwxr-xr-x. 6 root root 4096 Sep 20 05:34 roles
[root@pio-instance1:~]# ll /build/ansible-services/roles/
total 16
drwxr-xr-x. 7 root root 4096 Sep 16 07:48 mongodb
drwxr-xr-x. 7 root root 4096 Sep 16 06:13 nginx
drwxr-xr-x. 6 root root 4096 Sep 20 05:34 postgres
drwxr-xr-x. 6 root root 4096 Sep 20 04:11 redis
[root@pio-instance1:~]# ll /build/ansible-services/roles/mongodb/
total 20
drwxr-xr-x. 2 root root 4096 Sep 16 07:54 files
drwxr-xr-x. 2 root root 4096 Sep 16 09:09 handlers
drwxr-xr-x. 2 root root 4096 Sep 16 09:13 tasks
drwxr-xr-x. 2 root root 4096 Sep 16 08:09 templates
drwxr-xr-x. 2 root root 4096 Sep 16 08:36 vars

 

Một số nguồn tham khảo:

https://techmaster.vn/posts/33717/su-dung-ansible-vo-postgresql

https://congcan.wordpress.com/tag/saltstack/

http://blog.vccloud.vn/configuration-management/

https://tech.fpt.com.vn/cicdcqm-giai-phap-toan-dien-nang-cao-chat-luong-du/

2 Comments on [Configuration Management] ANSIBLE TOOL
Categories: Tài liệu

LÀM THẾ NÀO ĐỂ BIẾT MÌNH ĐANG ĐI ĐÚNG CON ĐƯỜNG September 4, 2017


Chào các bạn!
Đang trong kỳ nghỉ lễ quốc khánh 2/9 chắc là các bạn cũng có những trải nghiệm thú vị cùng bạn bè hoặc gia đình, riêng mình thì kỳ nghĩ lễ này cũng ko có plan đi đây đi đó nên rảnh rổi sinh nông nổi, ngồi viết vài câu chuyện tản mạn chia sẻ cùng các bạn, gọi là cho đỡ tẻ nhạt bớt trong kỳ nghỉ lễ này :v. Tiếp nối những seri linh ta linh tinh trước đó về chuyện đời chuyện nghề của 1 system admin, hôm này mình tiếp tục cùng bàn luận về topic nho nhỏ ” làm thế nào để biết mình đang đi đúng con đường ” theo cách nghĩ khách quan của bản thân mình thôi nha các bạn :-).
Ngược dòng xa xôi chút về những năm cuối cấp 3, thời điểm mà ai ai cũng có những lựa chọn riêng về  ngành nghề vs ước mơ sẽ theo đuổi, có người thì đã định hướng từ trước, có người thì cũng chả biết nên theo ngành nghề nào cứ tham khảo ý kiến ai đó, bạn bè or người quen rồi chọn trường theo, kiểu như mông lung như một trò đùa =)).
Chặng đường tiếp theo sau đó có lẽ là cánh cổng ĐH nơi bước đầu hiện thực hóa những hoài bảo, một chương mới trên con đường sự nghiệp được mở ra, ở đó thứ cho bạn có lẽ là những hành trang về nghề nghiệp để bước vào đời từ kiến thức chuyên môn của từng ngành nghề, kiến thức xã hội, mối quan hệ….
Sau khi có được tấm bằng ĐH (cử nhân, kỹ sư…) ai cũng đi tìm cho mình một công việc theo đúng chuyên môn được đào tạo, nhưng cuộc sống mà đâu phải lúc nào cũng theo ý ta, có bạn thì làm đúng chuyên môn, còn có bạn thì lại rẽ theo hướng khác. Nói về mình thì định hướng trước đó là làm về quản trị mạng, hệ thống nên sau khi tốt nghiệp ra trường cũng rán tìm một công việc có liên quan, nhưng những ngày đầu vì kiến thức, kỹ năng, kinh nghiệm làm việc ko nhiều nên cũng ít công ty nào để ý tới, thời điểm đó cũng rải CV như phát tờ rơi :v miễn là có một công việc để làm.
Sau những tháng ngày ròng rã tìm kiếm cv, chạy đi PV như là chạy show :v cũng chỉ tìm được ở những vị trí lèn tèn như Monitor, Vận hành hệ thống, thoạt nghe thì có chút dính líu tới chuyên môn nhưng vào làm thì chẳng có gì nhiều đâu các bạn, thao tác chính chủ yếu là các phím Crl  + C + V =)), Snipping Tool, theo dõi mấy cái biểu đồ màu mè hoa lá hẹ, các dòng log error đỏ lòm, có bất thường gì thì la lên cho các sếp mà thời đó đúng nghĩ là kiếp cầm ca (làm theo ca đó các bạn =)) ), dĩ nhiên là công việc khá chán rồi nhưng cũng gọi là có công việc để kiếm cơm qua ngày là zui zui gồi.
Một khoảng thời gian sau đó mình tìm được 1 vị trí system theo đúng chuyên môn mình mong đợi, công việc trước đó khá chán nhưn bù lại  là có chút time rảnh nên mình cũng tự đào sâu kiến thức qua những bài LAB, hỏi han các bậc tiền bối đi trước mới có cơ may tìm được cv phù hợp sau này. Những chặng đường sau đó và cho đến bây giờ thì mình đều đảm nhận vị trí là 1 system admin, công việc hiện tại vẫn cho mình những niềm vui & lợi ích nhất định, đặc biệt vẫn còn đam mê với nghề cho nên cũng gọi là đang đi đúng con đường mà mình lựa chọn trước đó mặc dù cũng đã trải qua những tháng này đen tối trong sự nghiệp :v, đó là điều hiển nhiên ai cũng đã từng trải qua.
Vậy thì câu hỏi “Làm thế nào để biết mình đang đi đúng con đường”, con đường ở đây là con đường sự nghiệp( con đường lớn) nói chung và trong nghê IT nói riêng(con đường nhỏ),không ai dám chắc là mình chỉ làm một công việc đó suốt đời, có thể nghề này rồi lại nghề khác(hoàn cảnh đẩy đưa :v) nhưng nếu xét ở một phạm vi nào đó trong những ngành nghề chúng ta đã từng làm thì cái gọi là “đúng con đường” có thể hiểu là ở giai đoạn đó, nghề đó, công việc đó mang lại cho bản thân ta những niềm vui, sự thành công nhất định, một sự hưng phấn, bầu nhiệt huyết và cả sự đam mê trong công việc . IT cũng không ngoại lệ, một khi trải qua những khoảng thời gian trước đó cho đến thời điểm hiện tại trong cái nghề mà bạn đã chọn, nó không mang lại nhiều thành công cho bạn, không tạo được cho bạn hứng thú trong khi làm việc hay nói cách khác là cảm giác chán việc chán nghề thì bạn có thể cân nhắc cho mình những hướng đi, ngã rẽ mới , biết đâu được bạn lại gặt hái được nhiều thành công hơn ở những con đường mới đó thì sao.
Hãy phá vỡ mọi giới hạn của bản thân, hiện thực hóa những ý tưởng đang tồn tại trong đầu bạn,  biến điều không thể thành có thể. Chúc các bạn thành công!

No Comments on LÀM THẾ NÀO ĐỂ BIẾT MÌNH ĐANG ĐI ĐÚNG CON ĐƯỜNG
Categories: Linh tinh