Tôi là một người mới đến ansible và tôi đang sử dụng một playbook rất đơn giản để phát hành sudo apt-get update
và sudo apt-get upgrade
trên một vài máy chủ.Làm thế nào để lưu trữ ansible_become_pass trong một kho tiền và cách sử dụng?
Đây là playbook Tôi đang sử dụng:
---
- name: Update Servers
hosts: my-servers
become: yes
become_user: root
tasks:
- name: update packages
apt: update_cache=yes
- name: upgrade packages
apt: upgrade=dist
và đây là một chiết xuất từ ~/.ansible/inventory/hosts
tập tin của tôi:
[my-servers]
san-francisco ansible_host=san-francisco ansible_ssh_user=user ansible_become_pass=<my_sudo_password_for_user_on_san-francisco>
san-diego ansible_host=san-diego ansible_ssh_user=user ansible_become_pass=<my_sudo_password_for_user_on_san-diego>
Đây là những gì tôi nhận được nếu tôi khởi động playbook:
$ ansible-playbook update-servers-playbook.yml
PLAY [Update Servers] **********************************************************
TASK [setup] *******************************************************************
ok: [san-francisco]
ok: [san-diego]
TASK [update packages] *********************************************************
ok: [san-francisco]
ok: [san-diego]
TASK [upgrade packages] ********************************************************
ok: [san-francisco]
ok: [san-diego]
PLAY RECAP *********************************************************************
san-francisco : ok=3 changed=0 unreachable=0 failed=0
san-diego : ok=3 changed=0 unreachable=0 failed=0
Điều làm phiền tôi là tôi có mật khẩu cho người dùng của mình user
được lưu trữ trong bản rõ trong tập tin ~/.ansible/inventory/hosts
của tôi.
Tôi đã đọc khoảng vaults, tôi cũng đã đọc về số best practices for variables and vaults nhưng tôi không hiểu cách áp dụng điều này vào trường hợp sử dụng rất tối thiểu của mình.
Tôi cũng đã cố sử dụng lookups. Trong thời gian ở chung họ cũng làm việc trong các tập tin hàng tồn kho, và tôi có thể làm điều gì đó như thế này:
[my-servers]
san-francisco ansible_host=san-francisco ansible_ssh_user=user ansible_become_pass="{{ lookup('env', 'ANSIBLE_BECOME_PASSWORD_SAN_FRANCISCO') }}"
nơi trường hợp này, mật khẩu sẽ được lưu trữ trong một biến môi trường được gọi là ANSIBLE_BECOME_PASSWORD_SAN_FRANCISCO
; không có cách nào để tìm kiếm các biến trong hầm như xa như tôi biết.
Vậy, làm cách nào để sắp xếp tệp của mình sao cho tôi có thể tra cứu mật khẩu của mình từ đâu đó và lưu trữ chúng một cách an toàn?
Cảm ơn! Tôi đã thử nghiệm giải pháp đầu tiên (chỉ định tệp vault từ dòng lệnh dưới dạng tùy chọn) và nó hoạt động! Tôi phải chỉ ra cho những người khác chú ý đến ký hiệu '@', trên thực tế, tài liệu về 'ansible-playbook' nói cho tùy chọn '-e':« Để tải các biến từ một tệp, hãy chỉ định tệp trước @ (ví dụ: @ vars.yml). » – CristianCantoro