Ansible khác với việc đơn giản chạy vỏ bash cung cấp trong Vagrant như thế nào?


39

Một nhóm các hệ thống CNTT đã hết hạn sử dụng kịch bản shell để giải quyết vấn đề của họ, đang dự tính bắt đầu sử dụng Ansible thay thế.

Có sự khác biệt đáng kể và lý do chính đáng để bắt đầu sử dụng Ansible so với để tiếp tục viết các kịch bản shell?

Câu trả lời:


29

Tôi chưa bao giờ sử dụng Ansible nhưng kể từ một vài tuần, tôi cố gắng tìm hiểu xem Ansible có thể tốt như thế nào so với scrips Shell Điều đó chứng tỏ, ít nhất là trong trường hợp của tôi, rằng các chiến dịch quảng cáo ám ảnh mà họ chạy có hiệu quả! Sau nhiều lần thử không thành công, điều này chứng tỏ tài liệu của họ thất bại như thế nào khi trả lời một trong những câu hỏi rõ ràng nhất mà tôi nghĩ rằng cuối cùng tôi đã hiểu được:

Bây giờ, chúng ta hãy xem video giới thiệu và đi ngẫu nhiên như một người dùng mới tiềm năng thông qua tài liệu giới thiệu về Ansible ans hãy so sánh nó với những gì một lập trình viên có trình độ có thể tạo ra ngay lập tức.

Kết luận của tôi là về kịch bản shell, Ansible về cơ bản cung cấp 1. Khả năng kiểm tra xem hệ thống có đồng ý với trạng thái mong muốn không, 2. khả năng tích hợp với Ansible Tower, một hệ thống trả tiền dường như bao gồm khả năng giám sát. Trong một số trường hợp quan trọng, như khi triển khai mẫu máy chủ bất biến, điểm 1 có lẽ không hữu ích lắm, vì vậy danh sách, khá mỏng.

Kết luận của tôi là những lợi ích mà Ansible mang lại đối với kịch bản shell, như tài liệu trình bày về chúng, có thể hợp lý trong một số ít trường hợp lạc quan được bao phủ bởi các mô-đun có sẵn nhưng nhỏ hoặc thậm chí là giả thuyết trong trường hợp chung. Đối với một lập trình viên có trình độ tay nghề cao có lẽ, những lợi ích này rất có thể được cân bằng bởi các khía cạnh khác của sự đánh đổi.

Nhưng điều này có lẽ chỉ chứng minh tài liệu giới thiệu tệ đến mức nào!

Video bắt đầu nhanh:

Có một video bắt đầu nhanh chóng . Nó bắt đầu với một trang tuyên bố rằng, đây cũng không phải là những tuyên bố thực sự, đây là những danh sách gạch đầu dòng, một vật phẩm thường được sử dụng để đình chỉ phán quyết quan trọng trong các bài thuyết trình (vì logic không được hiển thị, nên nó không thể bị chỉ trích!)

1. Ansible rất đơn giản:

1.1 Tự động hóa có thể đọc được của con người - Thông số kỹ thuật là tài liệu kỹ thuật, làm sao có thể

  name: upgrade all packages
  yum:
    name: '*'
    state: latest

dễ đọc hơn lời gọi yum tương ứng được tìm thấy trong shell-script? Hơn nữa, bất cứ ai có liên hệ với AppleScript đều chết cười khi họ đọc cuốn sách tự động hóa có thể đọc được của con người.

1.2 Không yêu cầu kỹ năng mã hóa đặc biệt - Mã hóa là gì nếu không viết thông số kỹ thuật chính thức? Họ có điều kiện, biến số, vì vậy, làm thế nào mà nó không mã hóa? Và tại sao tôi cần một cái gì đó tôi không thể lập trình, từ đó sẽ không linh hoạt? Tuyên bố là hạnh phúc không chính xác!

