Возможность подключения через ssh после заполнения определенных задач паролями. - PullRequest
0 голосов
/ 17 июня 2019

В Ansible у меня есть необходимость выполнить набор задач и получить пароли от третьей стороны (эта часть была обработана), а затем использовать эти учетные данные SSH для подключения.

Проблема в том, что, кажется, когда я делаю это, лучший способ перебрать мой инвентарь - это включить список задач, это здорово.Основная проблема заключается в том, что я могу получить это, только если я укажу хосты в моей пьесе main.yml для localhost.(Или задайте имя группы серверов и укажите соединение: локальное), что заставляет командный модуль выполняться локально, что противоречит цели.

Я пытался заглянуть в модуль SSH, но похоже, что он не регистрируется, чтобы дать мне сообщение об обнаружении no_action.Я знаю, что я, вероятно, пропускаю что-то вопиющее.

Я буду публиковать ближе к точному коду позже, но сейчас у меня есть

main.yml 
---
- hosts: localhost

  tasks:
    - name: subplay
      include: secondary.yml
      vars:
        user:myUser
        address:"{{hostvars[item].address}}"
      with_items: hostvars['mygroup']


secondary.yml
---
- name: fetch password
  [...fethchMyPassword, it works]
  register: password

- name: 
  [...Need to connect with fetched user for this task and this task only..]
  command: /my/local/usr/task.sh

Я хочу подключиться и выполнить сценарий там, но, кажется, неважно, что я пробую тожене выполняется вообще или выполняется локально.

Кроме того, я мог бы заметить, что я извлек https://docs.ansible.com/ansible/latest/plugins/connection/paramiko_ssh.html и https://docs.ansible.com/ansible/latest/plugins/connection/ssh.html, но должен что-то делать не так

1 Ответ

1 голос
/ 17 июня 2019

мне кажется, что только локальная задача должна быть делегирована на localhost, остальная часть - на my_group, а когда у вас есть вся информация о соединении, настройте соединение с помощью set_facts, установив значения в ansible_ {user, ssh_pass, password}попробуйте это:

main.yml 
---
- hosts: mygroup # inventory_hostname will loop through all your hosts in my_group
  tasks:
    - name: subplay
      include: secondary.yml
      vars:
        user:myUser
        address:"{{hostvars[inventory_hostname].address}}"

secondary.yml
---

- name: fetch password 
  [...fethchMyPassword, it works]
  delegate_to: localhost # this task is only run on localhost
  register: password    

- set_fact: # use registered password and vars to setup connection
    ansible_user: "{{ user}}"
    ansible_ssh_pass: "{{ password }}"
    ansible_host: "{{ address }}"


- name: Launch task # this task is run on each hosts of my_group
  [...Need to connect with fetched user for this task and this task only..]
  command: /my/local/usr/task.sh

запустите это с помощью

ansible-playbook main.yml

попробуйте написать роль с помощью файла second.yml и книгу с вашими main.yml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...