Ansible görevini belirli bir kullanıcı olarak çalıştırma


23

Belirli bir Ansible görevini, oynatma kitabını çalıştıran kişiden farklı bir kullanıcı olarak çalıştırmaya çalışıyorum. Dosyam .ymlşuna benziyor:

---

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

Bu görevi çalıştırmak bana whoamikomutun görevde tanımladığımdan farklı bir kullanıcı döndürdüğünü gösterir (tam olarak, hostsçağrılan dosyada tanımlanan kullanıcıyı döndürür ubuntu).

Ayrıca, görevi şöyle tanımlamaya çalıştım:

---

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

ama sonra ' Missing sudo password' hatası alıyorum, ancak sudoersdosyada uzak makinede someusername ALL=(ALL) NOPASSWD:ALLkomutları yazan ve bana bir şifre sormadığını söyleyen bir satır olmasına rağmen .sudosomeusername

Öyleyse, belirli bir görevi hostsdosyada veya rootkendisinde tanımlanmış kullanıcı olmayan farklı bir kullanıcı olarak nasıl çalıştırabilirim ?

Yanıtlar:


19

Buradaki her iki ayarı da yanlış anlıyorsunuz:

  • remote_user Ansible, bağlanmak için kullandığı SSH kullanıcısını kontrol eden bir Ansible ayarıdır:ssh ${REMOTE_USER}@remotehost

  • someusername ALL = (ALL) NOPASSWD: ALL , kullanıcının someusernameherhangi bir ana bilgisayarda parola olmadan tüm komutları çalıştırmasına izin veren bir sudo yapılandırmasıdır . Kimsenin someusernamesanki komut vermesine izin vermiyor .

İdeal olarak, doğrudan doğru kullanıcı olarak giriş yaparsınız ve hepsi budur remote_user. Fakat genellikle sadece yönetici bir kullanıcı olarak giriş yapabilirsiniz (diyelim ubuntu) ve başka bir kullanıcı olarak komutları sudo etmeniz gerekir (diyelim scrapy). Ardından remote_user, giriş yapan kullanıcıya bırakmalı ve işe aşağıdaki benzer özellikleri eklemelisiniz:

- name: log in as ubuntu and do something as scrapy
  remote_user: ubuntu
  sudo: true
  sudo_user: scrapy
  shell: do-something.sh

1
Anlıyorum. Bunu açıklığa kavuşturduğun için teşekkürler! Ancak belirli bir görev belirli bir kullanıcı olarak nasıl çalıştırılır?
errata

1
Not remote_userYerel makinede mevcut kullanıcıya varsayılan - SSH yaptığı gibi, aslında.
Capi Etheriel

Tamam, ama böyle bir kurulumla hala ' Missing sudo password' hata alıyorum. Belirli bir kullanıcı için şifre sormaktan kaçınmanın bir yolu var mı?
errata

Sanırım cevabı bulup sudo'lara satırı ekledim: ubuntu ALL=(someusername) NOPASSWD: ALLama bunun arkasındaki güvenlik hakkında düşünmek zorundayım ... Bu satırı sudolara eklemek dışında başka bir yol var mı?
errata

1
Bunun doğru yolu, uzaktaki kullanıcının doğrudan giriş yapmasına izin vermektir.
Capi Etheriel

16

Yanıtlayıcı '1.9 sonra Not sudoifade ile değiştirildi become, böylece

sudo: yes
sudo_user: some_user

olur (amaçlanan pun):

become: yes
become_user: some_user

Burada daha fazla özellik görün: /programming//a/22749788/402727

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.