1.3 Các nhiệm vụ được thực hiện theo thứ tự - Chà, có thể một số người hâm mộ codegolf nhận thức được các ngôn ngữ thực thi các nhiệm vụ trong tình trạng rối loạn, nhưng thực thi các nhiệm vụ theo thứ tự hầu như không có vẻ gì đặc biệt.

1.4 Nhận năng suất nhanh chóng - Các lập trình viên có tay nghề hiện đang làm việc hiệu quả. Đối số phản biện này cũng nghiêm trọng như đối số ban đầu.

2. Ansible là mạnh mẽ

Một thủ thuật bán hàng phổ biến để bán đồ tạo tác là đánh lừa mọi người tin rằng họ sẽ có được quyền lực của các sản phẩm này. Lịch sử quảng cáo cho xe hơi hoặc đồ uống đẳng trương nên cung cấp một danh sách các ví dụ thuyết phục.

Ở đây Ansible có thể thực hiện triển khai ứng dụng trên mạng - nhưng kịch bản shell chắc chắn làm được, quản lý cấu hình của Google, nhưng đây chỉ là một tuyên bố về mục đích của công cụ, không phải là một tính năng và quy trình phối hợp công việc của Trọ có vẻ hơi tự phụ nhưng không có ví dụ nào ngoài những gì GNU Parallel có thể làm.

3. Ansible là không có tác nhân

Để điền vào cột, họ đã viết bằng ba cách khác nhau rằng điều này chỉ cần ssh, mà mọi người đều biết là một daemon và không liên quan gì đến các tác nhân này trong việc quản lý cấu hình thế giới!

Phần còn lại của video

Phần còn lại của video giới thiệu hàng tồn kho, là danh sách tài nguyên tĩnh (như máy chủ) và trình bày cách triển khai Apache trên ba máy chủ cùng một lúc. Điều này thực sự không phù hợp với cách tôi làm việc, nơi tài nguyên rất năng động và có thể được liệt kê bằng công cụ dòng lệnh được cung cấp bởi nhà cung cấp đám mây của tôi và được sử dụng bởi các hàm shell của tôi bằng cách sử dụng |toán tử đường ống . Ngoài ra, tôi không triển khai Apache trên ba máy chủ cùng một lúc, thay vào đó, tôi xây dựng một hình ảnh cá thể chủ mà sau đó tôi sử dụng để bắt đầu 3 cá thể là bản sao chính xác một trong những máy chủ khác. Vì vậy, phần dàn xếp của người Viking trong cuộc tranh luận có vẻ không phù hợp lắm.

Tài liệu ngẫu nhiên bước 1: Tích hợp với EC2

EC2 là dịch vụ điện toán từ Amazon, tương tác với nó được hỗ trợ bởi một số mô-đun Ansible . (Các nhà cung cấp điện toán đám mây phổ biến khác cũng được cung cấp):

# demo_setup.yml

- hosts: localhost
  connection: local
  gather_facts: False

  tasks:

    - name: Provision a set of instances
      ec2:
         key_name: my_key
         group: test
         instance_type: t2.micro
         image: "{{ ami_id }}"
         wait: true
         exact_count: 5
         count_tag:
            Name: Demo
         instance_tags:
            Name: Demo
      register: ec2

Kịch bản shell tương ứng về cơ bản sẽ giống hệt với YAML được thay thế bởi JSON:

provision_a_set_of_instances()
{
  aws --output=text ec2 run-instances --image-id …   
}

hoặc phiên bản JSON

provision_a_set_of_instances()
{
  aws --output=text ec2 run-instances --cli-input-json "$(provision_a_set_of_instances__json)"  
}

provision_a_set_of_instances__json()
{
  cat <<EOF
{
    "ImageId": … 
}
EOF
}

Cả hai phiên bản về cơ bản là giống hệt nhau, phần lớn tải trọng là phép liệt kê các giá trị khởi tạo trong cấu trúc YAML hoặc JSON.

Tài liệu ngẫu nhiên bước 2: Giao hàng liên tục và nâng cấp

