Nginx
來自外部文件 (LEMP) 的源 bash.rc / 別名
我正在執行幾個具有基本相同設置的 LEMP VM。這些虛擬機中的每一個都有一個
/etc/profile.d/00-aliases.sh
包含一堆別名和函式以在伺服器上執行。現在,每當我對這些別名/函式進行更改時,我都必須手動將文件複製/粘貼到其他伺服器。每次通過 SSH 登錄時,我都想從外部源載入文件。我在其他伺服器上看到了這種行為,並在登錄時提示“正在載入外部腳本..”。最重要的是,它需要一些用於函式的局部變數和一些變數,因為每個伺服器上的主題和文件夾名稱略有不同。
所以最好的情況下我會有這樣的變數(虛擬碼):
var sitename = SiteA var sitepath = /html/path/
然後是一個像這樣的全域 bash.rc/aliases 文件:
alias goroot = 'cd {sitepath}' alias delses = 'rm -rf /var/session/' ...
這是否可能(使用變數),如果是,如何?我從哪裡開始看?
您可以將 ansible 與模板模組一起使用來部署文件:
.ansible/庫存
[lemp-hosts] host1 host2 ...
.ansible/group_vars/lemp-hosts.yml
profile_d: /etc/profile.d/
.ansible/host_vars/host1.ansible
sitename: SiteA sitepath: /html/path/
模板/00-aliases.sh
alias goroot = 'cd {{ sitepath }}' alias delses = 'rm -rf /var/session/' ...
劇本/deploy_aliases.yml
--- - hosts lemp-hosts tasks: - name: copy aliases.sh template: src: templates/00-aliases.sh dest: "/{{ profile_d }}/00-aliases.sh"
在控制主機上創建一個清單,以及特定於您的主機的 group- 和 hostvar 文件。然後,您可以一次將文件部署
ansible-playbook playbooks/deploy_aliases.yml
到所有主機。當然,您可以使用單個 playbook 部署所有配置,ansible 只會更改已更改的文件。使用 git 管理你的 ansible 目錄,你甚至可以在一個地方修改你的配置。