我正在运行几个设置大致相同的 LEMP VM。每个 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/'
...
这是否可行(使用变量)?如果可行,如何操作?我应该从哪里开始查找?
答案1
您可以使用 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-别名.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
一次性将文件部署到所有主机。当然,您可以使用单个剧本部署所有配置,ansible 只会更改已更改的文件。使用 git 管理您的 ansible 目录,您甚至可以在一个地方查看配置的修订版本。