Phần lớn nhất của hướng dẫn này không hiển thị bất kỳ tính năng thực sự thú vị nào: nó giới thiệu các biến (IIRC, shell script cũng có các biến)!, Và một mô-đun Ansible xử lý mysql, do đó, thay vì tìm kiếm sau, làm cách nào để tạo một người dùng mysql với các đặc quyền trên XY Lần và kết thúc bằng một cái gì đó như

# Create Application DB User
mysql --host "${mysql_host}" --user "${mysql_user}" --password "${mysql_password}" "${mysql_table}" <<EOF
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
EOF

bạn tìm kiếm sau khi làm thế nào để tôi tạo một người dùng mysql với các đặc quyền trên XY trong một trò chơi ansible và kết thúc bằng

- name: Create Application DB User
  mysql_user: name={{ dbuser }} password={{ upassword }}
              priv=*.*:ALL host='%' state=present

Sự khác biệt có lẽ vẫn không có ý nghĩa lắm. Trên trang đó, chúng tôi cũng phát hiện ra rằng Ansible có ngôn ngữ lập trình meta mẫu

{% for host in groups['monitoring'] %}
-A INPUT -p tcp -s {{ hostvars[host].ansible_default_ipv4.address }} --dport 5666 -j ACCEPT
{% endfor %}

Khi tôi nhìn thấy điều này, tôi thực sự ở trong vùng thoải mái của tôi. Kiểu lập trình meta đơn giản cho các ngôn ngữ khai báo này hoàn toàn giống với mô hình lý thuyết giống như BSD Makefiles! Điều mà tôi tình cờ đã lập trình rộng rãi Đoạn trích này cho chúng ta thấy rằng lời hứa làm việc với tệp YAML đã bị phá vỡ (vì vậy tôi không thể chạy các playbook của mình thông qua trình phân tích cú pháp YAML, ví dụ ). Nó cũng cho chúng ta thấy rằng Ansible phải thảo luận về nghệ thuật tinh tế của trật tự đánh giá: chúng ta phải quyết định xem các biến có được mở rộng tại phần khai báo của ngôn ngữ hay của phần ngôn ngữ hay không bắt buộc của ngôn ngữ. Ở đây lập trình shell đơn giản hơn, không có lập trình meta, ngoài nguồn cung cấp kịch bản rõ ràng eval hoặc bên ngoài. Đoạn trích vỏ tương đương giả thuyết sẽ là

enumerate_group 'monitoring' | {
  while read host; do
    …
  done
}

có độ phức tạp so với biến thể Ansible có thể chấp nhận được: nó chỉ sử dụng các cấu trúc đơn giản, thông thường, nhàm chán từ ngôn ngữ.

Tài liệu ngẫu nhiên bước 3: Chiến lược kiểm tra

Cuối cùng, chúng ta gặp những gì hóa ra là tính năng thực sự thú vị đầu tiên của Ansible: Tài nguyên Ansible là mô hình của trạng thái mong muốn. Như vậy, không cần thiết phải kiểm tra các dịch vụ được bắt đầu, các gói được cài đặt hay những thứ khác. Ansible là hệ thống sẽ đảm bảo những điều này là đúng. Thay vào đó, hãy khẳng định những điều này trong vở kịch của bạn. Bây giờ nó bắt đầu hơi thú vị, nhưng:

  1. Ngoài một số tình huống tiêu chuẩn dễ dàng thực hiện bởi các mô-đun có sẵn, tôi sẽ phải tự cung cấp các bit thực hiện kiểm tra, điều này có thể sẽ liên quan đến một số lệnh shell.

  2. Việc kiểm tra sự phù hợp của các cài đặt có thể không phù hợp lắm trong bối cảnh mẫu máy chủ bất biến được triển khai: nơi tất cả các hệ thống đang chạy thường được sinh ra từ một hình ảnh chính (ví dụ hình ảnh hoặc hình ảnh docker) và không bao giờ được cập nhật - chúng được thay thế bởi mới thay thế.

