Я запускаю Xenial 16.04 VM, используя бродягу. VM выходит из окна с пользователем vagrant
с бродячим паролем без пароля для root
(хотя Ubuntu по-прежнему требует пароль, если вы ssh в root @ ubuntu-vm) Чтобы смоделировать производственный VPS, я создал deployer
пользователь с помощью этого Playbook:Невозможно использовать sudo с новым пользователем Ubuntu через ansible
- user:
name: deployer
groups: admin
password: "{{ deployer_password }}"
shell: /bin/bash
- name: "read authorized keys from root user"
become_user: vagrant
command: "cat ~/.ssh/authorized_keys"
register: "root_authorized_keys"
- debug: msg="{{root_authorized_keys}}"
- name: "create .ssh dir for deployer"
file: path="/home/deployer/.ssh" state=directory
- name: "copy authorized keys to deployer user"
shell: "echo '{{root_authorized_keys.stdout}}' > /home/deployer/.ssh/authorized_keys"
- name: "chown the authorized_keys file"
file: path="/home/deployer/.ssh" recurse=yes mode=0700 owner="deployer"
Когда я SSH в [email protected]
меня просят ввести пароль, то я вошел в VM, как и следовало ожидать. Также sudo
и sudo su
работают как ожидалось после ввода пароля для пользователя deployer
.
Проблема возникает, когда я пытаюсь выполнить sudo
через прослушиватель Ansible или через Ansible ad-hoc.
Обратите внимание на ответы, которые я получаю для следующих 4 анзибль команды:
$ ansible all -m ping -u vagrant
ubuntu-vm | SUCCESS => {
"changed": false,
"ping": "pong"
}
$ ansible all -m ping -u deployer
ubuntu-vm | SUCCESS => {
"changed": false,
"ping": "pong"
}
$ ansible all -m ping -u vagrant --sudo
ubuntu-vm | SUCCESS => {
"changed": false,
"ping": "pong"
}
$ ansible all -m ping -u deployer --sudo
ubuntu-vm | FAILED! => {
"changed": false,
"failed": true,
"module_stderr": "sudo: a password is required\n",
"module_stdout": "",
"msg": "MODULE FAILURE"
}
Какие варианты я должен использовать sudo
для deployer
успешно?
также принимать во внимание, что remote_user
для ubuntu-vm
хоста будет как vagrant
и deployer
пользователей. Если это возможно, я хотел бы способ использовать как в PlayBook (например: Я использую vagrant
пользователю создать deployer
пользователя, а затем я использую deployer
пользователя для других игр)
Может ли это использоваться и с 'ansible-playbook'? Если да, то как я могу передавать пароли для нескольких пользователей? (см. курсивный текст, который я написал после моего вопроса выше) –
'-ask-get-pass' работает, если мне нужно передать пароль только для одного пользователя, но я не могу понять, как передавать пароли нескольким пользователям , –
Я не думаю, что можно передавать пароли нескольким пользователям, если вы не используете Ansible Vault. Смотрите: http://serverfault.com/questions/560106/how-can-i-implement-ansible-with-per-host-passwords-securely – helloV