我使用以下結構將我的host_vars分為明文和加密
ansible
├── ansible.cfg
├── host_vars
│ ├── host1
│ │ ├── vars
│ │ └── vault
│ └── host2
│ ├── vars
│ └── vault
├── inventory
├── site.yaml
└── vars
└── ansible_vars.yaml
有沒有辦法,使用ansible-vault加密兩個命名的檔案vault還是我必須一個一個地加密?
只是問一下,因為還有更多內容,例如在未來的目錄中group_vars。
我知道這有效
ansible-vault encrypt host_vars/host1/vault host_vars/host2/vault
只是問是否有更優雅/快速的解決方案
uj5u.com熱心網友回復:
shell 擴展提供了很多可能性。
在您的情況下,這里有兩個很有趣:
- 星號
*擴展,用作通配符。這意味著host_vars/*/vault將來也將匹配兩者host_vars/host1/vault和host_vars/host2/vault任何其他。 - 記住,如果在未來,你有一個更復雜的檔案夾層次結構
host_vars/*/vault將只匹配一個檔案夾級別(例如,它不匹配host_vars/level1/host1/vault),但多級檔案夾可以帶有雙重星號(實際上命名為實作globstar)host_vars/**/vault,將匹配host_vars/host1/vault以及host_vars/level1/host1/vault - 在括號展開,對其他手提供了更精細的可能性集合,舉例來說,如果我有主機名分布等之后
RedHat[1..5],Ubuntu[1..5]并且Debian[1..5],我可以通過只針對Debian的和RedHat的人host_vars/{Ubuntu*,RedHat*}/vault。
或者只針對前三個都使用host_vars/{Ubuntu{1..3},RedHat{1..3}}/vault,或者前三個都通過host_vars/*{1..3}/vault
作為一個更實際的例子,如果你通過 Ansible 處理 SE 并且想要加密檔案*.stackexchange.com,stackoverflow.com但不加密superuser.com或任何其他具有特定域名的問答,假設主機被命名為它們的 DNS 名稱,你可以這樣做
ansible-vault host_vars/{stackoverflow.com,*.stackexchange.com}/vault
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/357712.html