Mối quan tâm không được giải quyết: khả năng duy trì

Các tài liệu giới thiệu từ Ansible bỏ qua câu hỏi về khả năng bảo trì. Về cơ bản không có hệ thống loại, kịch bản lệnh shell có thể dễ dàng duy trì JavaScript, Lisp hoặc Python: chỉ có thể thực hiện tái cấu trúc mở rộng với sự trợ giúp của một thử nghiệm tự động mở rộng - hoặc ít nhất là các thiết kế cho phép thử nghiệm tương tác dễ dàng. Điều đó nói rằng, trong khi shell script là ngôn ngữ chung từ cấu hình và bảo trì hệ thống, gần như mỗi ngôn ngữ lập trình có một giao diện với shell. Do đó, hoàn toàn khả thi để tận dụng lợi thế bảo trì của các ngôn ngữ nâng cao, bằng cách sử dụng chúng để kết dính các bit khác nhau của các bit cấu hình shell. Đối với OCaml, tôi đã viết Rashell về cơ bản cung cấp một số mẫu tương tác phổ biến cho các quy trình con, điều này làm cho việc dịch các tập lệnh cấu hình sang OCaml về cơ bản là tầm thường.

Về phía Ansible, cấu trúc playbook rất yếu và sự hiện diện của tính năng lập trình meta làm cho tình huống về cơ bản trở nên tồi tệ như đối với kịch bản shell, với điểm trừ là không rõ ràng làm thế nào để viết bài kiểm tra đơn vị cho Ansible và đối số giới thiệu ad-hoc một ngôn ngữ cấp cao hơn có thể được bắt chước.

Độ chính xác của các bước cấu hình

Tài liệu của Ansible thu hút sự chú ý về sự cần thiết của việc viết các bước cấu hình tạm thời. Chính xác hơn, các bước cấu hình nên được viết để trình tự bước aba có thể được đơn giản hóa thành ab , tức là chúng ta không cần lặp lại bước cấu hình. Đây là một điều kiện mạnh hơn so với idempotency. Vì Ansible cho phép Playbook sử dụng các lệnh shell tùy ý, bản thân Ansible không thể đảm bảo rằng điều kiện mạnh hơn này được tôn trọng. Điều này chỉ dựa vào kỷ luật của lập trình viên.


Đây có vẻ như là một hướng dẫn ... ấn tượng!
Pierre.Vriens

4
Tôi không thể đồng ý nhiều hơn. Chúng tôi đã sử dụng Ansible được hơn 1 năm và hiện đang sử dụng các container Docker, được xây dựng với các tập lệnh bash cũ, đơn giản. Theo tôi, việc xác định trạng thái cũng là tính năng thú vị nhất, nhưng như bạn đã đề cập - có rất nhiều dịch vụ không có mô-đun Ansible tương ứng, vì vậy bạn luôn phải dự phòng các lệnh bash. Và vâng, chúng tôi cũng chỉ triển khai các container bất biến cho các máy chủ, vì vậy việc xác định trạng thái không thực sự là bất kỳ lợi thế nào trong trường hợp này.
Andreas

1
Sau khi sử dụng ansible triệt để tôi có thể xác nhận tất cả các điểm tôi đã thực hiện. Idempotency là có thể nhưng không được thi hành bởi ansible (xem mô-đun vmware_guest cho một công dân xấu), làm việc với hệ thống vĩ mô của họ là một nỗi đau thực sự và thật khó để thực hiện ngay cả các phương pháp điều trị cơ bản nhất trên dữ liệu có cấu trúc, một số điều cơ bản đang làm sai (định dạng playbook không thể ăn chế độ tệp Unix mà không cần trị liệu) và điều thực sự tốt duy nhất là tải các hàm hữu ích được viết cho ansible. Vì vậy, nếu Red Hat không đẩy sản phẩm đó, tôi không thể hiểu việc áp dụng rộng rãi.
Michael Le Barbier Grünewald

