Развертывание разных ролей на разных серверах с помощью одного сценария

Чтобы выйти из файла bashrc, когда сеанс оболочки, который его получает, не интерактивен, вы можете выполнить следующее вверху (или в удобном месте) файла:

case "$-" in
    *i*)        ;;
    *)   return ;;
esac

Значение в $- представляет собой строку букв, обозначающую текущие установленные параметры оболочки.Если в строке присутствует символ i, оболочка является интерактивной.

Это может быть необходимо, поскольку, как указал terdon в комментариях, Bash рассматривает сеансы оболочки, запускаемые sshd, демоном SSH, как особый случай.

Подробности: Почему bashrc проверяет, является ли текущая оболочка интерактивной?

Далее в файле вы можете проверить, доступна ли оболочка fish и запустить ее:

if command -v fish 2>/dev/null; then
   exec fish
fi

Имейте в виду, что fish может быть игрой "Go Fish" на некоторых системах :-)

Об использовании команды -v: Почему бы не использовать "what"? Что тогда использовать?

1
28.05.2019, 16:28
2 ответа

Вы должны разделить свои hosts:и другие декларации на разные пьесы. Код должен выглядеть примерно так:

- name: Create front cluster
  become: yes
  hosts: front
  roles:
  - deploy_front

- name: Create db cluster
  become: yes
  remote_user: different-db-user
  hosts: db
  roles:
  - deploy_db
0
28.01.2020, 00:10

Причина, по которой вы получаете сообщение о дублирующемся ключе, связана со структурой YAML.

Сборник пьес представляет собой набор пьес в виде упорядоченного списка. Каждая игра определяется серией пар ключ/значение. Общие ключевые слова play : :name, hosts, becomeи roles, и это лишь некоторые из них.

В YAML для указания различных элементов в списке используется символ тире (-). В обоих ваших примерах playbook.xmlплейбуков у вас есть только один левый -самый тире символ. Это означает, что у вас есть только один список элементов для playbook или один playbook.

Если вы добавите символ тире перед вторым объявлением hostsво втором примере playbook.yml, у вас будет действующая книга воспроизведения, которая теперь содержит две пьесы:

- name: Create cluster
  become: yes

  hosts: front
  roles:
  - deploy_front

- hosts: db
  roles:
  - deploy_db

В исходном втором примере определено только одно воспроизведение. Более того, и ключевое слово hosts, и ключевое слово rolesопределены дважды в этой игре. YAML жалуется, что у вас есть два разных определения для ключевых слов hostsи roles.

0
28.01.2020, 00:10

Теги

Похожие вопросы