У меня есть простая инструкция по использованию Ansible, которая создает список tmux
сеансов, а затем запускает сценарий внутри каждого сеанса. Я пытаюсь дать tmux
имена сессий в моем vars.yml
файл.
Моя проблема в том, что я хочу запустить одну и ту же команду во всех tmux
сеансы создаю. Вот простой учебник, который у меня есть.
Очевидно, что в нынешнем виде сценарий не работает. Мне сложно понять, как:
tmux
сеанс (в каталог с тем же именем, что и сеанс).
---
- hosts: all
vars_file:
- vars.yml
tasks:
- name: "Create tmux sessions for each server."
command: tmux new -d -s {{ servers }}
- name: "Start each server in its tmux session."
shell: >
tmux send-keys -t {{ servers }} "./start.sh" Enter
---
# Name of all tmux sessions running on server
servers:
- creative
- development
- lobby
- proxy
- survival
- workflow
Любые советы о том, как я мог бы разумно ссылаться на текущую переменную, выполняемую в команде оболочки (например, cd ~/{{ current_variable }}/scripts/ && ./start.sh
)? Спасибо!
Вам нужно перебрать servers
переменная в вашей пьесе:
В ansible 1.x это будет сделано:
---
- hosts: all
vars_file:
- vars.yml
tasks:
- name: "Create tmux sessions for each server."
command: tmux new -d -s {{ item }}
with_items: servers
- name: "Start each server in its tmux session."
shell: >
tmux send-keys -t {{ item }} "./start.sh" Enter
with_items: servers
В ansible 2.x вам нужно указать переменную, используемую with_items
директива: "{{ servers }}"
.