Trong phần 1 của chuỗi bài bác cơ phiên bản về Ansible, tôi đã tổng hợp nkhô cứng một số trong những vấn đề hoặc lăn tnạp năng lượng trước lúc bắt đầu vọc gạch. Phần đó thứ hạng trung khu sự, ba hoa để anh/em vào tìm hiểu đến mượt phải tương đối lâu năm mẫu chút.

Bạn đang xem: Ansible là gì? hướng dẫn cài đặt ansible

Trong phần 2 này, tôi sẽ đi ngay vào Việc dựng LAB nhằm anh/em khỏi cảm giác chán nản, tư tưởng thông thường thì sau khi phát âm ao ước thu ngay lập tức được chiếc nào đó hoặc ngắm nghía xem thế nào. Trong phần này đang giải quyết.

Trước hết, tôi đã sẵn sàng mô hình với IPhường. Planning thiệt hầm hố, kim chỉ nam là để rất có thể LAB đầy đủ những phần và minch họa Việc sử dụng Ansible đến đúng cách, hợp lí cùng với thực tiễn của tôi cũng giống như của các bạn. Cụ thể gồm

1. Mô hình

Trong quy mô này ví như dựng khá đầy đủ sẽ cần phải có các môi trường với những hệ quản lý và điều hành Linux phổ cập bây giờ, do thế xemlienminh360.net đang thực hiện những client bao gồm những hệ quản lý và điều hành CentOS7, CentOS6, Ubuntu 16.04, Ubuntu 18.04 nhằm đẩy mạnh trong số bài bác LAB tiếp theo.

Đối với hạ tầng LAB tinh giảm, bạn chỉ cần có 03 máy chủ cùng với hệ quản lý CentOS7 là đủ (bao gồm AnsibleServer, Client1 cùng Client2), tiếp nối không ngừng mở rộng ra các client tiếp sau là được. Trong phần 2 này tôi cũng chỉ áp dụng 03 sản phẩm công nghệ nhắc thương hiệu sinh sống trên để thực hành trước, những phần tiếp sau đã thêm những lắp thêm tiếp theo sau.

2. IP Planning

HostnameOSIP
AnsibleServerCentOS7192.168.80.132
Client1CentOS7 192.168.80.122
Client2CentOS6 192.168.80.123
Client3Ubuntu 16.04 192.168.80.124
Client4 Ubuntu 18.04 192.168.80.125

3. Cài đặt

3.1. Thiết lập hostname, IPhường cho các node

Cách này sẽ triển khai thiết lập hostname, IP cho những node và để được quy mô với IP Planning ở bên trên. Do phần này là cơ phiên bản cùng với phần đông bạn bè biết áp dụng Linux cần tôi đang bỏ lỡ đoạn này.

3.2. Cài đặt ansible trên node Ansible Server

Việc thiết đặt ansible khác dễ dàng và đơn giản, chỉ trải qua lệnh bên dưới là có thể thiết lập chấm dứt Ansible.

Lưu ý: Cách này thực hiện bên trên node AnsibleServer – node 192.168.80.132

Login cùng với thông tin tài khoản root với triển khai những lệnh bên dưới (lưu ý dịp nếu bạn bao gồm IPhường Planning không giống, nên đặt IPhường tĩnh theo phân hoạch của chúng ta trước).

yum install -y epel-release yum update -yyum install -y ansibleKiểm tra lại phiên phiên bản ansible sau khoản thời gian thiết lập bằng lệnh anssible --version. Ta có kết quả phiên bạn dạng sinh sống dưới.

ansiblehệ thống ~># ansible --versionansible 2.8.4 config file = /etc/ansible/ansible.cfg configured module search path = ansible pythuôn module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible pykhiêm tốn version = 2.7.5 (mặc định, Aug 7 2019, 00:51:29)

3.3. Cấu hình SSH Key và knhị báo tệp tin inventory

