@thematt

Как указать Ansible получать права через sudo?

Всем привет. Разбираюсь с Ansible, решил начать с создания служебного пользователя, которым он будет ходить на сервера. Т.к. вручную это делать утомительно и нелогично, написал playbook:
---
- hosts: myservers                                                                                                                                                 
  remote_user: myuser
  become: yes 
  become_user: myuser
  become_method: sudo
  tasks:
  - name: create ansible user
    user: 
      name: ansible 
      shell: /bin/bash 
      home: /home/ansible 

  - name: copy ssh pubkey to home directory
    authorized_key: 
      user: ansible 
      key: "{{ lookup('file', './ansible_pubkey') }}"
  
  - name: adding ansible user to sudoers
    lineinfile: 
      dest: /etc/sudoers 
      line: "ansible ALL=(ALL)       NOPASSWD: ALL" 
      validate: 'visudo -cf %s'


Идея в том, чтобы запустить выполнение от личного пользователя с доступом по паролю. На всех серверах имеется мой админский аккаунт myuser, который имеет sudo-привелегии.
Запускаю выполнение playbook'a так:
ansible-playbook -i hosts add-ansible-user.yml -k
На что получаю ответ:
TASK [create ansible user] *****************************************************
fatal: [myserver]: FAILED! => {"changed": false, "cmd": "/sbin/useradd -d /home/ansible -s /bin/bash -m ansible", "failed": true, "msg": "[Errno 13] Отказано в доступе", "rc": 13}

Т.е. Ansible попадает на сервер по ssh, но не может выполнить таску из-за недостаточных прав. Локально sudo работает корректно. Ansible версии 2.0.1.0.
Что я делаю не так?
  • Вопрос задан
  • 17174 просмотра
Решения вопроса 1
@thematt Автор вопроса
Решено, помогли на другом ресурсе. Из офф документации:
become_user set to user with desired privileges, the user you ‘become’, NOT the user you login as. Does NOT imply become: yes, to allow it to be set at host level.
В become_user указывается пользователь, права которого требуется получить через sudo, соответственно нужно было указать root'a, а не myuser.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы