Я использовал шаблон CentOS-2nics-lb-cluster azure для создания тестовой среды с двумя виртуальными машинами. Пользователь с правами администратора по умолчанию создается с помощью этого большого двоичного объекта.
"osProfile": {
"computerName": "[concat('vm', copyIndex())]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]"
},
Конфигурация sshd на Azure vms содержит
#RSAAuthentication yes
#PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication yes
UsePAM yes
что, кажется, указывает на то, что PasswordAuthentication и PubkeyAuthentication включены.
Я создал свою собственную пару ключей SSH и скопировал открытый ключ на две виртуальные машины Azure, что позволяет мне выполнять вход по SSH без пароля.
В моем сценарии я хочу использовать доступные сценарии для установки базы данных и Java-приложения на две виртуальные машины.
Мой основной файл инвентаря доступного содержания содержал
[all]
test01vm0 ansible_host=test01.cloudapp.azure.com ansible_port=50000
test01vm1 ansible_host=test01.cloudapp.azure.com ansible_port=50001
В моем файле groups_vars / all у меня есть
# ssh access
ansible_connection: ssh
В моем файле ansible.cfg я определил значение private_key_file как
[defaults]
private_key_file=/home/pc/.ssh/id_rsa.pem
У меня есть простая задача, которая вызывает функцию "стать"
- name: create initial groups for the oracle user
become: yes
group: name={{ item }} state=present
with_items:
- "{{ oracle_group }}"
- "{{ oracle_dba_group }}"
и я выполняю сценарий как
ansible-playbook oracle.yml -vvv --step --sudo
Во всех случаях
<test01.cloudapp.azure.com> SSH: EXEC ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o Port=50000 -o 'IdentityFile="/home/pc/.ssh/id_rsa.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=admin -o ConnectTimeout=10 -o ControlPath=/home/pc/.ansible/cp/ansible-ssh-%h-%p-%r -tt test01.cloudapp.azure.com '/bin/sh -c '"'"'sudo -H -S -p "[sudo via ansible, key=kxsxqdhkkyuodnkvedsxmtozowbkltws] password: " -u root /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-kxsxqdhkkyuodnkvedsxmtozowbkltws; LANG=en_IE.UTF-8 LC_ALL=en_IE.UTF-8 LC_MESSAGES=en_IE.UTF-8 /usr/bin/python /home/admin/.ansible/tmp/ansible-tmp-1453477752.42-279575317679267/group; rm -rf "/home/admin/.ansible/tmp/ansible-tmp-1453477752.42-279575317679267/" > /dev/null 2>&1'"'"'"'"'"'"'"'"''"'"''
fatal: [test01vm0]: FAILED! => {"failed": true, "msg": "ERROR! Timeout (12s) waiting for privilege escalation prompt: "}
Может ли кто-нибудь помочь с причиной, по которой возникает эта ошибка «запрос повышения привилегий»? Нужно ли мне устанавливать значение ansible_ssh_user?