Ansible hoạt động theo chính sách agentless, Có nghĩa là không cần download agent vào những thiết bị client để tinh chỉnh và điều khiển, vắt vào kia ansible vẫn áp dụng Việc điều khiển và tinh chỉnh những client thông qua SSH. Do vậy, tới đoạn này ta có thể dùng 2 cách để ansible có thể tinh chỉnh và điều khiển được các trang bị client.

Cách 1: Sử dụng usename, port của ssh nhằm knhì báo vào inventory. Các này không được đề xuất khi sử dụng vào thực tiễn vày Việc password dạng clear text sẽ hiện thị lên, hoặc trường hợp dùng bí quyết này thì cần được secure mang lại tệp tin inventory này bởi ansible-vaultCách 2: Sử dụng ssh keypair. tức là ta sẽ tạo ra private key với public key trên node AnisbleServer cùng copy bọn chúng thanh lịch những node client (xuất xắc có cách gọi khác là các host).

Trong gợi ý này đang thực hiện bí quyết 2, còn biện pháp 1 sẽ tiến hành lí giải làm việc những phần sau.

3.3.1. Tạo SSH key cho các node

Đứng tại node AnsibleServer chế tạo SSH Key, tiếp đến copy những thanh lịch node còn sót lại. Mục tiêu là sử dụng keypair nhằm chưa hẳn nhập password mỗi một khi đăng nhtràn vào những client.

Đứng tại user root của node AnsibleServer với tiến hành bước chế tác key

ssh-keygenThực hiện nay các làm việc Enter và để khoác định các tùy lựa chọn Khi lab.

Generating public/private rsa key pair.Enter file in which to lớn 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 file key sang trọng các node còn lại

ssh-copy-id root
192.168.80.122/usr/bin/ssh-copy-id: INFO: Source of key(s) to lớn be installed: "/root/.ssh/id_rsa.pub"The authentiđô thị 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 khổng lồ continue connecting (yes/no)? yes/usr/bin/ssh-copy-id: INFO: attempting lớn log in with the new key(s), lớn 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 lớn the machine, with: "ssh "root
192.168.80.122""và kiểm tra to lớn make sure that only the key(s) you wanted were added.Làm tương tự như với node client2

ssh-copy-id root
192.168.80.123Sau đó đứng từ node AnsibleServer, demo ssh thanh lịch những node client1 và client2, nếu không biến thành hỏi password thì ta đang áp dụng ssh key thành công xuất sắc.

Lưu ý ghi nhớ dùng lệnh exit sau khi singin làm việc từng node. Tiếp tục gửi quý phái bước knhì báo file inventory để cất list các host quan trọng.

3.3.2. Knhị báo file inventory

Thực hiện tại bài toán này trên node AnsibleServer

Mặc định thì danh sách các host mà lại AnsibleServer tinh chỉnh đang nằm ở vị trí file /etc/ansible/host. File mặc định này vẫn đựng những khai báo chủng loại, ta đã tiến hành sao gìn giữ và khai báo tệp tin theo bài xích LAB này.

mv /etc/ansible/hosts /etc/ansible/hosts.orgTạo tệp tin bắt đầu để knhì báo những host

vi /etc/ansible/hostsNội dung của tệp tin sẽ sở hữu dạng nlỗi sau

192.168.80.122192.168.80.123Sau khi thêm những dòng trên, ta lưu giữ tệp tin bên trên lại. Chú ý rằng ta rất có thể áp dụng cặp thẻ < > nhằm knhị báo những group. Các group này đang vị ta quy hướng làm sao cho cân xứng với hệ thống, với áp dụng của họ. Ở trên đây tôi lâm thời chế tác group là

Thực hiện nay kiểm tra danh sách host đang đươc knhì báo trong tệp tin inventory nghỉ ngơi bên trên bằng lệnh ansible all --list-hosts. Trong số đó all là 1 trong những tùy chọn của lệnh trên, mục tiêu là liệt kê toàn bộ những hosts bên trong file inventory, bất kể các host kia nằm tại vị trí group nào.

