2014-07-14 15 views
5

Ansible yapılandırmayı çevreye uyarlamakta bazı sıkıntılarım var. Ansible SSH tek kullanıcı ve Sudo diğeri olarak

Benim test ortamı: hayır
  • sadece bir kullanıcı (herhangi bir ayrıcalıkları olmadan, foo) SSH yoluyla bağlanmasına izin PermitRootLogin

    • sudo ayrıcalıklarıyla
    • Bir kullanıcı (ALL = (ALL bar) TÜM)

    Benim yanıtlayıcı 'konak envanter şuna benzer:

    [servers] 
    server1 ansible_ssh_host=192.168.0.1 ansible_sudo=true ansible_ssh_user=foo ansible_sudo_user=bar 
    

    Foo kullanıcısı için bir SSH anahtarım var.

    Ben çubuk şifre ile bu ad hoc komutu (veya başka) çalıştığınızda: Sonra

    ansible server1 -m raw -a "echo test > /etc/testfile" --ask-sudo-pass 
    server1 | FAILED => Incorrect sudo password 
    

    Ben foo şifre ile aynı komutu yaparsanız:

    ansible server1 -m raw -a "echo test > /etc/testfile" --ask-sudo-pass 
    Sorry, user foo is not allowed to execute '/bin/bash -c echo SUDO-SUCCESS-rlpfhamukjnsfyokqbjpbttviiuildif; echo test > /etc/testfile' as bar on server1. 
    

    Yani yanıtlayıcı 'kesinlikle foo kullanmak sudo kullanıcı olarak belirttiğim gibi değil. Foo yerine bar kullanımını zorlamak için bir yolu var mı? Gerçekten beni döndüren ben yanıtlayıcı 'ver gülüm (SSH ve çubuk şifre çubuk) her şey için aynı kullanıcıyı kullansalar bile, yanıtlayıcı' üzerinde sudo işlevselliği anlamıyorum:

    server1 | FAILED | rc=1 >> 
    echo test > /etc/testfile : Permission denied 
    

    Ben çubuğu olarak oturum ediyorum zaman benim ana bilgisayar ve "sudo echo testi>/etc/testfile" yapıp bana bar şifre soruyor ve komutu doğru yapıyor. Ansible davranışında nerede yanıldım? Böyle bunun

  • cevap

    4

    Think:

    • ansible_ssh_user ana bilgisayardaki sudo kullanıcı başka deyişle

  • ansible_sudo_user olarak ana bilgisayara ssha kullanıcı olduğunu sayfanı kullanarak kullanıcı ve komutları, örnek olarak, ansible'ın çalışacağı eşdeğer komutlar şunlardır:

    Bu nedenle bar kullanıcısı değil, foo kullanıcı şifresi sağlanmalıdır. foo kullanıcısının, sudo'nun bar olarak ayrıcalıklarına ihtiyacı olacaktır. sudoers böyle bir şey:

    foo ALL=(bar) NOPASSWD: ALL 
    

    Şimdi foo hiçbir şifre ile bar gibi tüm komutları çalıştırabilirsiniz.