BÀI TOÁN BAN ĐẦU
Đầu tiên, tôi bao gồm một việc muốn đặt ra như nỗ lực này. Tôi gồm 10 nhỏ server cần setup lên thành website server cùng 3 bé server cần thiết đặt thành DB server. Nếu thiết đặt một cách thủ công bằng tay thì chúng ta sẽ buộc phải 10 lần thao tác giống nhau mang lại việc cài đặt 10 con web server và với DB hệ thống cũng thế. Vậy bài bác toán đặt ra là rất có thể gõ 1 lệnh nhưng tổng 13 nhỏ server tự động hóa được cài đặt không. Câu trả lời là có. Và để triển khai được điều thì họ cần mang lại Ansible.Bạn đang xem: Hướng dẫn và sử dụng ansible
<< 1 >> ANSIBLE LÀ GÌ
Ansible là 1 trong platform opensource, nghĩa là bạn cũng có thể viết thêm hay chỉnh sửa tuỳ ý. Ansible khá đơn giản dễ dàng để sử dụng. Nôm na bạn cũng có thể hình dung là chỉ vấn đề khai báo add server và đều điều hy vọng làm cùng với server kia vào ansible, rồi sau đó chỉ cần chạy script các bạn vừa viết trên và ngồi uống trà ngóng hoàn thành.<< 2 >> TẠI SAO NÊN SỬ DỤNG ANSIBLE
Ansible miễn tổn phí và là 1 trong opensource Ansible thực hiện phương thức ssh Việc thiết đặt không tốn những tài nguyên Được cải cách và phát triển bởi ngữ điệu python. đề nghị nếu bạn muốn tạo thêm module thì cũng thực hiện bằng python hơi nhẹ và dễ setup Các sciprt thường được dùng định dạng YAML cùng Ansible gồm một cộng đồng tương tác lớn<< 3 >> THÀNH PHẦN trong ANSIBLE
Cái này cũng rất nhiều nhưng về cơ bản thì có những phần sau: Playbooks - Là nơi các bạn sẽ khai báo kịch bản chạy đến server Tasks - Là đầy đủ công việc nhỏ trong cuốn sổ Playbooks trên Inventory - Khai báo địa chỉ cửa hàng server bắt buộc được thiết đặt Modules - Những chức năng hỗ trợ đến việc xúc tiến tasks dễ với đang dạng v.v…<< 4 >> LÀM quen thuộc VỚI YAML
Chúng ta hãy xem các tập tin YAML là gì. Phần lớn tất cả playbooks trong Ansible được viết bởi YAML. Nếu như bạn đã quen thuộc với YAML, hãy làm lơ phần này và đưa sang phần tiếp theo. Nếu bạn chưa từng thao tác với YAML thì khuyên bạn nên xem phần này kỹ một xíu chính vì các phần còn lại số đông phụ thuộc trọn vẹn vào YAML.Playbook Ansible được viết theo định dạng rõ ràng được call là YAML.Nếu chúng ta đã thao tác với các định dạng cấu trúc dữ liệu khác như XML hoặc JSON, các bạn sẽ có thể dễ dàng học nó.Cũng đừng lo lắng nếu bạn chưa biết gì, bởi nó thiệt sự rất đối kháng giản. File YAML được dùng để làm thể hiện dữ liệu. Dưới đấy là so sánh nhanh tài liệu mẫu ở ba định dạng khác nhau.