ansible all --list-hostsKết quả:

ansibleVPS ~># ansible all --list-hosts hosts (2): 192.168.80.122 192.168.80.123Nếu bọn họ chỉ ao ước kiểm soát những host vào group ta thực hiện với tùy lựa chọn lệnh nlỗi sau ansible centos6 --list-host, công dụng đang như bên dưới.

ansibleserver ~># ansible centos6 --list-host hosts (1): 192.168.80.123Ta hoàn toàn có thể sửa lại file /etc/ansible/hosts với rất đầy đủ những client nlỗi quy mô LAB (Mặc dù chưa bật các client tiếp theo lên), giống như tệp tin 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ẽ sở hữu công dụng nhỏng dưới.

Xem thêm:

ansibleVPS ~># ansible all --list-hosts hosts (4): 192.168.80.122 192.168.80.123 192.168.80.124 192.168.80.125Tới bước này họ bắt đầu tạm dừng vấn đề knhị báo list các host. Trong thực tiễn các ta buộc phải knhị báo thêm những tùy chọn về password, về port thậm chí lẫn cả về user mà lại AnsibleServer được phnghiền áp dụng nhằm tinh chỉnh và điều khiển các host.

Một tệp tin inventory tương đối hoàn chỉnh sẽ sở hữu được định đạng nhỏng sau. Đây cũng là cú pháp của tệp tin inventory tự phiên bản Ansible 2.0 trlàm việc lên. Hãy sửa lại file inventory của bạn để sở hữu định dạng nlỗi dưới, đã bổ sung thêm các tùy chọn

Sửa file /etc/ansible/host cùng với câu chữ như mặt 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à các hostname của những nodeansible_host: Địa chỉ IPhường. của node client tương ứngansible_port: Port của SSH phía client, nếu ta biến hóa thì đã chỉnh lại mang lại đúng.ansible_user: Là username của client mà lại AnsibleServer đang dùng để làm liên can, trong bước bên trên tôi áp dụng là user root với trải qua SSH Key.

4. Sử dụng một số lệnh chất vấn cơ bản

Để khám nghiệm xem bài toán knhị báo này đang đúng với bắt đầu tiếp những bài bác lab tiếp theo tốt không, hãy sử dụng tùy chọn -m vào lệnh dưới, đây là tín hiệu nhận thấy về bài toán sẽ thực hiện module có tên là ping (-m là viết tắt của module). Trong bài xích này sẽ reviews thêm một trong những moudle khác ngoài module ping này.

ansible all -m pingNhỏng nghỉ ngơi trên vẫn nói hoặc trong số tư liệu khác gồm nói, ansible gồm tư tưởng thực hiện các module được hỗ trợ sẵn để người quản lí trị làm các quá trình cấu hình, áp dụng ansible mang lại phù hợp. Việc sử dụng module vào ansible rất linh thiêng hoạt cùng có rất nhiều module, ta cần gọi hoặc tra cứu từ trang chủ về những module nhưng mà ansible cung ứng.

Kết trái của lệnh trên nlỗi bên dưới

*
Kết trái Khi áp dụng module ping để kiểm soát những host.

Kết quả bên trên cho thấy thêm client1 cùng client2 ý kiến về tâm trạng 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 đỏ chỉ ra rằng AnsibleServer không kiếm thấy client3 cùng client4

Snghỉ ngơi dĩ gồm công dụng nhỏng trên là do vào phần này của bài bác LAB, tôi vẫn knhì báo đủ 04 node client nhưng mà bắt đầu bao gồm 02 node client1 & client2 là được nhảy khi tôi tiến hành lab.

