Tạo khoảng không quảng cáo
vỏ> vật chủ mèo
[site_nfs_servers]
ansiblemục tiêu1
ansiblemục tiêu2
và đặt cổ phiếu vào host_vars
vỏ> mèo host_vars/ansibletarget1.yml
chia sẻ:
- đường dẫn: "/của tôi/đầu tiên/chia sẻ/đường dẫn"
khách hàng: "*"
tùy chọn: "rw, đồng bộ hóa"
- đường dẫn: "/của tôi/giây/chia sẻ/đường dẫn"
khách hàng: "*"
tùy chọn: "rw, đồng bộ hóa, root_squash"
vỏ> mèo host_vars/ansibletarget2.yml
chia sẻ:
- đường dẫn: "/ khác/chia sẻ/đường dẫn/khác/máy chủ"
khách hàng: "*"
tùy chọn: "ro, đồng bộ hóa"
Tạo một vai trò đơn giản để thử nghiệm
vỏ> vai trò cây/my_nfs_role/
vai trò/my_nfs_role/
âââ nhiệm vụ
â âââ main.yml
âââ mẫu
âââ xuất khẩu.j2
2 thư mục, 2 tập tin
vỏ> vai trò mèo/my_nfs_role/t task/main.yml
- mẫu:
src: xuất khẩu.j2
đích: /etc/exports.test
vỏ> vai trò mèo/my_nfs_role/templates/exports.j2
{% cho chia sẻ trong cổ phiếu %}
{{ share.path }} {{ share.client }} {{ share.options }}
{% endfor %}
Sau đó, sử dụng nhóm khoảng không quảng cáo và vai trò trong vở kịch
shell> cat playbook.yml
- máy chủ: site_nfs_servers
vai trò:
- my_nfs_role
Chạy playbook và tạo các tệp
shell> ansible-playbook -i hosts playbook.yml
CHƠI [site_nfs_servers] ************************************************ **
NHIỆM VỤ [my_nfs_role : template] ******************************************
đã thay đổi: [ansibletarget1]
đã thay đổi: [ansibletarget2]
...
shell> ssh admin@ansibletarget1 mèo /etc/exports.test
/của tôi/đầu tiên/chia sẻ/đường dẫn * rw, đồng bộ hóa
/my/second/share/path * rw,sync,root_squash
shell> ssh admin@ansibletarget2 mèo /etc/exports.test
/another/shared/path/different/server * ro,sync
Nhìn thấy Thiết lập Ansible mẫu.
Nếu bạn muốn giữ các chia sẻ trong một đối tượng, hãy đặt danh sách vào nhóm_vars. Để đơn giản hóa mã, hãy chuyển đổi danh sách thành từ điển. Bạn có thể dùng cộng đồng.General.groupby_as_dict Ví dụ
vỏ> mèo group_vars/all.yml
xuất khẩu:
- máy chủ: "ansibletarget1"
chia sẻ:
- đường dẫn: "/của tôi/đầu tiên/chia sẻ/đường dẫn"
khách hàng: "*"
tùy chọn: "rw, đồng bộ hóa"
- đường dẫn: "/của tôi/giây/chia sẻ/đường dẫn"
khách hàng: "*"
tùy chọn: "rw, đồng bộ hóa, root_squash"
- máy chủ: "ansibletarget2"
chia sẻ:
- đường dẫn: "/ khác/chia sẻ/đường dẫn/khác/máy chủ"
khách hàng: "*"
tùy chọn: "ro, đồng bộ hóa"
export_dict: "{{exports|community.General.groupby_as_dict('server') }}"
cho
xuất khẩu_dict:
có thể nhắm mục tiêu1:
máy chủ: ansibletarget1
chia sẻ:
- khách hàng: '*'
tùy chọn: rw, đồng bộ hóa
đường dẫn: /my/first/share/path
- khách hàng: '*'
tùy chọn: rw, đồng bộ hóa, root_squash
đường dẫn:/của tôi/giây/chia sẻ/đường dẫn
có thể nhắm mục tiêu2:
máy chủ: ansibletarget2
chia sẻ:
- khách hàng: '*'
tùy chọn: ro, đồng bộ hóa
đường dẫn:/khác/chia sẻ/đường dẫn/khác/máy chủ
Sau đó sửa đổi mẫu. Điều này sẽ tạo ra các tập tin giống như trước đây.
vỏ> vai trò mèo/my_nfs_role/templates/exports.j2
{% cho phần chia sẻ trong export_dict[inventory_hostname]['shares'] %}
{{ share.path }} {{ share.client }} {{ share.options }}
{% endfor %}