Bảng tính Ansible GitHub

ansible-cheat-sheet

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
Bảng cheat Ansible

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ử
Bảng cheat Ansible

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ệt

Sử 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 ansible
0

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 ansible
1

Đ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 ansible
2

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 ansible
3

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 ansible
4

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 ansible
5

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 ansible
6

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ơi

Sẽ 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 ansible
7

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 ansible
8

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 ansible
9

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