Выполнение задачи Ansible как определенный пользователь

Я пытаюсь выполнить определенную задачу Ansible как другой пользователь, чем тот, который выполняет сборник пьес. Мой .yml файл похож на это:

---

- hosts: staging_servers
  tasks:    
    - name: check user
      remote_user: someusername
      shell: whoami

Выполнение этой задачи показывает мне это whoami управляйте возвращает другого пользователя, чем я определил в задаче (точно, возвращает пользователя, который определяется в hosts файл называют ubuntu).

Я также пытался определить задачу как это:

---

- hosts: staging_servers
  tasks:
    - name: check user
      sudo: yes
      sudo_user: someusername
      shell: whoami

но затем я добираюсь'Missing sudo password'ошибка, хотя существует строка в sudoers файл, который говорит someusername ALL=(ALL) NOPASSWD:ALL и выдача команд с sudo на удаленной машине как someusername не просит у меня пароль.

Так, как я могу выполнить определенную задачу как другой пользователь, в котором не определяемое пользователем hosts файл или root самостоятельно?

23
задан 26 January 2015 в 17:36
2 ответа

Вы неправильно понимаете оба параметра. там:

  • remote_user - это параметр Ansible, который управляет пользователем SSH, который Ansible использует для подключения: ssh $ {REMOTE_USER} @remotehost

  • someusername ALL = (ALL) NOPASSWD: ALL - это конфигурация sudo, которая позволяет пользователю someusername выполнять все команды на любом хосте без пароля. Это не позволяет кому-либо запускать команды от имени someusername , хотя

В идеале вы должны войти в систему напрямую как правильный пользователь , и это то, о чем remote_user . Но обычно вы можете войти в систему только как администратор (скажем, ubuntu ) и должны выполнять команды sudo как другой пользователь (скажем, scrapy ). Затем вы должны оставить remote_user пользователю, который входит в систему, и добавить к заданию следующие доступные свойства:

- name: log in as ubuntu and do something as scrapy
  remote_user: ubuntu
  sudo: true
  sudo_user: scrapy
  shell: do-something.sh
19
ответ дан 28 November 2019 в 20:20

Обратите внимание, что после Ansible 1.9 формулировка sudo была заменена на на , таким образом,

sudo: yes
sudo_user: some_user

становится (предназначен каламбур):

become: yes
become_user: some_user

Подробнее см. здесь: https://stackoverflow.com/a/22749788/402727

16
ответ дан 28 November 2019 в 20:20

Теги

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