quý khách có thể thể nghiệm thêm bằng cách tắt node client2 cùng triển khai lại lệnh ansible all -m ping, ta thấy với các node mà lại AnsibleServer không liên lạc được sẽ có kết quả: 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 lớn the host via ssh: ssh: connect to host 192.168.80.124 port 22: No route to host", "unreachable": trueclient4 | UNREACHABLE! => "changed": false, "msg": "Failed khổng lồ connect to lớn the host via ssh: ssh: connect to host 192.168.80.125 port 22: No route to lớn host", "unreachable": trueclient2 | UNREACHABLE! => "changed": false, "msg": "Failed khổng lồ connect to lớn the host via ssh: ssh: connect khổng lồ host 192.168.80.123 port 22: Connection timed out", "unreachable": trueBật node nhưng bạn đã tắt trước đó nhằm thực hành tiếp một số lệnh cùng module cơ bạn dạng độc nhất vô nhị của Ansible.

Ta có thể chọn lọc những group nhằm thực hiện địa chỉ thông qua Ansible, ví dụ tôi đang triển khai module ping với group là centos6 sẽ knhị bào ngơi nghỉ trên bằng lệnh ansible centos6 -m ping. Kết quả là

ansiblehệ thống ~># ansible centos6 -m pingclient2 | SUCCESS => "ansible_facts": "discovered_interpreter_python": "/usr/bin/python" , "changed": false, "ping": "pong"

5. Sử dụng những module cơ phiên bản của ansilbe trong cơ chế tương tác

Chế độ ảnh hưởng của ansible trợ thời hiểu là chính sách sử dụng những lệnh đối chọi, ngay sau thời điểm thực hiện lệnh thì sẽ có được output để quan tiền giáp.

Trong thực tế với khoảng độ áp dụng như này thì các bạn mới tại mức con số 0 về Ansible, nó chỉ tất cả chân thành và ý nghĩa cho mình vọc vạch ansible với chuyên môn mở đầu cùng dùng làm thao tác làm việc nkhô giòn vào ngữ chình ảnh cần chất vấn hoặc xác nhận lại các config trước đó mà thôi.

Để phát huy sức khỏe của Ansible, bạn nên luyện tới những chuyên môn thời thượng rộng, ví dụ như thực hiện được những playbooks, trường đoản cú viết được playbooks hoặc phát âm các tư tưởng về task, vars …Chi huyết những phần này sẽ sở hữu trong các bài tiếp theo sau hoặc bài nâng cấp.

5.1. Sử dụng module command

Nlỗi sẽ nhắc tới ở bên trên, Việc thực hiện module sinh sống chính sách tương tác của ansible chưa thể đẩy mạnh được kết quả của Ansible, tuy thế bạn vẫn cần phải có công việc đi mở đầu này nhằm đọc cùng biệt lập được giải pháp sử dụng ansible mang đến kết quả sau đây. Hay dễ dàng và đơn giản hơn là bao gồm câu nói rằng:

Vạn dặm con đường xa những ban đầu tự các bước đi

Trích nhặt từ bỏ Internet

Sử dụng một trong những câu lệnh dưới để thực hành thực tế moulde comm&, ta đã bình chọn uptime của toàn thể những node hoặc một vài node nằm trong group như thế nào đó bằng lệnh "ansible all -m commvà -a "ten_cau_lenh_module_command_ho_tro". Ví dụ:

Lưu ý thêm gồm tùy chọn -a để truyền thêm các nguồn vào đến module commvà. Tùy chọn này cũng rất được dùng trong các module khác nhé.

ansibleVPS ~># ansible centos6 -m commvà -a "uptime"client2 | CHANGED | rc=0 >> 09:06:41 up 15 min, 1 user, load average: 0.00, 0.00, 0.00Hoặc

ansiblehệ thống ~># 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 lớn connect khổng lồ the host via ssh: ssh: connect khổng lồ host 192.168.80.124 port 22: No route khổng lồ host", "unreachable": trueclient4 | UNREACHABLE! => "changed": false, "msg": "Failed to lớn connect to lớn the host via ssh: ssh: connect to host 192.168.80.125 port 22: No route to lớn host", "unreachable": trueTa quan lại ngay cạnh thấy trong những output trên là biết tin trả về Lúc module commvà thực hiện lệnh uptime trong linux. Với module này ta có thể sửa chữa bởi những lệnh không giống. lấy ví dụ như ta rất có thể tiến hành lệnh dưới

