Tema berulang yang ada di playbook saya yang memungkinkan adalah bahwa saya sering harus menjalankan perintah dengan hak sudo ( sudo: yes
) karena saya ingin melakukannya untuk pengguna tertentu. Idealnya saya lebih suka menggunakan sudo untuk beralih ke pengguna itu dan menjalankan perintah secara normal. Karena dengan begitu saya tidak perlu melakukan perintah postingan biasa seperti membersihkan direktori chowning. Berikut cuplikan dari salah satu buku pedoman saya:
- name: checkout repo
git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
sudo: yes
- name: change perms
file: dest={{ dst }} state=directory mode=0755 owner=some_user
sudo: yes
Idealnya saya bisa menjalankan perintah atau set perintah sebagai pengguna yang berbeda walaupun itu memerlukan sudo untuk su ke pengguna itu.
sudo_user: "{{ ansible_ssh_user }}"
atau Anda akan mendapatkan kesalahan sintaksis yaml.become
sistem, bukan "sudo *".New Ansible variables and command line options are added to set these values for the duration of a play.
@ Brett jadi apakah itu berarti tugas selanjutnya setelah ini akan dijalankan olehsome_user
dan bukan pengguna asliremote_user
yang digunakan untuk terhubung ke host, apakah itu benar?Di Ansible 2.x, Anda dapat menggunakan
block
untuk kelompok tugas:sumber
Di Ansible> 1.4 Anda sebenarnya dapat menentukan pengguna jarak jauh di tingkat tugas yang seharusnya memungkinkan Anda untuk login sebagai pengguna itu dan menjalankan perintah itu tanpa menggunakan sudo. Jika Anda tidak dapat masuk sebagai pengguna itu maka solusi sudo_user juga akan berfungsi.
Lihat http://docs.ansible.com/playbooks_intro.html#hosts-and-users
sumber
Solusinya adalah dengan menggunakan
include
pernyataan denganremote_user
var (jelaskan di sana: http://docs.ansible.com/playbooks_roles.html ) tetapi harus dilakukan di playbook alih-alih tingkat tugas.sumber
Anda dapat menentukan
become_method
untuk mengganti metode default yang diatur dalamansible.cfg
(jika ada), dan yang dapat diatur ke salah satusudo, su, pbrun, pfexec, doas, dzdo, ksu
.Harus ditampilkan
sumber