Phần 1 Tìm Hiểu Về Ansible, Phần 1 Tìm Hiểu Về Ansible

Trong phần 1 của chuỗi bài cơ bản về Ansible, tôi đã tổng hợp nhanh một trong những các vấn đề hoặc lăn tăn trước khi mở đầu vọc vạch. Phần đó kiểu tâm sự, nói điêu để anh/em vào khám phá cho mượt nên hơi dài dòng chút. Bài Viết: Phần 1 khám phá về ansible Trong phần 2 này, tôi sẽ đi ngay vào vụ việc dựng LAB để anh/em khỏi cảm nhận nhàm chán, suy nghĩ chung thì sau thời điểm đọc muốn thu ngay được đồ nào đấy hoặc ngắm nghía xem ra sao. Trong phần này sẽ giải quyết và xử lý và giải quyết và xử lý. Thứ nhất, tôi sẽ chuẩn bị sẵn sàng sẵn sàng chuẩn bị loại hình và IP Planning thật sang trọng và hoành tráng, phương châm là để rất có khả năng LAB đủ những phần và minh họa việc áp dụng Ansible cho đúng chiêu bài, phải chăng với trong thực tiễn của bản thân cũng giống như như của tổng thể toàn bộ tất cả chúng ta. Chi tiết cụ thể cụ thể chi tiết gồm

1. Loại hình

Trong loại hình này nếu dựng khá đầy đủ sẽ rất cần phải có những vạn vật thiên nhiên và thiên nhiên môi trường xung quanh với những hệ quản lý quản lý và điều hành Linux thông dụng hiện nay, chính vì vậy cloud365 sẽ áp dụng những client gồm những hệ quản lý quản lý và điều hành CentOS7, CentOS6, Ubuntu 16.04, Ubuntu 18.04 để phát huy 1 trong các bài LAB tiếp theo. So với hạ tầng LAB giảm bớt, bạn chỉ rất cần phải có 03 máy chủ với hệ quản lý quản lý và điều hành CentOS7 là đủ (gồm AnsibleServer, Client1 và Client2), kế tiếp mở rộng ra những client tiếp theo là được. Trong phần 2 này tôi cũng chỉ áp dụng 03 máy kể tên ở trên cao để thực hành thực tế trong thực tiễn trước, những phần tiếp theo sẽ thêm những máy tiếp theo.

2. IP Planning

HostnameOSIP
AnsibleServerCentOS7192.168.80.132
Client1CentOS7192.168.80.122
Client2CentOS6192.168.80.123
Client3Ubuntu 16.04192.168.80.124
Client4Ubuntu 18.04192.168.80.125

3. Tùy chỉnh thiết lập

3.1. Thiết lập hostname, IP cho những node

Quy trình này sẽ tiến hành triển khai thiết lập cấu hình thông số kỹ thuật hostname, IP cho những node sẽ thi công loại hình và IP Planning ở trên cao. Do phần chính là cơ bản với những đồng chí biết áp dụng Linux nên tôi sẽ bỏ qua công đoạn này.

3.2. Tùy chỉnh thiết lập ansible trên node Ansible Server

Việc cài đặt ansible khác dễ dàng đơn giản, chỉ trải qua lệnh phía bên dưới là rất có khả năng cài xong Ansible. Đưa ra cảnh báo: Quy trình này tiến hành triển khai trên node AnsibleServer – node 192.168.80.132 Login với thông báo thông tin tài khoản root và tiến hành triển khai những lệnh phía bên dưới (lưu ý lúc nếu mà quý khách có IP Planning khác, nên được đặt IP tĩnh theo phân hoạch của bạn trước). yum install -y epel-release yum update -yyum install -y ansibleKiểm tra lại phiên bản ansible sau thời điểm cài bằng lệnh anssible –version. Ta có khả năng phiên bản ở phía bên dưới. ansibleserver ~># ansible –versionansible 2.8.4 config tệp tin = /etc/ansible/ansible.cfg configured module tìm kiếm path = ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Aug 7 2019, 00:51:29)

3.3. Thông số kỹ thuật kỹ thuật SSH Key và khai báo tệp tin inventory

