ansible-cheat-sheetPhiên bảnansible all -a '/bin/date' 9 Show
Cấu hìnhTải tệp cấu hình từ các vị trí sau (được tìm thấy đầu tiên sẽ được sử dụng và ghi đè các tệp khác)
Hàng tồn kho
vở kịchTrình tự thực hiện
Chơi các phím hành vi
các loại biến
Danh sách ví dụ Ansible
Danh sách vai trò Ansible
Danh sách Playbook Ansible
Tài liệu hữu ích
Thử nghiệm với Ansible
Tài liệu về vai trò
Bí mật, Thông tin xác thực, Kho tiền
Ansible và Docker
Ansible & Vagrant
Ansible không có tác nhân và đang hoạt động bằng SSH. Nút điều khiển về cơ bản là máy tính xách tay của bạn nơi Ansible được cài đặt Hàng tồn khotài liệu chính thức https. // tài liệu. ansible. com/ansible/latest/user_guide/intro_inventory. html Hàng tồn kho là một tệp chứa danh sách các máy được quản lý Khoảng không quảng cáo mặc định nằm trong /etc/ansible/hosts Đây là một ví dụ mail.example.com [webservers] foo.example.com bar.example.com [dbservers] one.example.com two.example.com three.example.com ansible_user=administrator # this time with a range [webservers2] www[01:50].example.com Ví dụ tương tự trong yaml (bạn có quyền lựa chọn) all: hosts: mail.example.com: children: webservers: hosts: foo.example.com: bar.example.com: dbservers: hosts: one.example.com: two.example.com: three.example.com: ansible_user: administrator webservers2: hosts: www[01:50].example.com: Một máy chủ có thể thuộc nhiều nhóm nhưng có 2 nhóm mặc định. tất cả và chưa được nhóm. Nhóm tất cả chứa mọi máy chủ. Nhóm chưa được nhóm chứa tất cả các máy chủ không có nhóm nào khác ngoài tất cả Với Muối, có lẽ chúng tôi đã đặt các loại ngũ cốc trên máy chủ của mình và nhắm mục tiêu theo loại ngũ cốc Khoảng không quảng cáo có thể được tạo động từ tập lệnh sẽ lấy dữ liệu từ nguồn bên ngoài Chạy các lệnh đặc biệtSử dụng các lệnh đặc biệt Ansible sẽ thực hiện các hành động trên nhiều máy (sử dụng SSH) Bạn làm như vậy bằng cách chạy chương trình ansible ansible <inventory> <options> ví dụChạy một lệnh trên tất cả các máy ansible all -a '/bin/date' Đó là lối tắt cho mô-đun lệnh ansible all -m command -a '/bin/date' Ping tất cả các máy conda create -n ansible conda activate ansible conda install python=3.6.9 which pip pip install ansible0 Cài đặt gói (lưu ý tùy chọn -b để trở thành quản trị viên) conda create -n ansible conda activate ansible conda install python=3.6.9 which pip pip install ansible1 Điều này được minh họa rõ hơn với (cái thứ hai chúng tôi hiển thị "root") conda create -n ansible conda activate ansible conda install python=3.6.9 which pip pip install ansible2 Cài đặt apache2 với yum trên máy chủ web conda create -n ansible conda activate ansible conda install python=3.6.9 which pip pip install ansible3 Cài đặt phiên bản apache2 mới nhất với apt (đảm bảo cài đặt phiên bản apache2 mới nhất) conda create -n ansible conda activate ansible conda install python=3.6.9 which pip pip install ansible4 Gỡ cài đặt apache2 bằng apt (đảm bảo apache2 đã được gỡ cài đặt) conda create -n ansible conda activate ansible conda install python=3.6.9 which pip pip install ansible5 Sao chép tập tin trên nhiều máy conda create -n ansible conda activate ansible conda install python=3.6.9 which pip pip install ansible6 Bạn có thể thực hiện chạy khô bằng tùy chọn -C (kiểm tra). Nếu mô-đun không hỗ trợ chế độ kiểm tra, nhiệm vụ sẽ bị bỏ qua Sách chơiSẽ là một sai lầm khi viết các tập lệnh shell gọi các lệnh đặc biệt Nếu bạn cảm thấy cần phải làm như vậy, thì có lẽ bạn muốn viết một vở kịch Duy trì trạng thái & trôi cấu hìnhNhư bạn sẽ khám phá bên dưới, Ansible playbooks sẽ cho phép bạn chỉ định trạng thái dự kiến của các máy được quản lý Playbooks thể hiện một trạng thái mong muốn. Vì vậy, khi playbook được chơi hai lần, về lý thuyết sẽ không làm gì ở lần thứ hai. về lý thuyết. Bởi vì nó thực sự phụ thuộc vào cách các mô-đun được triển khai Nhưng vì Ansible không có tác nhân, bạn phải nhớ áp dụng playbook mới của mình cho các máy cũ Nếu bạn quên làm như vậy, máy cũ sẽ không có cấu hình như máy mới Điều này được gọi là trôi cấu hình Muối (xem https. //github. com/bfreuden/salt-cheat-sheet) là một giải pháp tốt hơn để giải quyết vấn đề trôi cấu hình vì mỗi máy được quản lý có một tác nhân (được gọi là tay sai) đảm bảo máy được quản lý luôn cập nhật Mặc dù vậy, Salt phức tạp hơn Ansible (chưa kể minion đang tiêu tốn một lượng RAM kha khá). Vì vậy, đối với cơ sở hạ tầng nhỏ, Ansible có thể là một giải pháp tốt hơn Salt có một mô-đun salt-ssh khá giống với Ansible, nhưng khi mới bắt đầu, tôi thấy Ansible dễ sử dụng hơn (chưa kể rằng salt-ssh không ngang bằng với muối) muối vs. ansibleKhông phải là một chuyên gia nói chuyện ở đây. chỉ là giải thích của tôi Muối thực sự tập trung vào việc duy trì trạng thái và biến đổi trạng thái đó Ansible là một công cụ cung cấp lửa và quên cấu trúc vở kịchPlaybook là các tệp yaml mô tả trạng thái mong muốn của một thứ gì đó Bạn áp dụng một playbook bằng cách chạy chương trình ansible-playbook conda create -n ansible conda activate ansible conda install python=3.6.9 which pip pip install ansible7 Playbook là con người và máy có thể đọc được Playbooks chứa vở kịch lượt chứa nhiệm vụ nhiệm vụ cuộc gọi mô-đun nhiệm vụ được chạy tuần tự Trình xử lý được kích hoạt bởi các tác vụ và được chạy một lần khi kết thúc lượt phát, chỉ khi tác vụ đã thực hiện thay đổi Tạo một vở kịch đầu tiên. tệp yml chứa conda create -n ansible conda activate ansible conda install python=3.6.9 which pip pip install ansible8 Sau đó, bạn có thể chạy playbook với conda create -n ansible conda activate ansible conda install python=3.6.9 which pip pip install ansible9 Bạn có thể có đầu ra dài dòng với -v all: hosts: mail.example.com: children: webservers: hosts: foo.example.com: bar.example.com: dbservers: hosts: one.example.com: two.example.com: three.example.com: ansible_user: administrator webservers2: hosts: www[01:50].example.com:50 mô-đunCác mô-đun kiểm soát những thứ bạn đang tự động hóa. Họ có thể hành động các tệp hệ thống, gói, v.v. Cấu trúc cơ bản là all: hosts: mail.example.com: children: webservers: hosts: foo.example.com: bar.example.com: dbservers: hosts: one.example.com: two.example.com: three.example.com: ansible_user: administrator webservers2: hosts: www[01:50].example.com:51 Có 450 mô-đun theo mặc định trong Ansible xử lýTrình xử lý được gọi khi một tác vụ hoàn thành, nhưng chỉ khi tác vụ đã thay đổi điều gì đó. Chẳng hạn, nếu bạn muốn sao chép cấu hình dịch vụ mới, bạn muốn khởi động lại dịch vụ. Nhưng nếu bản sao không làm gì (vì tệp đã có ở đây), bạn không muốn khởi động lại dịch vụ mà không có gì all: hosts: mail.example.com: children: webservers: hosts: foo.example.com: bar.example.com: dbservers: hosts: one.example.com: two.example.com: three.example.com: ansible_user: administrator webservers2: hosts: www[01:50].example.com:52 BiếnCó nhiều cách khác nhau để chỉ định các biến
all: hosts: mail.example.com: children: webservers: hosts: foo.example.com: bar.example.com: dbservers: hosts: one.example.com: two.example.com: three.example.com: ansible_user: administrator webservers2: hosts: www[01:50].example.com:53 Bạn có thể hiển thị tất cả các biến được tạo bởi ansible từ máy đích với all: hosts: mail.example.com: children: webservers: hosts: foo.example.com: bar.example.com: dbservers: hosts: one.example.com: two.example.com: three.example.com: ansible_user: administrator webservers2: hosts: www[01:50].example.com:54 Bạn có thể lọc đầu ra all: hosts: mail.example.com: children: webservers: hosts: foo.example.com: bar.example.com: dbservers: hosts: one.example.com: two.example.com: three.example.com: ansible_user: administrator webservers2: hosts: www[01:50].example.com:55 Điều thiết lập đó rất giống với Hạt muối (xem https. //github. com/bfreuden/salt-cheat-sheet#grains) biến toàn cụctài liệu chính thức https. //ansible-mẹo-và-thủ thuật. đọcthedocs. io/en/latest/ansible/inventory/#group_vars Bạn có thể xác định các biến sẽ hợp lệ cho tất cả các máy chủ của khoảng không quảng cáo Tạo một nhóm_vars/tất cả. tập tin yml all: hosts: mail.example.com: children: webservers: hosts: foo.example.com: bar.example.com: dbservers: hosts: one.example.com: two.example.com: three.example.com: ansible_user: administrator webservers2: hosts: www[01:50].example.com:56 Bạn cũng có thể tạo các biến sẽ chỉ được xác định cho các nhóm cụ thể bằng cách tạo một tệp được đặt tên theo nhóm, chẳng hạn như group_vars/webservers. yml all: hosts: mail.example.com: children: webservers: hosts: foo.example.com: bar.example.com: dbservers: hosts: one.example.com: two.example.com: three.example.com: ansible_user: administrator webservers2: hosts: www[01:50].example.com:57 Đăng ký biến, gỡ lỗi và điều kiệnThiết lập không chứa thông tin GPU như Hạt muối Nhưng chúng ta có thể sử dụng vỏ all: hosts: mail.example.com: children: webservers: hosts: foo.example.com: bar.example.com: dbservers: hosts: one.example.com: two.example.com: three.example.com: ansible_user: administrator webservers2: hosts: www[01:50].example.com:58 Và có lẽ nếu chúng ta có thể lấy đầu ra của một lệnh dưới dạng một biến? all: hosts: mail.example.com: children: webservers: hosts: foo.example.com: bar.example.com: dbservers: hosts: one.example.com: two.example.com: three.example.com: ansible_user: administrator webservers2: hosts: www[01:50].example.com:59 Làm điều gì đó bất kỳ trường hợp thất bại ansible <inventory> <options>50 Nhưng chúng ta thực sự nên làm điều này ansible <inventory> <options>51 vòng lặpTài liệu chính thức về vòng lặp https. // tài liệu. ansible. com/ansible/latest/user_guide/playbooks_loops. html Hãy sử dụng một vòng lặp để cài đặt một số gói ansible <inventory> <options>52 mẫu JinjaĐể biết tổng quan chi tiết hơn một chút về các mẫu Jinja, hãy xem https. //github. như freuden/salt-cheat-sheet#jinja-templates Và chính xác hơn là phiên bản nhận xét của trạng thái muối https. //github. com/bfreuden/salt-cheat-sheet#jinja-states Hãy viết một vở kịch sử dụng các mẫu Jinja ansible <inventory> <options>53 Hãy thêm biến computer_location vào khoảng không quảng cáo của chúng tôi ansible <inventory> <options>54 Và hãy viết chỉ số này. j2. tệp html ansible <inventory> <options>55 Bản mẫu này chỉ sử dụng các biến (đến từ nhiều nguồn khác nhau. khoảng không quảng cáo, playbook, sự kiện) và nhận xét Nhưng ngôn ngữ Jinja rất mạnh. bạn có thể sử dụng điều kiện, vòng lặp, v.v. Khi chạy lần đầu, playbook này sẽ tạo chỉ mục. tệp html. Khi chạy lần thứ hai, nó sẽ không làm gì vì tệp đã tồn tại với nội dung dự kiến. Nhưng nếu bạn thay đổi các biến của chỉ mục. j2. html, nó sẽ phát hiện một sự thay đổi Sử dụng lại mã với bao gồmBạn có thể soạn sách giải trí của mình bằng cách sử dụng lại các viên gạch nhỏ hơn hiện có (sách giải trí khác hoặc đơn giản là danh sách nhiệm vụ) Hãy tưởng tượng install_apache2 này. tệp yml là danh sách các tác vụ cài đặt apache2 ansible <inventory> <options>56 Và hãy tưởng tượng update_system này. yml playbook cập nhật hệ thống ansible <inventory> <options>57 Sau đó, bạn có thể đưa các tệp đó vào vở kịch ansible <inventory> <options>58 Vai diễnBao gồm cho phép chúng tôi soạn các tệp để xây dựng các sách giải trí lớn hơn nhưng nó có thể dẫn đến tình trạng lộn xộn nếu bạn không sắp xếp chúng đúng cách Ansible cũng đi kèm với cấu trúc thư mục được xác định trước. Khi bạn đang sử dụng nó, bạn thậm chí không phải viết các câu lệnh bao gồm. Các tệp được nhập tự động Vai trò là cách tự động tải vars_files, tác vụ và trình xử lý nhất định dựa trên cấu trúc tệp đã biết. Nhóm nội dung theo vai trò cũng cho phép dễ dàng chia sẻ vai trò với những người dùng khác tài liệu chính thức https. // tài liệu. ansible. com/ansible/latest/user_guide/playbooks_reuse_roles. html Đây là một cấu trúc dự án ví dụ ansible <inventory> <options>59 Vì vậy, ví dụ, xác định trình xử lý của vai trò apache trong vai trò/apache/trình xử lý/chính. yml ansible all -a '/bin/date' 50Sau đó, xác định các tác vụ của vai trò apache trong vai trò/apache/tác vụ/chính. yml. vai trò/apache/nhiệm vụ/chính. yml ansible all -a '/bin/date' 51Và cuối cùng xác định trang web. yml cực kỳ ngắn gọn nhờ quy ước đặt tên ansible all -a '/bin/date' 52Và như thường lệ ansible all -a '/bin/date' 53Vì cấu trúc thư mục này là một tiêu chuẩn, điều đó có nghĩa là bạn có thể sử dụng lại các vai trò được viết bởi những người khác trong cộng đồng Ansible thiên hà ansibleAnsible Galaxy là nơi mọi người chia sẻ vai trò của mình để người khác sử dụng lại https. //ngân hà. ansible. com/ Khi bạn tải xuống một vai trò, vai trò đó được lưu trữ trong /etc/ansible/roles nhưng có thể được định cấu hình (roles_path trong /etc/ansible/ansible. cfg) để bạn không phải sử dụng sudo để tải vai trò xuống |