<< 5 >> PLAYBOOKS
Trong playbooks, bọn họ sẽ khẳng định những gì cần được làm. Hay nói theo cách khác là nơi ta đã viết kịch bạn dạng cho những con server. Playbooks sẽ được viết bằng định dạng YAML. Cần là các bạn cần đảm bảo an toàn đọc hiểu được nội dung của phương pháp viết vào YAML nhé.Trong playbooks sẽ đựng một tập hợn các activities (hoạt động) hay các tasks (nhiệm vụ) sẽ tiến hành chạy bên trên một hay như là một nhóm servers.Trong kia task là một hành động duy nhất được tiến hành trên server, ví dụ như cài gói service nào đó, hay bật và tắt service.Xem thử lấy ví dụ một playbook đối kháng giản: # Simple Ansible Playbook1.yml- name: Play 1 hosts: localhost tasks: - name: Execute command "date" command: date - name: Execute script on hệ thống script: test_script.sh - name: Install httpd service yum: name: httpd state: present - name: Start web vps service: name: httpd state: startedTrên đó là một playbook đơn giản chứa một kịch bạn dạng có thương hiệu Play 1 (name: Play 1).Kịch bạn dạng này sẽ được chạy trên vps localhost (hosts: localhost). Nếu bạn có nhu cầu thực hiện tại cùng những nhiệm vụ kia trên nhiều con server thì bạn chỉ cần liệt kê thương hiệu server giỏi tên group server. Khai báo thương hiệu server tốt group vps sẽ bên trong phần inventory nhé.Có tổng số 4 nhiệm vụ cần được chạy mang lại server. Trọng trách lần lượt là:chạy lệnh datechạy tệp tin test_script.shcài đặt dịch vụ httpdstart thương mại & dịch vụ httpd vừa sở hữu trênCác tasks trong playbooks được liệt kê dạng array. Phần bên trên đã gồm nói đến, nếu như đổi nơi thứ tự các tasks thì đã gây ảnh hưởng không nhỏ nếu số đông task đó bao gồm mối liên quan với nhau. Như ta thấy task lắp thêm 3 và task đồ vật 4 có mối tương tác với nhau. Nếu nhằm task start httpd lên trước task install thì sẽ sở hữu được lỗi xảy ra nếu server trọn vẹn chưa được mua httpd.Bạn lưu ý các ở trong tính command, script, yum, service là đầy đủ module có sẵn bởi ansible cung cấp. Module cung ứng bạn viết với thực thi những nhiệm vụ một cách đơn giản hơn. Nếu còn muốn tự tạo nên một module riêng biệt thì ansible vẫn hỗ trợ và cho phép bạn viết module riêng nhằm chạy bằng python. Ngoài ra module dễ dàng và đơn giản trên, ansible còn cung ứng hằng trăm module khác, bạn có thể bài viết liên quan ở document của ansible.https://docs.ansible.com/Để làm rõ hơn module có nhiệm vụ gì, chúng ta thử chú ý vào task vật dụng 3 là task setup dịch vụ httpd. Bình thưởng trong linux, ước ao cài dịch vụ httpd, chúng ta phải gõ:yum install httpdNhưng vào playbook bạn chỉ cần khai báo tên module với tên dịch vụ, module được khai báo trường đoản cú khắc sẽ nhận lệnh với tự tiến hành việc thiết lập gói httpd theo yêu thương cầu.Cuối cùng, khi chúng ta đã viết chấm dứt một playbook, vậy làm cách nào nhằm chạy nó. Rất 1-1 giản. Ansible cung cấp cho chính mình cú pháp như sau:ansible-playbook Ví dụ tệp tin playbook của doanh nghiệp tên là my_playbook.yml, các bạn sẽ run như sau:ansible-playbook my_playbook.ymlBên cạnh đó nếu bạn cần trợ giúp gì thì dùng lệnh:ansible-playbook -help<< 6 >> MODULES
Như đã giới thiệu ở phần trên, ansible cung ứng rất các module, không thể trình diễn hết các module trong bài viết này, đề nghị mình sẽ ra mắt một vài module phổ biến thường được sử dụng cho những thao tác đơn giản.System: bao gồm các module như User, Group, Hostname, Systemd, Service, v.v... Commands: thông thường sẽ có module nhỏ như Command, Expect, Raw, Script, Shell, v.v...Files: các module thao tác với file như Copy, Find, Lineinfile, Replace, v.v...Database: Ansbile cũng support mạnh bạo những module thao tác làm việc với DB như Mongodb, Mssql, Mysql, Postgresql, Proxysql, v.v...Cloud: Ansible cũng luôn nhớ kết hợp với các dịch vụ thương mại clound nổi tiếng như Amazon, Google, Docker, Linode, VMware, Digital Ocean, v.v...Windows: mạnh bạo với gần như module như win_copy, win_command, win_domain, win_file, win_shellVà còn hàng trăm ngàn module khác đã có ansible cung ứng sẵn.<< 7 >> INVENTORY
Đây là khu vực sẽ đựng tên các con hệ thống hay showroom ip mà bạn có nhu cầu thực thi. Chú ý lại file playbook ngơi nghỉ trên, thì trong tệp tin playbook sẽ có một thuộc tính là hosts, đấy đó là nơi khai báo thương hiệu server. Bây giờ thử xem file inventory solo giản:#Sample Inventory FileServer1.company.comServer2.company.comXem thêm: Lý Thuyết Kính Lúp Kính Hiển Vi Và Cách Sử Dụng Sinh 6, Kính Lúp, Kính Hiển Vi Và Cách Sử Dụng
<< 8 >> VARIABLES
Tiếp theo bọn họ sẽ làm cho quen cùng với biến.Vậy thay đổi là gì? cũng giống như các ngôn ngữ lập trình khác, biến chuyển được thực hiện để giữ trữ các giá trị và bao gồm thể biến đổi giá trị được.Xem ví dụ sau đây để làm rõ cách khai báo phát triển thành và thực hiện biến trong ansible ra làm sao nhé.- name: Print car"s information hosts: localhost vars: car_model: "BMW M3" country_name: USA title: "Systems Engineer" tasks: - name: Print my car model command: echo "My car"s mã sản phẩm is car_model " - name: Print my country command: echo "I live in the country_name " Để khai báo biến, chúng ta sẽ thực hiện thuộc tính vars mà lại ansible đã cung cấp.car_model đã là key, "BMW M3" vẫn là value. Dưới để thực hiện biến car_model ta sử dụng cặp lốt ngoặc nhọn cùng tên đổi mới car_model<< 9 >> CONDITIONS
Ansible cũng có thể chấp nhận được bạn điều hướng lệnh chạy hay giới hạn phạm vi để run câu lệnh làm sao đó. Nói khác đi là nếu đk thoả thì câu lệnh đó bắt đầu được thực thi.Bây tiếng ta thử giải một đề câu hỏi như sau: nếu tuổi bên trên 22 thì in ra screen là "Tôi đã tốt nghiệp" và ngược lại nếu tuổi bên dưới 22 thì in là "Tôi chưa giỏi nghiệp".Lúc này họ sẽ áp dụng thuộc tính when mà lại ansible cung ứng để giới hạn phạm vi chạy của câu lệnh.#Simple playbook.yml- name: Toi domain authority tot nghiep không hosts: localhost vars: age: 25 tasks: - command: echo "Toi chua tot nghiep" when: age = 22■ registerAnsible còn cung ứng một trực thuộc tính khá mạnh bạo là register. Register góp nhận hiệu quả trả về từ một câu lệnh. Sau đó ta có thể dùng kết quá trả về kia cho hầu như câu lệnh chạy sau đó.Ví dụ ta có bài toán như sau: bình chọn trạng thái của service httpd, giả dụ start thua thì gởi mail thông báo cho admin.#Sample ansible playbook.yml- name: check status of service and email if its down hosts: localhost tasks: - command: service httpd status register: command_output - mail: to: Admins subject: Service Alert body: "Service is down" when: command_output.stdout.find("down") != -1 Nhờ vào nằm trong tính register, kết quả trả về sẽ được chứa vào trở thành command_output. Từ kia ta thực hiện tiếp các thuộc tính của biến chuyển command_output là stdout.find nhằm tìm chữ "down" có lộ diện trong văn bản trả về không. Nếu không tìm thấy thì hiệu quả sẽ là -1.<< 10 >> LOOPS
Bạn còn lưu giữ module yum không. Module yum trong ansible playbook góp ta cài đặt hay xoá một gói service làm sao đó. Vào ví dụ tại vị trí playbook, chúng ta chỉ bao gồm cài một gói service. Cơ mà nếu server yêu cầu thiết lập thêm nhiều gói service khác như mysql, php thì sao nhĩ. Như bình thường chúng ta đã viết như sau:# Simple Ansible Playbook1.yml- name: Install packages hosts: localhost tasks: - name: Install httpd service yum: name: httpd - name: Install mysql service yum: name: mysql - name: Install php service yum: name: phpỞ đây mới ví dụ 3 service bắt buộc cài mà đề xuất viết lập lại những thuộc tính name, module yum đến 3 lần. Nếu như server cần cài lên đến mức 100 gói service thì câu hỏi ngồi copy/paste cũng trở thành vấn đề đấy. Cụ vào đó, họ sẽ sử dụng công dụng loops mà lại ansible đã cung ứng để nhằm viết.#Simple Ansible Playbook1.yml- name: Install packages hosts: localhost tasks: - name: Install all service yum: name=" chiến thắng " state=present with_items: - httpd - mysql - php with_items là một trong những lệnh lặp, thực hiện cùng một tác vụ những lần. Mỗi lần chạy, nó lưu quý giá của từng thành bên trong biến item.<< 11 >> ROLES
Nếu bạn có khá nhiều server hay nhiều group server và mỗi server thực thiện hồ hết tasks riêng rẽ biệt. Và khi này trường hợp viết tất cả vào và một file playbook thì hơi là xấu code và khó khăn để cai quản lý. Ansible đã cung ứng sẵn công dụng roles, về đơn giản và dễ dàng nó sẽ giúp bạn phân chia khu vực với trọng trách riêng biệt.Ví dụ các bạn có một kịch bạn dạng như mặt dưới:#Simple Ansible setup_application.yml- name: phối firewall configurations hosts: website vars: http_port: 8081 snmp_port: 160-161 inter_ip_range: 192.0.2.0 tasks: - firewalld: service: https permanent: true state: enabled - firewalld: port: " http_port "/tcp permanent: true state: disabled - firewalld: port: " snmp_port "/udp permanent: true state: disabled - firewalld: source: " inter_ip_range "/24 zone: internal state: enabledMục tiêu của tệp tin playbook setup_application.yml này là thông số kỹ thuật tường lửa đến group server về web. Hiện giờ chúng ta vẫn cắt nhỏ file playbook này ra thành hồ hết file tất cả chức năng đơn lẻ như file chỉ chưa định nghĩa biến, giỏi file chứa định nghĩa tasks. Trước khi cắt tệp tin playbook bé dại gọn lại, ta yêu cầu tạo cấu tạo thư mục như sau nhằm ansible nhận thấy được những thành phần ta đã khai báo.