1
@Andreas Tôi đồng ý rằng bạn vẫn còn nhiều trường hợp cần quay lại shell hoặc các mô-đun lệnh không có nghĩa là trò chơi ansible của bạn không thể bình thường. Các mô-đun cốt lõi tự duy trì trạng thái bình thường bằng cách kiểm tra xem hành động đó có nên được thực hiện hay không. Bạn có thể tự làm điều tương tự với shell hoặc mô-đun lệnh bằng cách trước tiên chạy một tác vụ kiểm tra xem có nên làm gì đó không và đăng ký đầu ra của nó, sau đó thực hiện một điều kiện trên tác vụ thứ hai dựa trên đầu ra từ tác vụ đầu tiên.
Levi

1
@ MichaelLeBarbierGrünewald, tôi phải đồng ý về tổng thể, khi tôi làm việc với Ansible, thật khó khăn khi chạy và phải mất hàng tuần để có một playbook cùng nhau kết nối với cơ sở hạ tầng tại công ty dựa trên đám mây cũ của tôi, cung cấp linux phân phối, cài đặt LAMP / LEMP hoặc bất cứ điều gì. Một khi nó được hoàn thành, nó giúp chúng tôi tiết kiệm thời gian, nhưng phải mất một tháng chỉ để khởi động và chạy. Không ai trong chúng tôi là những người viết kịch bản bash chính vì vậy đó không phải là một sự thay thế.
Daniel

22

Khi bạn đặt nó theo cách này, ngay cả khi Ansible có một số lợi thế vốn có, lợi ích của việc sử dụng các công cụ quen thuộc (trong trường hợp này là kịch bản shell) phải được đánh giá cao hơn. Tôi không nghĩ rằng có một câu trả lời rõ ràng cho điều đó.

Nếu nhóm có thể đạt được những điều Ansible cung cấp với shell:

  1. Quản lý cấu hình khai báo, idempotent
  2. Truy cập vào các đoạn có thể sử dụng lại (ví dụ như playbooks) cho các dịch vụ phổ biến trong ngành.
  3. Quản lý đáng tin cậy thực hiện từ xa, với thử lại, logic lăn, vv

sau đó họ có thể có thể gắn bó với những gì họ biết.

Rốt cuộc, bạn có thể thực hiện "vệ sĩ" trong BASH. Bạn có thể tìm thấy rất nhiều công việc BASH hiện có để giải quyết nhiều tác vụ cấu hình máy chủ (về cơ bản là bất kỳ Dockerfile nào có 90% mã cài đặt bash). Bạn có thể nhận được khá gần với những gì Ansible / Salt / Chef-Zero cung cấp cho bạn mà không cần phải chuyển toàn bộ giải pháp hiện có của bạn sang các công cụ đó.

Đó là một hành động cân bằng giữa các khuynh hướng của NIH (không được phát minh ở đây) và đưa ra các kịch bản tốt, được thiết lập để ủng hộ một giải pháp mạnh mẽ hơn.

Một lưu ý cuối cùng cần ghi nhớ: làm thế nào để ngăn xếp công nghệ của bạn đo lường khi bạn cố gắng tuyển thêm người vào nhóm. Tìm kiếm những người có trải nghiệm Ansible dễ dàng hơn rất nhiều so với tìm kiếm những người có kinh nghiệm trong công cụ CM scripting tại nhà cụ thể của bạn. Đây không hoàn toàn là một xem xét kỹ thuật, hơn nữa là một văn hóa. Bạn có muốn trở thành một org kỳ lạ phát minh ra Ansible của chính nó, hay bạn muốn trở thành một org hợp lý tìm ra công cụ phù hợp cho công việc? Những quyết định đó ảnh hưởng đến khả năng vẽ tài năng của bạn.


