Nginx

來自外部文件 (LEMP) 的源 bash.rc / 別名

  • September 24, 2018

我正在執行幾個具有基本相同設置的 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 目錄,你甚至可以在一個地方修改你的配置。

引用自:https://serverfault.com/questions/932340