Tôi muốn tạo một cụm máy chủ, sử dụng ansible.
Trong một cuốn sách chính, tôi bao gồm một số sách phụ.
- include: playbook_commandserver.yml
- include: playbook_agent.yml
Trong playbook_commandserver.yml, tôi tạo máy chủ lệnh (trên aws). Sau đó, tôi kích hoạt một vai trò, sử dụng set_fact
mô-đun để ghi nhớ tên dns của máy chủ lệnh:
- name: Get hostname of command server
shell: /usr/bin/host $(/usr/bin/curl -s http://ipecho.net/plain) | /usr/bin/awk '{print $5}' | /usr/bin/awk -F 'aws.com' '{print $1"aws.com"}'
register: cs
- name: Set hostname of command server as fact
set_fact: commandserver="{{ cs.stdout }}"
Các commandserver
thực tế có sẵn trong vở kịch cùng, nhưng không phải trong playbook cùng .. hãy để một mình trong playbook_agent.yml
, mà được bao gồm, sau đó. Và nó chính xác ở đó, nơi tôi sẽ cần truy cập vào máy chủ thực tế đó.
Vậy làm thế nào để một bộ biến / lưu trữ, có giá trị cho việc chạy hoàn toàn ansible?
Tôi đã tìm thấy điều này: /programming/26732241/ansible-save-registered-variable-to-file Tuy nhiên với tôi đây có vẻ là một vụ hack xấu xí.
Có không có giải pháp tốt hơn cho vấn đề này? Có cách nào để đặt biến không, có hợp lệ cho toàn bộ hoạt động không?