#ansible #user-input #ssh-keys #ansible-inventory
#ansible #пользовательский ввод #ssh-ключи #ansible-инвентаризация
Вопрос:
---
- name: Adding the host server
hosts: localhost
vars_prompt:
- name: "Server"
prompt: "Server IP"
private: no
- name: "User"
prompt: "Username"
default: "Ubuntu"
private: no
- name: "Passwd"
prompt: "Password"
private: yes
encrypt: "sha512_crypt"
- name: "IdFile"
prompt: "Identity file path(~/.ssh/id_rsa.pub)"
private: no
when: Passwd is undefined
- name: "cmd"
prompt: "Which command you want to run 1.ls -l 2.Top 3.uptime."
private: |-
no
tasks:
- name: Add host server
add_host:
name: "{{ Server }}"
ansible_ssh_user: "{{ User }}"
ansible_ssh_private_key_file: "{{ IdFile }}"
when: IdFile is defined
- name: Add host server
add_host:
name: "{{ Server }}"
ansible_ssh_user: "{{ User }}"
ansible_ssh_pass: "{{ Passwd }}"
when: Passwd is defined
- name: check OS name
shell: uname -a
delegate_to: "{{ Server }}"
- hosts: "{{ Server }}"
#below are for testing only.
tasks:
- name: Execute a command using the shell module
become: true
#become_user: root
shell: uname -a
- name: check OS name
shell: uname -a
delegate_to: "{{ Server }}"
Это выдает ошибку ниже:
фатальный: [localhost]: НЕДОСТУПЕН! => {«изменено»: false, «сообщение»: «Ошибка аутентификации»., «недоступно»: true}
Может ли кто-нибудь один раз проверить приведенный выше код и предложить изменения?
Комментарии:
1. Я могу использовать SSH без пароля с того же сервера только через скрипт, который не позволяет мне запускать команды на удаленном хосте. Поскольку я новичок в ansible, даже небольшая помощь будет оценена.
2. Похоже, у вас проблема с подключением к серверу. Пожалуйста, запустите свой сборник воспроизведения с
-vvvv
, чтобы просмотреть журналы подключений, вы можете обнаружить проблему там.3. Привет, Зигарн, это выполняется без каких-либо ошибок на вашем компьютере? проверенные журналы соединений здесь выглядят хорошо.
4. Я могу заставить это работать, да. Но я заметил несколько проблем:
when
на основе другого запрошенного параметра var не работает, Passwd всегда будет определен и не пустой (даже больше, когда вы его шифруете),ansible_ssh_pass
должно быть четкое значение пароля (поэтому попробуйте без шифрования), будьте осторожны, чтобы использоватьexpanduser
фильтр наIdFile
при хранении вansible_ssh_private_key_file
, чтобы иметь абсолютный путь (не уверен, что это обязательно, но для безопасности),IdFile
пример неверен, поскольку он показывает путь к файлу с открытым ключом (просто удалите.pub
)5. [ПРЕДУПРЕЖДЕНИЕ]: Не удалось сопоставить предоставленный шаблон хоста, игнорируя: I.P