Phiên bản
ansible all -a '/bin/date'9
Cấu hình
Tả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)
- ANSIBLE_CFG (biến môi trường)
- /ansible. cfg
- $HOME/ansible. cfg
- /etc/ansible/ansible. cfg
Hàng tồn kho
- ansible all -m command -a '/bin/date'0
- KHO HÀNG - đường dẫn cho tệp hàng tồn kho
- Mặc định - /etc/ansible/hosts
- ansible all -m command -a '/bin/date'1
- SUBSET - mẫu để giới hạn máy chủ
vở kịch
Trình tự thực hiện
- Tải biến (vars)
- Thu thập dữ kiện (gather_facts)
- Nhiệm vụ trước (pre_t task)
- Trình xử lý từ quá trình thực thi pre_t task
- Vai trò (vai trò)
- Nhiệm vụ (nhiệm vụ)
- Xử lý từ thực thi nhiệm vụ
- Đăng nhiệm vụ (post_t task)
Chơi các phím hành vi
- any_errors_fatal
- sự liên quan
- thu thập_sự kiện
- max_fail_percentage
- Không có nhật ký
- Hải cảng
- remote_user
- nối tiếp
- sudo
- su
các loại biến
- Biến kiểm kê (thư mục)
- host_vars/
- nhóm_vars/
- Biến vai trò
- Chỉ phạm vi cho các vai trò
- chơi biến
- lọ
- var_files
- biến nhiệm vụ
- Đặt giá trị thông qua phím tác vụ đăng ký
- biến phụ
- Đặt làm dòng lệnh bằng cách sử dụng --extra-vars
- ansible all -m command -a '/bin/date'2
- phạm vi toàn cầu
- dữ liệu bên ngoài
- plugin tra cứu
Danh sách ví dụ Ansible
- ansible-ví dụ-tải-yaml
Danh sách vai trò Ansible
- ansible-vai-tạo-tự-ký-cert
- ansible-role-image-resize
- ansible-role-openshift-custom-login-page
- ansible-role-openshift-custom-webconsole-logo
- ansible-role-openshift-registry-ssl-expose
- ansible-role-openldap-test-server
- ansible-role-kvm-nhà cung cấp-okd
Danh sách Playbook Ansible
- ansible-playbook-openshift-custom-login-page
- ansible-playbook-openshift-custom-webconsole-logo
- ansible-playbook-openshift-registry-ssl-expose
- ansible-playbook-tạo-tự-ký-cert
- ansible-playbook-openldap-test-server
- ansible-playbook-triển khai-ocp-on-rhev
- ansible-playbook-kvm-nhà cung cấp-okd
Tài liệu hữu ích
- phân tử
Thử nghiệm với Ansible
- https. //www. ansible. com/blog/testing-ansible-roles-with-docker
- http. // tài liệu. ansible. com/ansible/latest/test_strategies. html
- https. //www. ansible. com/blog/năm-câu-hỏi-thử-ansible-playbooks-roles
- https. //github. com/chrismeyersfsu/provision_docker
- Thử nghiệm Ansible Vai trò & Dự án https. //www. youtube. com/watch?v=5nddt6X2Alg&feature=youtu. thì là ở
- TDD với Ansible https. //www. youtube. com/watch?v=c21VnhhQYNQ
Tài liệu về vai trò
- ansible/đề xuất#19
- https. // tài liệu. gỡ lỗi. org/vi/mới nhất/
Bí mật, Thông tin xác thực, Kho tiền
- Quản lý bí mật với ansible-vault https. //www. youtube. com/watch?v=Y00sXHnt7F0
- Hashicorp Vault & Ansible https. //github. com/jhaals/ansible-vault
- https. // tài liệu. ansible. com/ansible/2. 4/ansible-vault. html
- Quy trình làm việc của ansible all -m command -a '/bin/date'3 được mô tả https. //ý chính. github. com/tristanfisher/e5a306144a637dc739e7
Ansible và Docker
- tài liệu ansible-container
- ansible-container trên Github
Ansible & Vagrant
- Nhà cung cấp 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 kho
tà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ình
Như 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. ansible
Khô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ịch
Playbook 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ô-đun
Cá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ến
Có nhiều cách khác nhau để chỉ định các biến
- Sách chơi
- Các tập tin
- Dòng lệnh
- hàng tồn kho
- Sự kiện (biến được khám phá)
- Đặt làm kết quả của một nhiệm 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: 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ục
tà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ện
Thiế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ặp
Tà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ồm
Bạ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ễn
Bao 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'50
Sau đó, 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'51
Và 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'52
Và như thường lệ
ansible all -a '/bin/date'53
Vì 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à ansible
Ansible 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