4
Thích câu trả lời của bạn; Tôi cũng sẽ đề cập rằng, nếu nhóm bash sẽ không có trách nhiệm, quản lý thực thi và tái sử dụng, về cơ bản là viết khung quản lý cấu hình của riêng họ, có một chi phí liên quan và tất cả chúng ta đều biết rằng điều đó có thể thực sự khó chịu đối với các dự án nội bộ .
ᴳᵁᴵᴰᴼ

Tôi cũng đăng ký câu trả lời của bạn, đặc biệt là đã đặt kinh nghiệm có sẵn vào số dư. Tôi có hai người chỉ trích nhỏ: Đầu tiên là idempotency Đây là khóa học một khía cạnh quan trọng của hệ thống cấu hình, nhưng vì nó có thể sử dụng bất kỳ các lệnh shell có thể trong playbooks ansible, hệ thống có thể ở tốt nhất incitate để sử dụng idempotency. (Chúng tôi thực sự muốn một cái gì đó mạnh mẽ hơn mà idempotency aba = ab .) Thứ hai, việc quản lý đáng tin cậy thực hiện từ xa có thể hoàn toàn không liên quan trong một số trường hợp quan trọng, ví dụ như khi triển khai mẫu máy chủ bất biến sử dụng hình ảnh ví dụ.
Michael Le Barbier Grünewald

13

Câu trả lời trên bao gồm một phần của nó nhưng bỏ lỡ một trong những yếu tố quan trọng: thiết kế hội tụ. Tôi đã viết một số từ trước đây về điều này trong bối cảnh của Chef tại https://coderanger.net/thinking/ nhưng phiên bản ngắn là một tập lệnh bash là một tập hợp các hướng dẫn, trong khi một Playbook Ansible (hoặc công thức Chef, Salt trạng thái, vv) là một mô tả về trạng thái mong muốn. Bằng cách ghi lại trạng thái bạn muốn thay vì các bước bạn muốn thực hiện để đến đó, bạn có thể đối phó với nhiều trạng thái bắt đầu hơn. Đây là trung tâm của Lý thuyết Hứa hẹn như đã nêu trong CFEngine từ lâu và một thiết kế mà chúng tôi (các công cụ quản lý cấu hình) tất cả đã được sao chép kể từ đó.

tl; dr Mã Ansible nói những gì bạn muốn, mã bash nói cách làm một việc.


2
Bạn cũng có thể thêm một số tài liệu tham khảo cho "lý thuyết hứa hẹn", như sách hoặc bài báo, và bất kỳ tài liệu có giá trị nào khác nếu ai đó muốn tìm hiểu về nó?
Evgeny

1
Đó thực sự là những gì tôi đã ám chỉ khi tôi nói rằng bạn có thể viết mã bash idempotent (nghĩa là có thể bắt đầu bất cứ lúc nào, được chạy nhiều lần và hội tụ vào trạng thái mong muốn). Nhưng câu trả lời của bạn làm cho nó rõ ràng hơn nhiều.
Assaf Lavie

Vâng, idempotence là một tài sản quan trọng của các hệ thống hội tụ nhưng cả hai không phải lúc nào cũng được liên kết trực tiếp :) như đối với các tài liệu về Promise Theory, Mark Burgess (người tạo ra CFEngine) có một vài cuốn sách, tôi có thể tìm thấy các liên kết khi tôi quay lại máy tính xách tay.
coderanger


3

Một điều đáng chú ý là bạn sẽ có ít vấn đề hơn trong việc chạy các playbook ansible của mình trên các máy chủ từ xa. Vì đó là lý do chính để chạy ansible. Khi bạn đang sử dụng shell scripting, bạn vẫn cần có một cách để script scp'ing đến máy chủ từ xa.


Không phải Ansible chỉ là một trình bao bọc xung quanh ssh theo nghĩa này sao?
Evgeny

Về cơ bản, có. Nó ssh, sao chép các kịch bản python từ xa và chạy chúng. Điều đó có nghĩa là, btw, nếu mô-đun ansible của bạn phụ thuộc vào một số thư viện python, thư viện này sẽ có mặt trên máy từ xa, trong một số trường hợp.
Assaf Lavie