ansible all -m comm& -a "ls -alh"Lệnh trên sẽ trả về kết quả của lệnh ls -alh ngơi nghỉ từng node client. quý khách hàng hãy trường đoản cú quan liêu sát kết quả của chính bản thân mình nhé, các bạn sẽ thấy bao gồm chút ít quá bất ngờ lúc tốc độ thực hiện và kết quả trả về, nó đang còn phát huy không chỉ có thế khi chúng ta có rất nhiều host được knhì báo vào file inventory, bắt đầu thấy hay ho rồi cần ko nhỉ?

Thực hành thêm với lệnh ansible all -m commvà -a "uname -rms" cùng coi kết quả trả về phiên bản kernel của các host nhé.

Tới đây lâm thời gọi kĩ năng module comm& của ansible là có thể chấp nhận được ta cần sử dụng ansible để triển khai các lệnh của Linux từ xa, nhiều phần là những lệnh đơn thôi nhé.

Vậy nếu dùng các lệnh dạng nhóm lệnh như vào shell hoặc triển khai các shell thì ta đang triển khai nlỗi nào nhỉ?

Yên tâm đi, ansible tất cả không ít module quanh đó module comm& cơ, vào này có liệt kê nhé (list những module của ansible). Nhưng khoan vào ma trận module này nhé, nó có tác dụng cho bạn rối bời với loạn xị tức thì. Hãy chuyển nhất thời sang module shell một chút để biết phương pháp dùng

Còn ví như quan tâm thêm về module commvà thì hãy đọc làm việc đây

5.2. Module cài đặt vào ansible

Ta có thể áp dụng module setup nhằm đánh giá các ban bố tổng quát về hệ điều hành của những node, ví dụ chất vấn phiên bản, khám nghiệm ban bố card mạng, thương hiệu host, thông số kỹ thuật về Hartware ….

lấy ví dụ ta có thể sử dụng lệnh sau để khám nghiệm xem distro của các host là gì ansible all -m thiết đặt -a "filter=ansible_distribution". Kết trái ta đã thấy được nhỏng sau:

ansiblehệ thống ~># ansible all -m cài đặt -a "filter=ansible_distribution"client2 | SUCCESS => "ansible_facts": "ansible_distribution": "CentOS", "discovered_interpreter_python": "/usr/bin/python" , "changed": falseclient1 | SUCCESS => "ansible_facts": "ansible_distribution": "CentOS", "discovered_interpreter_python": "/usr/bin/python" , "changed": falseclient3 | UNREACHABLE! => "changed": false, "msg": "Failed khổng lồ connect to lớn the host via ssh: ssh: connect to lớn host 192.168.80.124 port 22: No route khổng lồ host", "unreachable": trueclient4 | UNREACHABLE! => "changed": false, "msg": "Failed khổng lồ connect lớn the host via ssh: ssh: connect lớn host 192.168.80.125 port 22: No route khổng lồ host", "unreachable": trueTrong trường phù hợp ta bật tiếp những host client3 với client4 và copy SSH key nghỉ ngơi bước trước, tiếp nối thực hiện lại lệnh trên ta sẽ có được công dụng nhỏng sau:

*
Thực hiện nay bước copy SSH key lịch sự những node sót lại, client3 và client4

Thực hiện nay lại lệnh sinh sống trên nhằm quan lại gần kề hiệu quả về những distro của các host ansible all -m cài đặt -a "filter=ansible_distribution". Ta sử dụng thêm tùy lựa chọn -a để lọc công dụng của lệnh ansible all -m cài đặt bởi vì hiệu quả của lệnh siêu nhiều năm cùng các ttê mê số, chúng ta cũng có thể test nó lẻ tẻ.

