Điểm:0

Cách làm cho Ansible chạy hàng loạt tác vụ trên Cluster Node's - từng nút một

lá cờ cn

Tôi có một playbook ansible trông giống như sau. tôi cần Bắt đầu nâng cấp không ngừng hoạt độngNâng cấp Zero Downtime đã hoàn thành các bước. sẽ chạy một lần để đưa\remove cluser vào chế độ nâng cấp. ngoài ra tôi cần tất cả các nhiệm vụ vào Chặn sẽ chỉ được chạy trên một nút cùng một lúc và tiếp tục đến nút tiếp theo sau khi chúng tôi nhận được HTTP 200

Bạn có thể vui lòng xem lại tệp yml không? hiện tại tôi nhận được LỖI! 'uri' không phải là thuộc tính hợp lệ cho Khối và nếu bạn có bất cứ đề nghị để cải thiện nó.

---
- tên: Bắt đầu nâng cấp không ngừng hoạt động
  máy chủ: atl
  nối tiếp: 1
  thu thập_facts: sai
  vars_files:
    vars.yml
  nhiệm vụ:
   - tên: nhận trạng thái Cụm
     run_once: đúng
     bạn:
      url: https://{{ base_url }}.XXX.com/rest/api/2/cluster/zdu/state
      tiêu đề:
       Loại nội dung: ứng dụng/json
      force_basic_auth: đúng
      xác thực_certs: sai
      người dùng: XXX
      mật khẩu: XXX
     đăng ký: phản hồi
  # - tên: gỡ lỗi.
  # gỡ lỗi: var=phản hồi
  # run_once: true
   - tên: kích hoạt API nâng cấp Zero Downtime
     run_once: đúng
     bạn:
      url: https://{{ base_url }}.XXX.com/rest/api/2/cluster/zdu/start
      phương pháp: ĐĂNG
      xác thực_certs: sai
      tiêu đề:
       Loại nội dung: ứng dụng/json
      force_basic_auth: đúng
      người dùng: XXX
      mật khẩu: XXX
      status_code: 201
# đăng ký: phản hồi
     khi nào: response.json.state == 'ỔN ĐỊNH'
  # - tên: gỡ lỗi.
  # run_once: true
  # gỡ lỗi: var=phản hồi
   - chặn:
      - name: tạo thư mục cho cấu hình sao lưu
        tập tin:
          đường dẫn: "{{ atl_backup_conf }}"
          trạng thái: thư mục
          chế độ: '0755'
          chủ sở hữu: atl
          nhóm: atl
      - tên: tập tin cấu hình sao lưu
        sao chép:
          src: "{{mục}}"
          đích: "{{ atl_backup_conf }}"
    # sao lưu: đúng
          remote_src: đúng
          chủ sở hữu: atl
          nhóm: atl
        with_items:
          - "{{ atl_app }}/bin/setenv.sh"
        bỏ qua_lỗi: đúng
      - tên: "dừng dịch vụ atl trên nút atl {{ ansible_hostname }}"
        #shell: /etc/init.d/atl dừng
        hệ thống:
          tên: atl
          trạng thái: đã dừng
        trở thành: vâng
- tên: Zero Downtime Upgrade đã hoàn thành các bước.
     máy chủ: atl
     vars_files:
      vars.yml
     nhiệm vụ: 
     - tên: kích hoạt thay đổi API nâng cấp Zero Downtime thành trạng thái Ổn định.
       run_once: đúng
       bạn:
        url: https://{{ base_url }}.XXX.com/rest/api/2/cluster/zdu/approve
        phương pháp: ĐĂNG
        xác thực_certs: sai
        tiêu đề:
          Loại nội dung: ứng dụng/json
        force_basic_auth: đúng
        người dùng: XXX
        mật khẩu: XXX
        status_code: 409 , 200

Điểm:1
lá cờ in

Bạn đã bỏ lỡ một dấu gạch ngang phía trước chặn.

Loại bỏ tất cả các thuộc tính nhiệm vụ của bạn trông như thế này:

  nhiệm vụ:
  - tên: nhận trạng thái Cụm
  - tên: kích hoạt API nâng cấp Zero Downtime
    chặn:
# ^-- thiếu dấu gạch ngang
      - name: "Nâng cấp nút atl {{ ansible_hostname }}."
      - name: tạo thư mục cho cấu hình sao lưu
      - tên: "dừng dịch vụ atl trên nút atl {{ ansible_hostname }}"
      - tên: Cài đặt Phiên bản atl mới.
    - tên: Cấu hình dịch vụ systemd.
# ^-- thụt lề không chính xác
      - tên: Tải lại Bật và Bắt đầu atl.service
      - tên: kiểm tra sức khỏe - kích hoạt trạng thái nút GET.

Như bạn thấy đấy, chặn hiện là một thuộc tính cho nhiệm vụ trước đó, nó phải ở cấp độ nhiệm vụ thay thế.