1
Và nếu bạn làm hỏng cấu hình ssh, bạn sẽ bị khóa khỏi máy, nhược điểm thông thường là đẩy và kéo.
Tensibai

1

Đó là năm 2019 và tôi vừa trải qua một vài ngày cho một đường cong học tập có thể hiểu được và đây là sự thật tuyệt đối: Ansible không đáng để gặp rắc rối.

chưa kết thúc, nó không chạy trên windows và sự kết hợp giữa cấu hình YAML và thông báo lỗi gây hiểu lầm sẽ khiến mắt bạn chảy máu. Có vẻ như gần như cố tình khủng khiếp và tôi có nghĩa là nghiêm túc. Đây rõ ràng là sản phẩm của một dự án phía nhà phát triển sysadins thất vọng. Có lẽ là một hipster.

Nếu bạn không yêu cầu any.of các tính năng của nó ngoài việc cung cấp và bạn chỉ được cung cấp trên một HĐH cụ thể. Vì lợi ích, hãy viết một shell.script đàng hoàng.

Ngay bây giờ, toàn bộ dự án làm tôi nhớ đến các diễn đàn linux ban đầu, nơi các noobs được nói với RTFM và chế giễu vì đã hỏi tại sao ai đó không thể viết GUI để định cấu hình cài đặt đồ họa. Bạn không hiểu nó phải không? Bạn nên bám vào cửa sổ ... có lẽ tôi sẽ giao phối .. hạnh phúc VI-ing.

Sử dụng Docker. Ưu tiên cho bất cứ điều gì. Docker cực kỳ đơn giản và mạnh mẽ.

Nhưng nếu bạn hoàn toàn phải cung cấp trên thiếc có sẵn thì sao? Các lựa chọn thay thế thực sự là gì?

Chà ... không có gì cả. Nhưng tôi sẽ hứa với bạn điều này, trừ khi ansible trở nên tốt hơn, sẽ sớm thôi. Bởi vì dù các fanboy có đẩy nó mạnh đến đâu, và tha thứ cho những thất bại của nó ... đó là 5 trên 10 cho nỗ lực.

SCP lên một kịch bản bash, và tự cứu mình khỏi rắc rối.


Đầu tiên, nó hoạt động trên windows thông qua Win_RM hoặc SSH. Thứ hai, cú pháp yaml rất hay và có thể được tạo bằng lập trình và trong khi một số lỗi có thể gây hiểu nhầm thì nó không khác gì Java hay Python làm hỏng ruột của nó trong một ngoại lệ. Thứ ba, khái niệm chỉ SCPing một tập lệnh đến một máy chủ không thể áp dụng trong môi trường đám mây rất năng động. Máy chủ nào? Các máy chủ có thể thay đổi mỗi ngày. Ansible cho phép các plugin kiểm kê dễ dàng cấu hình với các cách dễ dàng để nhóm các máy chủ và gán các biến cho chúng. Tôi không nghĩ Ansible không xứng đáng. Tôi nghĩ rằng nó quá mức cho môi trường của bạn.
Levi

@Levi vâng. Đó là tất cả lỗi của tôi mà ansible không chạy trên windows, có cấu hình không có lược đồ và, có thời gian học dài hơn và chi phí bảo trì cao hơn bất kỳ phương pháp bespoke nào để đạt được cùng một nhiệm vụ.
Richard

Đối với môi trường đám mây, có những cách tiếp cận khác cho các loại doanh nghiệp quy mô lớn có thể biện minh cho đường cong học tập. Tôi hiểu những gì ansible làm. Tôi chỉ không thấy thích hợp của nó.
Richard

Các thích hợp là một khung tự động dễ sử dụng cho nhiều máy. Nó không tuyệt vời cho Windows như với Linux. Nó cũng không tuyệt vời cho msdos và netware. Đó là năm 2019, các máy chủ windows là phân khúc nhỏ vô dụng ngày nay.
dyasny
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.