Điểm:0

Tác vụ ansible xuất ra một tệp trong máy chủ ansible

lá cờ sd

Tôi đang viết một playbook sẽ kiểm tra phiên bản ứng dụng trên các máy chủ khác nhau và ghi đầu ra vào một biến Ansible.

Yêu cầu của tôi là tôi muốn xuất biến ansible thành tệp output.logĐoạn mã ansible để ghi biến ansible vào output.log.

Vấn đề là biến chỉ được ghi vào tệp cho máy chủ cuối cùng trong kho lưu trữ máy chủ, nhưng tôi muốn tất cả các máy chủ được thêm vào tệp output.log

Hình ảnh giới thiệu

lá cờ in
Vui lòng không đăng ảnh chụp màn hình văn bản mà bạn chỉ có thể sao chép và dán. Chỉ cần sao chép và dán văn bản.
Điểm:2
lá cờ in

Ủy quyền nhiệm vụ cho localhost và sử dụng tập tin dòng để thêm nó vào tập tin của bạn:

- tên: thông tin cửa hàng
  tập tin dòng: 
    đường dẫn: "/tmp/out.log"
    biểu thức chính quy: "\s{{ventory_hostname }}$"
    dòng: "{{ java_version.msg }} {{ventory_hostname }}"
    tạo: có
  ủy nhiệm_to: máy chủ cục bộ

Các biểu thức chính quy thuộc tính sẽ đảm bảo rằng các mục nhập cũ được thay thế khi bạn chạy lại playbook và phiên bản đã thay đổi.

Điểm:2
lá cờ cn

Cài đặt một kịch bản sự kiện để /etc/ansible/facts.d/java.fact trên các máy chủ từ xa và làm cho nó có thể thực thi được.Thoát khỏi JSON để in theo tiêu chuẩn là hơi xấu. Cũng xấu, phân tích một phiên bản "số" ra khỏi phiên bản java. Mặc dù bạn có thể đang thu thập phiên bản theo một cách khác, hãy điều chỉnh tập lệnh nếu cần.

#!/bin/sh
Java_VERSION=$(java -version 2>&1 | grep version | cut -d '"' -f 2)
printf "{\"java_version\": \"${JAVA_VERSION}\"}\n"

Viết một mẫu Jinja để in các dòng số phiên bản theo định dạng mong muốn. Nói tập tin là mẫu/javaversionreport.txt

  • các nhóm là một mệnh lệnh kỳ diệu của inventory_hostname được lập chỉ mục theo nhóm
  • hostvars là một phép thuật với các biến của các máy chủ khác
  • ansible_local là biến "sự kiện địa phương"
  • java là từ java.fact tên tập tin
{% cho máy chủ trong nhóm['hosts'] %}
{{ hostvars[host].ansible_local.java.java_version }} {{ máy chủ }}
{% endfor %}

Và chơi để thu thập dữ kiện và viết báo cáo. Điều chỉnh mẫu máy chủ như mong muốn.

---
- chủ nhà: chủ nhà
  thu thập_sự thật: Đúng
  fact_path: /etc/ansible/facts.d


- máy chủ: localhost
  thu thập_facts: Sai

  nhiệm vụ:
  - mẫu:
      src: javaversionreport.txt
      đích: /tmp/out.log

Kết xuất một mẫu chạy nhanh hơn viết lại tệp bằng linefinfile. Mặc dù việc thu thập thông tin thực tế có thể chậm. Ngoài ra, các mẫu Jinja có thể được viết ở bất kỳ định dạng nào bạn muố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.