Analisa através de uma lista de variáveis Ansible e refere-se a si mesmo durante a execução da tarefa

1

Problema

Eu tenho um playbook Ansible simples que cria uma lista de tmux sessions e, em seguida, executa um script dentro de cada sessão. Eu estou tentando dar os nomes de tmux sessions no meu arquivo vars.yml .

Meu problema é que eu quero executar o mesmo comando em todas as sessões tmux que eu criei. Aqui está o manual que eu tenho.

Playbook

Obviamente, o manual é quebrado em sua forma atual. Estou com dificuldade de descobrir como:

  1. Navegue até o diretório correto para cada sessão tmux exclusiva (para um diretório com o mesmo nome da sessão)
  2. Iniciar um script (mesmo nome compartilhado em todas as sessões) na pasta navegada para

.

---
- 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

Variáveis

---
# Name of all tmux sessions running on server
servers:
  - creative
  - development
  - lobby
  - proxy
  - survival
  - workflow

Alguma dica de como eu posso me referir inteligentemente à variável atual em execução no comando shell (por exemplo, cd ~/{{ current_variable }}/scripts/ && ./start.sh )? Obrigado!

    
por Justin W. Flory 16.06.2016 / 21:39

1 resposta

2

Você precisa iterar sobre a variável servers no seu manual:

Em ansible 1.x isso seria feito:

---
- 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

Em ansible 2.x você precisa citar a variável usada pela diretiva with_items : "{{ servers }}" .

    
por 16.06.2016 / 22:12