Ngoài ra, nhiệm vụ của bạn Định cấu hình dịch vụ systemd. không được thụt lề chính xác, nó phải ở cùng mức với các tác vụ khác.

  nhiệm vụ:
  - tên: nhận trạng thái Cụm
  - tên: kích hoạt API nâng cấp Zero Downtime
  - chặn:
# ^-- đã thêm dấu gạch ngang bị thiếu
      - name: "Nâng cấp nút atl {{ ansible_hostname }}."
      - name: tạo thư mục cho cấu hình sao lưu
      - tên: "dừng dịch vụ atl trên nút atl {{ ansible_hostname }}"
      - tên: Cài đặt Phiên bản atl mới.
      - tên: Cấu hình dịch vụ systemd.
# ^-- thụt vào chính xác
      - tên: Tải lại Bật và Bắt đầu atl.service
      - tên: kiểm tra sức khỏe - kích hoạt trạng thái nút GET.

YAML cực kỳ kén chọn về thụt đầu dòng.

lá cờ cn
` - tên: Bắt đầu nâng cấp không ngừng hoạt động máy chủ: atl nối tiếp: 1 thu thập_facts: sai vars_files: vars.yml nhiệm vụ: - tên: kích hoạt API nâng cấp Zero Downtime - chặn: - name: "Nâng cấp nút atl {{ ansible_hostname }}." - name: tạo thư mục cho cấu hình sao lưu - tên: "dừng dịch vụ atl nút atl" - tên: kiểm tra sức khỏe - kích hoạt trạng thái nút GET. thử lại: 720 chậm trễ: 5 - tên: Zero Downtime Upgrade đã hoàn thành các bước. máy chủ: atl nhiệm vụ: - tên: kích hoạt nâng cấp Zero Downtime run_once: đúng bạn:`
lá cờ cn
cảm ơn bạn đã trả lời, không biết làm thế nào tôi có thể làm cho nó dễ đọc hơn trong khu vực bình luận.?! Tôi cần 2 lệnh đầu tiên trong các tác vụ: sẽ được chạy một lần nhưng tất cả các lệnh trong - khối: sẽ được thực thi trên tất cả các nút trừ **từng nút** và cuối cùng lại từ **Nâng cấp các bước đã hoàn thành.** sẽ là chạy một lần trên một trong các nút.
lá cờ in
Bạn không thể làm cho nó có thể đọc được trong các bình luận. Nếu bạn có điều gì đó để thêm vào câu hỏi hiện tại của mình, hãy chỉnh sửa nó. Nếu bạn gặp một vấn đề mới, tốt hơn hết là chấp nhận câu trả lời đã giúp bạn và đặt một câu hỏi mới với vấn đề mới.
lá cờ cn
khi tôi chạy playbook, tôi gặp lỗi: `ERROR! không có mô-đun/hành động nào được phát hiện trong tác vụ. Có vẻ như lỗi ở main_new.yml': dòng 41, cột 9, nhưng có thể ở nơi khác trong tệp tùy thuộc vào vấn đề cú pháp chính xác. Dòng vi phạm dường như là: - chặn: - tên: Nâng cấp nút atl. ^ ở đây ` Tôi sử dụng ansible-playbook 2.10.9, bạn có chắc về cú pháp mô-đun `- block:` không? Tôi thấy có tồn tại `khối:` mà không có -
lá cờ in
Có, [tôi chắc chắn](https://docs.ansible.com/ansible/latest/user_guide/playbooks_blocks.html).
lá cờ in
Chúng tôi không thể cho bạn biết chính xác điều gì không ổn nếu không nhìn thấy trạng thái hiện tại của playbook của bạn.
lá cờ cn
thật không may, tôi không thể chia sẻ ở đây vì các nhận xét không thể đọc được. Tôi có thể chia sẻ trạng thái hiện tại bằng cách nào không?
lá cờ in
Như tôi đã nói với bạn: chỉnh sửa câu hỏi của bạn. Đừng xóa những gì đã có trong đó, chỉ cần thêm nó bên dưới.
lá cờ cn
nó đã báo lỗi cho tôi khi thử thêm nên tôi cập nhật nó dựa trên nhận xét cuối cùng của bạn
lá cờ cn
Tôi chỉ muốn chúng ta ở trên cùng một trang - Tôi cần tất cả các tác vụ trong 'lấy trạng thái Cụm' và 'lấy trạng thái Cụm' sẽ được thực thi một lần (run_once=true) và tất cả các tác vụ bên trong -block: sẽ được thực thi từng nút , ý tôi là trước tiên chạy tất cả các tác vụ trên nút đầu tiên trong nhóm máy chủ atl sau khi nút hoạt động nghĩa là tôi nhận được HTTP=200, nó có thể chuyển sang nút tiếp theo trong nhóm máy chủ atl, v.v. sau khi hoàn thành các tác vụ '-block:' có thể tiếp tục và chạy các tác vụ trong 'Các bước đã hoàn thành Nâng cấp không ngừng hoạt động.' chỉ trên một trong các nút (run_once=true) Tôi hy vọng nó rõ ràng hơn bây giờ
lá cờ cn
cảm ơn bạn, tôi quản lý nó.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.