LINUX.ORG.RU
решено ФорумAdmin

Ansible, повышение привилегий.

 


0

3

Всем привет. Разбираюсь с 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.
Что я делаю не так?



Последнее исправление: thematt (всего исправлений: 3)

Ответ на: комментарий от ivanich

ПОЛУЧИЛОСЬ!

become_user: root
Спасибо. Целый день на это убил, а нужно было внимательней читать документацию.

thematt
() автор топика
Ответ на: комментарий от thematt

Та в ансибле столько «подводных камней» как оказалось, например всякие автозамены строковых yes/no на булевые значения и наооборот, ну и классические приколы с кавычками да и вообще много всего сейчас уже и не вспомню.

ivanich ★★
()
Ответ на: комментарий от ivanich

Хм, странном многие говорят что много подводных камней, но для меня эти проблемы и их решения казались банальными.

// А так если по делу у меня до рута с ключом сразу заходит.

itn ★★★
()
Ответ на: комментарий от itn

В простых конфигурациях эти «камни» и не видны, но как только начинается что либо отличное от прогона элементарных tasks - куча взаимосвязанных ролей с наркоманскими условиями в шаблонах то всплывает дофига ньюансов зачастую совсем не очевидных. На самом деле стремно то что ansible из простого и понятного инструмента может превратиться в очередной chef/puppet.

ivanich ★★
()
Последнее исправление: ivanich (всего исправлений: 1)
Ответ на: комментарий от ivanich

Мне помогло разбитие задач на кучи мелких, с максимальной унификацией, я наоборот считаю ansible лучиком света после puppet.

itn ★★★
()
Ответ на: комментарий от itn

Никто не спорит но бывают в жизни огорчения, приходишь весь такой с энтуазиазмом на новую работу а там уже куча стремного кода и приходится разбираться почему в этом месте такой костыль а там другой хотя до этого думал что ансибл простой и понятный.

ivanich ★★
()

--ask-become-pass

у тебя myuser sudo пускает без пароля или с паролем?

anton_jugatsu ★★★★
()
Ответ на: комментарий от ivanich

в ansible>1.9 sudo: yes типа deprecated

Упс. Значит пора поправить у себя.

AlexVR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.