Ya, Anda dapat menjalankan perintah pada host Ansible. Anda dapat menentukan bahwa semua tugas dalam permainan dijalankan pada host Ansible, atau Anda dapat menandai tugas individu untuk dijalankan pada host Ansible.
Jika Anda ingin menjalankan seluruh permainan pada host Ansible, maka tentukan hosts: 127.0.0.1
dan connection:local
dalam drama tersebut, misalnya:
- name: a play that runs entirely on the ansible host
hosts: 127.0.0.1
connection: local
tasks:
- name: check out a git repository
git: repo=git://foosball.example.org/path/to/repo.git dest=/local/path
Lihat Playbook Lokal di dokumentasi Ansible untuk lebih jelasnya.
Jika Anda hanya ingin menjalankan satu tugas pada host Ansible Anda, Anda dapat menggunakan local_action
untuk menentukan bahwa tugas harus dijalankan secara lokal. Sebagai contoh:
- name: an example playbook
hosts: webservers
tasks:
- ...
- name: check out a git repository
local_action: git repo=git://foosball.example.org/path/to/repo.git dest=/local/path
Lihat Delegasi dalam dokumentasi Ansible untuk lebih jelasnya.
Sunting: Anda dapat menghindari keharusan mengetik connection: local
permainan Anda dengan menambahkan ini ke inventaris Anda:
localhost ansible_connection=local
(Di sini Anda akan menggunakan "localhost" alih-alih "127.0.0.1" untuk merujuk ke permainan).
Sunting: Dalam versi yang lebih baru dari kemungkinan, Anda tidak perlu lagi menambahkan baris di atas ke inventaris Anda, mungkin mengasumsikan itu sudah ada.
sudo: no
dalam skenario delegasiansible-playbook -K playbook.yml
mana -K untuk rootSaya telah menemukan beberapa cara lain Anda dapat menulis ini yang sedikit lebih mudah dibaca IMHO.
ATAU
sumber
shell
modul.Saya ingin membagikan bahwa Ansible dapat dijalankan di localhost via shell:
ansible all -i "localhost," -c local -m shell -a 'echo hello world'
Ini bisa bermanfaat untuk tugas-tugas sederhana atau untuk pembelajaran langsung dari Ansible.
Contoh kode diambil dari artikel bagus ini:
Menjalankan buku pedoman yang memungkinkan di localhost
sumber
Anda dapat menggunakan
delegate_to
untuk menjalankan perintah pada host Ansible Anda (host admin), dari tempat Anda menjalankan permainan Ansible Anda. Sebagai contoh:Hapus file jika sudah ada di host yang memungkinkan:
Buat file baru di host yang memungkinkan:
sumber
become
Benar untuk tugas itu, ia akan mengeluh tentang sudo dan semacamnya. Itu bisa terjadi langsung pada tugas atau diwarisi untuk tempat lain.Memperluas jawaban oleh @ gordon, berikut adalah contoh sintaks yang dapat dibaca dan argumen yang lewat dengan modul shell / command (ini berbeda dari modul git karena ada argumen yang diperlukan tetapi berupa-bebas, seperti yang dicatat oleh @ander)
sumber
Dari dokumentasi Ansible :
Delegasi Ini sebenarnya bukan bergulir khusus pembaruan tetapi sering muncul dalam kasus-kasus tersebut.
Jika Anda ingin melakukan tugas pada satu host dengan referensi ke host lain, gunakan kata kunci 'delegate_to' pada tugas. Ini sangat ideal untuk menempatkan node dalam kumpulan beban seimbang, atau menghapusnya. Ini juga sangat berguna untuk mengendalikan jendela yang padam. Perlu diketahui bahwa tidak masuk akal untuk mendelegasikan semua tugas, debug, add_host, termasuk, dll selalu dijalankan pada controller. Menggunakan ini dengan kata kunci 'serial' untuk mengontrol jumlah host yang dieksekusi sekaligus juga merupakan ide bagus:
Perintah-perintah ini akan berjalan pada 127.0.0.1, yang merupakan mesin yang menjalankan Ansible. Ada juga sintaks steno yang dapat Anda gunakan berdasarkan per tugas: 'local_action'. Berikut ini adalah buku pedoman yang sama seperti di atas, tetapi menggunakan sintaks singkatan untuk mendelegasikan ke 127.0.0.1:
Pola umum adalah menggunakan tindakan lokal untuk memanggil 'rsync' untuk menyalin file secara rekursif ke server yang dikelola. Berikut ini sebuah contoh:
Perhatikan bahwa Anda harus memiliki kunci SSH tanpa frasa sandi atau ssh-agent yang dikonfigurasikan agar ini berfungsi, jika tidak rsync perlu meminta kata sandi.
sumber
Modul default adalah modul perintah, oleh karena itu
command
kata kunci tidak diperlukan.Jika Anda perlu mengeluarkan perintah apa pun dengan hak akses tinggi gunakan
-b
di akhir perintah yang sama.sumber
Anda bisa coba cara ini
sumber