ansiblehệ thống ~># ansible all -m setup -a "filter=ansible_distribution"client2 | SUCCESS => "ansible_facts": "ansible_distribution": "CentOS", "discovered_interpreter_python": "/usr/bin/python" , "changed": falseclient1 | SUCCESS => "ansible_facts": "ansible_distribution": "CentOS", "discovered_interpreter_python": "/usr/bin/python" , "changed": falseclient3 | SUCCESS => "ansible_facts": "ansible_distribution": "Ubuntu", "discovered_interpreter_python": "/usr/bin/python3" , "changed": falseclient4 | SUCCESS => "ansible_facts": "ansible_distribution": "Ubuntu", "discovered_interpreter_python": "/usr/bin/python3" , "changed": falseHoặc ta hoàn toàn có thể áp dụng lệnh ansible all -m cài đặt -a "filter=ansible_default_ipv4" nhằm liệt kê ra những cửa hàng IPv4 trên các node. Kết trái sẽ trả về

ansiblehệ thống ~># ansible all -m cài đặt -a "filter=ansible_default_ipv4"client2 | SUCCESS => "ansible_facts": "ansible_default_ipv4": "address": "192.168.80.123", "alias": "eth0", "broadcast": "192.168.80.255", "gateway": "192.168.80.1", "interface": "eth0", "macaddress": "52:54:00:da:c7:2a", "mtu": 1500, "netmask": "255.255.255.0", "network": "192.168.80.0", "type": "ether" , "discovered_interpreter_python": "/usr/bin/python" , "changed": falseclient1 | SUCCESS => "ansible_facts": "ansible_default_ipv4": "address": "192.168.80.122", "alias": "eth0", "broadcast": "192.168.80.255", "gateway": "192.168.80.1", "interface": "eth0", "macaddress": "52:54:00:02:42:ed", "mtu": 1500, "netmask": "255.255.255.0", "network": "192.168.80.0", "type": "ether" , "discovered_interpreter_python": "/usr/bin/python" , "changed": falseclient4 | SUCCESS => "ansible_facts": "ansible_default_ipv4": "address": "192.168.80.125", "alias": "eth0", "broadcast": "192.168.80.255", "gateway": "192.168.80.1", "interface": "eth0", "macaddress": "52:54:00:15:59:dc", "mtu": 1500, "netmask": "255.255.255.0", "network": "192.168.80.0", "type": "ether" , "discovered_interpreter_python": "/usr/bin/python3" , "changed": falseclient3 | SUCCESS => "ansible_facts": "ansible_default_ipv4": "address": "192.168.80.124", "alias": "eth0", "broadcast": "192.168.80.255", "gateway": "192.168.80.1", "interface": "eth0", "macaddress": "52:54:00:5c:6e:53", "mtu": 1500, "netmask": "255.255.255.0", "network": "192.168.80.0", "type": "ether" , "discovered_interpreter_python": "/usr/bin/python3" , "changed": falseansibleVPS ~>#Tới phía trên, Việc thiết đặt csống bạn dạng nhiều LAB này đang hoàn chỉnh, nếu như muốn mày mò thêm các module khác thì bạn có thể dữ thế chủ động tìm tìm trường đoản cú trang chủ của Ansible hoặc các blog khác hoặc ngay trên các bài viết sau này trường đoản cú team xemlienminh360.net.

Chúc chúng ta bao gồm bước tiến thứ nhất vào hành trình dài khám phá Ansible này. xemlienminh360.net tin tưởng rằng nếu chăm chỉ thực hành và tò mò, bạn sẽ thấy có khá nhiều thú vị với Ansible với nhanh chóng gửi được vào thực tế.

Chúc các bạn hoan lạc, hãy đón hóng phần tiếp sau nhé.

Trân trọng cảm ơn

xemlienminh360.net team phía trên này


Ansible

Ansible

Previous post<10 phút ít > Ansile cần sử dụng để làm gì?Next postNhững điều trung tâm đắc nhất lúc áp dụng lệnh GREP
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *