Я использую несколько виртуальных машин LEMP с практически идентичными настройками. Каждая из этих виртуальных машин имеет /etc/profile.d/00-aliases.sh
содержащий набор псевдонимов и функций для запуска на сервере. Теперь, когда я вношу изменения в эти псевдонимы / функции, мне приходится вручную копировать / вставлять файл на другие серверы.
Я хочу загружать файл из внешнего источника каждый раз, когда я вхожу в систему через SSH. Я видел такое поведение на других серверах с запросом «Загрузка внешних сценариев ..» при входе в систему. Вдобавок к этому потребуются какие-то локальные переменные для функций и некоторые переменные, потому что есть небольшие различия в темах и именах папок на каждом сервере.
В лучшем случае у меня будет что-то вроде этого для переменных (псевдокод):
var sitename = SiteA
var sitepath = /html/path/
а затем один глобальный файл bash.rc / aliasses, например:
alias goroot = 'cd {sitepath}'
alias delses = 'rm -rf /var/session/'
...
Возможно ли это (с переменными), если да, то как? Где мне начать искать?
Вы можете использовать ansible с модуль шаблона для развертывания ваших файлов:
.ansible / inventory
[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/'
...
playbooks / 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, и у вас даже есть версии вашей конфигурации в одном месте.