vars_prompt не работает в роли - Ansible - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь автоматизировать создание имени хоста для 10x машин, используя ансабельные роли.Что я хочу при выполнении playbook, так как это ожидание, введите имя пользователя вручную.

Я пытался с модулем vars_prompt для удовлетворения требований.Но здесь для одного файла * .yml я могу видеть ожидаемые результаты

Без роли - я вижу, что входные данные передаются в переменную host.но это работает нормально.

#host.yml . 
---
- hosts: ubuntu
  user: test
  sudo: yes
  vars_prompt:
    - name: host
      prompt: "Specify host name?"
      private: no

  tasks: 
    - debug:
        msg: ' log as {{ host }}'
    - name: Changing hostname 
      hostname:
        name: '{{ host }}'

С ролью <это не работает> {vars_prompt не работает}

#role.yml
---
- hosts: ubuntu
  user: test
  sudo: yes
  roles:
#    - hostname

#hostname/tasks/main.yml
- name: testing prompt 
  vars_prompt: 
    - name: host
      prompt: "Specify host name?"

- name: Ansible  prompt example
  debug:
    msg: "{{ host }}"

#Changing hostname
- name: Changing hostname
  hostname:
  name: "{{ host }}"

Здесь я получаю сообщение об ошибке как

ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.

The error appears to have been in '/root/roles/hostname/tasks/main.yml': line 1, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

- name: testing prompt
  ^ here

Я ожидаю, чтобы установить некоторые параметры, необходимо установить вручную в качестве входных данных при выполнении playbook.Нужно работать с этим модулем vars_prompt в роли.

1 Ответ

0 голосов
/ 18 июня 2019

Запустите первую игру с serial: 1 и введите имена хостов. Во 2-й пьесе (в той же пьесе) будут использованы факты .

- hosts: ubuntu
  serial: 1
  user: test
  sudo: yes
  tasks:
    - pause:
        prompt: "Specify hostname for {{ inventory_hostname }}?"
        echo: yes
      register: result
    - set_fact:
        host: "{{ result.user_input }}"

- hosts: ubuntu
  user: test
  sudo: yes
  roles:
    - hostname
...