2016-12-13 3 views
0

Как я могу получить доступ к переменной другого хоста? Я хотел бы получить доступ к slack_token varayable моего localhost на рабочем_хост.Ansible: Как я могу получить доступ к переменной другого хоста?

- hosts: localhost 
    vars: 
    slack_token: 123123123 
    tasks: 
    - block: 
     - name: test 
     debug: msg="{{ slack_token }}" 

- hosts: "{{ working_host }}" 
    vars: 
    slack_token: "{{ hostvars['localhost']['slack_token'] }}"                      
    tasks: 
    - block: 
     - name: test2 
     debug: msg={{ slack_token }} 

Сообщение об ошибке:

фатальным: [локальный]: FAILED! => {"failed": true, "msg": "поле 'args' имеет недопустимое значение, которое, как представляется, содержит переменную, которая не определена . Ошибка: {{hostvars ['localhost'] [' slack_token '] }}: 'ДИКТ объект' не имеет атрибута 'slack_token'

Любая идея

+0

Чего вы хотите достичь? 'slack_token' является переменной, определяемой по игре, а не определяемой хостом, поэтому она недоступна через' hostvars'. –

+0

Я хочу использовать slack_token с другими хостами. как я могу получить доступ к переменной play_definied? – Roberto

ответ

1

Чтобы получить доступ к slack_token отовсюду, либо:

  • передать его в качестве дополнительной переменной с -e slack_token=zzzz
  • определите его в вашем инвентаре под all group
+0

как я могу определить его под любой группой? – Roberto

+0

в файле './Group_vars/all.yml' или' [all: vars] 'в инвентаре –

0

Только что ответил на один и тот же вопрос в моем предыдущем посте.

Вот что я использовал:

set_fact: 
    myVar: "{{ hostvars[groups['all'][0]]['slack_token'] | default(False) }}" 

Но вы используете две пьесы в сборник пьес. Вы также можете попробовать скопировать файл на машину с указанием факта.

Смежные вопросы