Ansible hoạt động theo chế độ agentless, có nghĩa là không cần cài agent vào những máy client để điều khiển và điều khiển và tinh chỉnh, không dừng lại ở đó ansible sẽ áp dụng việc điều khiển và điều khiển và tinh chỉnh những client trải qua SSH. Chính vì như vậy, tới công đoạn này ta rất có khả năng dùng 2 chiêu bài để ansible rất có khả năng điều khiển và điều khiển và tinh chỉnh được những máy client. Chiêu thức 1: Cần sử dụng usename, port của ssh để khai báo trong inventory. Những này không được khuyến nghị khi dùng trong trong thực tiễn vì việc password dạng clear text sẽ hiện thị, hoặc nếu dùng chiêu bài này thì rất cần phải secure cho tệp tin inventory này bằng ansible-vaultCách 2: Cần sử dụng ssh keypair. Có nghĩa là ta sẽ tạo nên ra private key và public key trên node AnisbleServer và copy chúng sang những node client (hay còn gọi là những host). Trong hướng dẫn này sẽ áp dụng chiêu bài 2, còn chiêu bài 1 sẽ thi công hướng dẫn ở những phần sau.

3.3.1. Tạo SSH key cho những node

Đứng tại node AnsibleServer tạo SSH Key, kế tiếp copy những sang node còn sót lại. Mục tiêu là áp dụng keypair để không phải nhập password mỗi lúc đăng nhập vào những client. Đứng tại user root của node AnsibleServer và tiến hành triển khai bước tạo key ssh-keygenThực hiện những làm việc thao tác Enter và để mặc định những tùy chọn khi lab. Generating public/private rsa key pair.Enter tệp tin in which to save the key (/root/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:SHA256:ialESG10iMjC8ppgMWh46DaB34s7iuFwbUCB6a0FDP4 root oo+. ||*=Oo. ||.B++. o . ||+o=E..o S ||o..+.. ||o ..+ ||+oo. ||oo . |+———+Thực hiện copy tệp tin key sang những node còn sót lại ssh-copy-id root 192.168.80.122/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “/root/.ssh/id_rsa.pub”The authenticity of host “192.168.80.122 (192.168.80.122)” can”t be established.ECDSA key fingerprint is SHA256:DETqQWWDBSaytKdSl1UlKay/wViWrWwhaUZoXre27FI.ECDSA key fingerprint is MD5:8e:5b:c0:03:38:c6:07:f0:12:c8:6e:fe:33:36:ef:f9.Are you sure you want to continue connecting (yes/no)? yes/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keysroot 192.168.80.122″s password:Number of key(s) added: 1Now try logging into the machine, with: “ssh “root 192.168.80.122″”và kiểm tra to make sure that only the key(s) you wanted were added.Làm giống như với node client2 ssh-copy-id root 192.168.80.123Sau đó đứng từ node AnsibleServer, thử ssh sang những node client1 & client2, nếu không bị hỏi mật khẩu thì ta đã áp dụng ssh key thành công. Đưa ra cảnh báo nhớ dùng lệnh exit sau thời điểm đăng nhập ở từng node. Tiếp tục chuyển hẳn qua bước khai báo tệp tin inventory để chứa danh sách những host rất thiết yếu.

Xem Ngay:  Uhm Là Gì - Từ Điển Tiếng Nghệ Ậy : Có Nghĩa Là Uhm

3.3.2. Khai báo tệp tin inventory

Thực hiện Điều đó trên node AnsibleServer Mặc định thì danh sách những host mà AnsibleServer điều khiển và điều khiển và tinh chỉnh sẽ địa chỉ tọa lạc ở tệp tin /etc/ansible/host. File mặc định này sẽ chứa những khai báo mẫu, ta sẽ tiến hành triển khai sao lưu lại và khai báo tệp tin theo bài LAB này. mv /etc/ansible/hosts /etc/ansible/hosts.orgTạo tệp tin mới để khai báo những host vi /etc/ansible/hostsNội dung của tệp tin sẽ chiếm được dạng như sau 192.168.80.122192.168.80.123Sau khi thêm những dòng trên, ta lưu tệp tin trên lại. Chăm chú rằng ta rất có khả năng áp dụng cặp thẻ để khai báo những group. Những group này sẽ do ta quy hoạch làm thế nào cho hợp lý và phải chăng với mạng lưới mạng lưới hệ thống, với ứng dụng của tổng thể toàn bộ tất cả chúng ta. Tại chỗ này tôi tạm tạo group là Thực hiện kiểm tra danh sách host đã đươc khai báo trong tệp tin inventory ở trên cao bằng lệnh ansible all –list-hosts. Trong đó all là 1 tùy chọn của lệnh trên, phương châm là liệt kê tất cả những hosts địa chỉ tọa lạc trong tệp tin inventory, ngẫu nhiên những host đó địa chỉ tọa lạc ở group nào. ansible all –list-hostsKết quả: ansibleserver ~># ansible all –list-hosts hosts (2): 192.168.80.122 192.168.80.123Nếu tổng thể toàn bộ tất cả chúng ta chỉ muốn kiểm tra những host trong group ta tiến hành triển khai với tùy chọn lệnh như sau ansible centos6 –list-host, tác dụng sẽ như phía bên dưới. ansibleserver ~># ansible centos6 –list-host hosts (1): 192.168.80.123Ta rất có khả năng sửa lại tệp tin /etc/ansible/hosts với khá đầy đủ những client như loại hình LAB (Mặc dù cho chưa bật những client tiếp theo lên), cũng giống như tệp tin phía bên dưới 192.168.80.122192.168.80.123192.168.80.124192.168.80.125Sau đó chạy lệnh ansible all –list-host , ta sẽ chiếm được tác dụng như phía bên dưới. Xem Ngay: Dslr Là Gì – Máy ảnh ansibleserver ~># ansible all –list-hosts hosts (4): 192.168.80.122 192.168.80.123 192.168.80.124 192.168.80.125Tới công đoạn này tổng thể toàn bộ tất cả chúng ta mới tạm ngưng việc khai báo danh sách những host. Trong trong thực tiễn những ta cần khai báo thêm những tùy chọn về mật khẩu, về port thậm chí còn còn cả về user mà AnsibleServer được chấp nhận áp dụng để điều khiển và điều khiển và tinh chỉnh những host. Một tệp tin inventory tương đối tuyệt vời và hoàn hảo nhất sẽ chiếm được định đạng như sau. Đó cũng đấy là cú pháp của tệp tin inventory từ bản Ansible 2.0 trở lên. Hãy sửa lại tệp tin inventory của bạn để chiếm hữu định dạng như phía bên dưới, sẽ bổ sung cập nhật update cập nhật thêm những tùy chọn Sửa tệp tin /etc/ansible/host với nội dung như phía bên dưới client1 ansible_host=192.168.80.122 ansible_port=22 ansible_user=rootclient2 ansible_host=192.168.80.123 ansible_port=22 ansible_user=rootclient3 ansible_host=192.168.80.124 ansible_port=22 ansible_user=rootclient4 ansible_host=192.168.80.125 ansible_port=22 ansible_user=rootclient1, client2, client3, client4: Tương ứng là những hostname của rất nhiều nodeansible_host: Vị trí đặt IP của node client tương ứngansible_port: Port của SSH phía client, nếu ta điều chỉnh thì sẽ chỉnh lại cho đúng.ansible_user: Là username của client mà AnsibleServer sẽ dùng để tương tác, trong bước trên tôi áp dụng là user root và trải qua SSH Key.

4. Cần sử dụng một trong những các lệnh kiểm tra cơ bản

Để kiểm tra xem việc khai báo này đã đúng và mở đầu tiếp những bài lab tiếp theo hay chưa, hãy áp dụng tùy chọn -m trong lệnh phía bên dưới, đấy là biểu thị nhận ra về việc việc sẽ áp dụng module mang tên là ping (-m là viết tắt của module). Trong bài này sẽ Đánh Giá thêm một trong những các moudle khác ngoài module ping này. ansible all -m pingNhư ở trên cao đã nói hoặc 1 trong các tài liệu khác có đề cập, ansible có khái niệm áp dụng những module được thỏa mãn sẵn để người sở hữu tịch làm những việc làm thông số kỹ thuật kỹ thuật, áp dụng ansible cho phải chăng. Việc áp dụng module trong ansible rất linh hoạt và có tương đối nhiều module, ta cần đọc hoặc tra giúp từ trang chủ về những module mà ansible hỗ trợ. Chức năng của lệnh trên như phía bên dưới

Xem Ngay:  Sandwich Panel Là Gì - Và Những Điều Bạn Nên Biết
*

Chức năng khi áp dụng module ping để kiểm tra những host. Chức năng trên đã đã cho chúng ta biết client1 và client2 bình luận về trạng thái màu xanh. Có nghĩa là đứng từ AnsibleServer ta đã ping thành công tới client1 và client2, còn màu đỏ đưa ra rằng AnsibleServer không tìm kiếm cảm nhận thấy client3 và client4 Sở dĩ có khả năng như trên là vì trong phần này của bài LAB, tôi đã khai báo đủ 04 node client nhưng mới có 02 node client1 & client2 là được bật khi tôi tiến hành triển khai lab. Bạn cũng có thể thử nghiệm thêm bằng chiêu bài tắt node client2 và tiến hành triển khai lại lệnh ansible all -m ping, ta cảm nhận thấy với những node mà AnsibleServer không liên lạc được sẽ chiếm được tác dụng: unreachable”: true ansibleserver ~># ansible all -m pingclient1 | SUCCESS => { “ansible_facts”: { “discovered_interpreter_python”: “/usr/bin/python” }, “changed”: false, “ping”: “pong”}client3 | UNREACHABLE! => “changed”: false, “msg”: “Failed to connect to the host via ssh: ssh: connect to host 192.168.80.124 port 22: No route to host”, “unreachable”: trueclient4 | UNREACHABLE! => client2 | UNREACHABLE! => Bật node mà bạn đã tắt trước đó để thực hành thực tế trong thực tiễn tiếp một trong những các lệnh và module cơ bản nhất của Ansible. Ta rất có khả năng lựa chọn những group để tiến hành triển khai tương tác trải qua Ansible, ví dụ tôi sẽ tiến hành triển khai module ping với group là centos6 đã khai bào ở trên cao bằng lệnh ansible centos6 -m ping. Chức năng là ansibleserver ~># ansible centos6 -m pingclient2 | SUCCESS => { “ansible_facts”: { “discovered_interpreter_python”: “/usr/bin/python” }, “changed”: false, “ping”: “pong”}

5. Cần sử dụng những module cơ bản của ansilbe trong chế độ tương tác

Cơ chế tương tác của ansible tạm hiểu là chế độ dùng những lệnh đơn, ngay sau thời điểm tiến hành triển khai lệnh thì sẽ chiếm được output để quan sát. Trong trong thực tiễn với mức độ áp dụng như này thì bạn mới ở mức con số 0 về Ansible, nó chỉ có chân thành và ý nghĩa tinh xảo cho bạn vọc vạch ansible với trình độ chuyên môn đúng chuyên môn lúc đầu và dùng để làm việc thao tác nhanh trong ngữ cảnh cần kiểm tra hoặc xác thực lại những config trước đó mà thôi. Để phát huy sức trẻ trung và tràn trề sức khỏe của Ansible, bạn cần được luyện đến những trình độ chuyên môn đúng chuyên môn cao cấp hơn, ví dụ điển hình như áp dụng được những playbooks, tự viết được playbooks hoặc hiểu những khái niệm về task, vars …Chi tiết cụ thể cụ thể chi tiết những phần đó sẽ chiếm được 1 trong các bài tiếp theo hoặc bài cải tiến.

5.1. Cần sử dụng module command

Như đã nhắc đến ở trên, việc áp dụng module ở chế độ tương tác của ansible chưa thể phát huy được tính năng của Ansible, nhưng bạn vẫn rất cần phải có quá trình đi lúc đầu này để hiểu và nhận cảm nhận được chiêu bài áp dụng ansible cho tính năng trong tương lai. Hay dễ dàng đơn giản hơn là có câu nói rằng: Vạn dặm đường xa đều khởi nguồn từ quá trình đi Trích nhặt từ Internet Cần sử dụng 1 trong số câu lệnh phía bên dưới để thực hành thực tế trong thực tiễn moulde command, ta sẽ kiểm tra uptime của toàn diện và tổng thể những node hoặc một trong những các node thuộc group nào đó bằng lệnh “ansible all -m command -a “ten_cau_lenh_module_command_ho_tro”. Ví dụ: Đưa ra cảnh báo thêm có tùy chọn -a để truyền thêm những đầu vào cho module command. Tùy chọn này cũng được áp dụng 1 trong các module khác nhé. ansibleserver ~># ansible centos6 -m command -a “uptime”client2 | CHANGED | rc=0 >> 09:06:41 up 15 min, 1 user, load average: 0.00, 0.00, 0.00Hoặc ansibleserver ~># ansible all -m command -a “uptime”client2 | CHANGED | rc=0 >> 09:08:42 up 17 min, 1 user, load average: 0.00, 0.00, 0.00client1 | CHANGED | rc=0 >> 09:08:43 up 1:24, 1 user, load average: 0.00, 0.00, 0.00client3 | UNREACHABLE! => “changed”: false, “msg”: “Failed to connect to the host via ssh: ssh: connect to host 192.168.80.124 port 22: No route to host”, “unreachable”: trueclient4 | UNREACHABLE! => Ta quan sát cảm nhận thấy 1 trong các output trên là thông tin trả về khi module command tiến hành triển khai lệnh uptime trong linux. Với module này ta rất có khả năng sửa chữa thay thế thay thế sửa chữa bằng nhiều lệnh khác. Ví dụ ta rất có khả năng tiến hành triển khai lệnh phía bên dưới ansible all -m command -a “ls -alh”Lệnh trên sẽ trả về tác dụng của lệnh ls -alh ở từng node client. Bạn hãy tự quan sát tác dụng của bản thân nhé, những các bạn sẽ cảm nhận thấy có chút đã không còn tinh đc khi vận tốc tiến hành triển khai và tác dụng trả về, nó có chức năng sẽ ảnh hưởng còn phát huy không những thế khi tất cả chúng ta có không ít host được khai báo trong tệp tin inventory, mở đầu cảm nhận thấy hay ho rồi phải ko nhỉ? Thực hành thực tế trong thực tiễn thêm với lệnh ansible all -m command -a “uname -rms” và xem tác dụng trả về phiên bản kernel của rất nhiều host nhé. Tới đây tạm hiểu tính năng module command của ansible là được chấp nhận ta dùng ansible để thực hiện những lệnh của Linux từ xa, đa phần là những lệnh đơn thôi nhé. Vậy nếu dùng những lệnh dạng nhóm lệnh như trong shell hoặc thực hiện những shell thì ta sẽ tiến hành triển khai như nào nhỉ? Yên tâm đi, ansible có rất nhiều module ngoài module command kia, trong này còn tồn tại liệt kê nhé (list những module của ansible). Nhưng khoan vào ma trận module này nhé, nó giúp bạn rối bời và loạn xạ ngay. Hãy chuyển tạm sang module shell một chút ít ít để biết chiêu bài dùng Còn nếu lưu ý thêm về module command thì cần đọc thêm thêm tại vị trí này

Xem Ngay:  Afp Là Gì - Giải đáp Về Afp

5.2. Module cài đặt trong ansible

Ta rất có khả năng áp dụng module cài đặt để kiểm tra những thông tin tổng quát về hệ quản lý quản lý và điều hành của rất nhiều node, ví dụ kiểm tra phiên bản, kiểm tra thông tin thẻ mạng, tên host, thông số kỹ thuật kỹ thuật về phần cứng …. Ví dụ ta rất có khả năng áp dụng lệnh sau để kiểm tra xem distro của rất nhiều host là gì ansible all -m cài đặt -a “filter=ansible_distribution”. Chức năng ta sẽ nhìn cảm nhận thấy như sau: ansibleserver ~># ansible all -m cài đặt -a “filter=ansible_distribution”client2 | SUCCESS => { “ansible_facts”: { “ansible_distribution”: “CentOS”, “discovered_interpreter_python”: “/usr/bin/python” }, “changed”: false}client1 | SUCCESS => { “ansible_facts”: { “ansible_distribution”: “CentOS”, “discovered_interpreter_python”: “/usr/bin/python” }, “changed”: false}client3 | UNREACHABLE! => “changed”: false, “msg”: “Failed to connect to the host via ssh: ssh: connect to host 192.168.80.124 port 22: No route to host”, “unreachable”: trueclient4 | UNREACHABLE! => Trong trường hợp ta bật tiếp những host client3 và client4 và copy SSH key ở bước trước, kế tiếp tiến hành triển khai lại lệnh trên ta sẽ chiếm được tác dụng như sau:

(*1*)

Thực hiện bước copy SSH key sang những node còn sót lại, client3 và client4 Thực hiện lại lệnh ở trên cao để quan sát tác dụng về những distro của rất nhiều host ansible all -m cài đặt -a “filter=ansible_distribution”. Ta áp dụng thêm tùy chọn -a để lọc tác dụng của lệnh ansible all -m cài đặt do tại tác dụng của lệnh rất dài và nhiều tham số, bạn cũng có thể thử nó riêng biệt. ansibleserver ~># ansible all -m cài đặt -a “filter=ansible_distribution”client2 | SUCCESS => { “ansible_facts”: { “ansible_distribution”: “CentOS”, “discovered_interpreter_python”: “/usr/bin/python” }, “changed”: false}client1 | SUCCESS => { “ansible_facts”: { “ansible_distribution”: “CentOS”, “discovered_interpreter_python”: “/usr/bin/python” }, “changed”: false}client3 | SUCCESS => { “ansible_facts”: { “ansible_distribution”: “Ubuntu”, “discovered_interpreter_python”: “/usr/bin/python3” }, “changed”: false}client4 | SUCCESS => { “ansible_facts”: { “ansible_distribution”: “Ubuntu”, “discovered_interpreter_python”: “/usr/bin/python3” }, “changed”: false}Hoặc ta rất có khả năng áp dụng lệnh ansible all -m cài đặt -a “filter=ansible_default_ipv4” để liệt kê ra những Nơi đặt IPv4 trên những node. Chức năng sẽ trả về ansibleserver ~># ansible all -m cài đặt -a “filter=ansible_default_ipv4″client2 | SUCCESS => { “ansible_facts”: , “changed”: false}client1 | SUCCESS => { “ansible_facts”: { “ansible_default_ipv4”: , “discovered_interpreter_python”: “/usr/bin/python” }, “changed”: false}client4 | SUCCESS => { “ansible_facts”: { “ansible_default_ipv4”: , “discovered_interpreter_python”: “/usr/bin/python3” }, “changed”: false}client3 | SUCCESS => { “ansible_facts”: { “ansible_default_ipv4”: , “discovered_interpreter_python”: “/usr/bin/python3” }, “changed”: false}ansibleserver ~>#Tới đây, việc cài đặt cở bản cụm LAB này đã hoàn tất, nếu muốn tham khảo thêm những module khác thì bạn cũng có thể dữ thế dữ thế chủ động tìm kiếm từ trang chủ của Ansible hoặc những blog khác hoặc ngay tại những content nội dung bài viết sau này từ team Cloud365. Chúc tổng thể toàn bộ tất cả chúng ta có quy trình tiến trước tiên trong hành trình dài dài khám phá Ansible này. Cloud365 tin rằng nếu cần mẫn thực hành thực tế trong thực tiễn và khám phá, những các bạn sẽ cảm nhận thấy có không ít thú vị với Ansible và sớm đưa được vào trong thực tiễn. Xem Ngay: Dom Là Gì – Những Loại Dom Trong Javascript Chúc tổng thể toàn bộ tất cả chúng ta phấn kích, hãy đón chờ phần tiếp theo nhé. Trân trọng cảm ơn Cloud365 team đây này Ansible Ansible Previous post Ansile dùng để làm gì?Next postNhững điều tâm đắc nhất khi áp dụng lệnh GREP Thể Loại: Chia sẻ trình bày trình diễn Kiến Thức Cộng Đồng

Bài Viết: Phần 1 Tìm Hiểu Về Ansible, Phần 1 Tìm Hiểu Về Ansible Thể Loại: (1) Nguồn Blog là gì: (1) Phần 1 Tìm Hiểu Về Ansible, Phần 1 Tìm Hiểu Về Ansible

Leave a Reply

Your email address will not be published.