2016-12-30 4 views
-1

Я запускаю 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 пользователя для других игр)

ответ

2

Попробуйте --ask-sudo-pass

Это будет запрашивать пароль.

ansible all -m ping -u deployer --sudo --ask-sudo-pass 

В анзибль 1.9+, рекомендуется использовать --become и --ask-become-pass так --sudo и --ask-sudo-pass устарели. Become (Privilege Escalation)

+0

Может ли это использоваться и с 'ansible-playbook'? Если да, то как я могу передавать пароли для нескольких пользователей? (см. курсивный текст, который я написал после моего вопроса выше) –

+0

'-ask-get-pass' работает, если мне нужно передать пароль только для одного пользователя, но я не могу понять, как передавать пароли нескольким пользователям , –

+0

Я не думаю, что можно передавать пароли нескольким пользователям, если вы не используете Ansible Vault. Смотрите: http://serverfault.com/questions/560106/how-can-i-implement-ansible-with-per-host-passwords-securely – helloV