Prasyarat
Jika Anda ingin mencoba contoh yang dibahas dalam artikel ini,
1) Anda harus menginstal Ansible di komputer Anda.
2) Anda harus memiliki setidaknya host Ubuntu/Debian yang dapat Anda hubungkan dari Ansible.
Ada banyak artikel di LinuxHint yang didedikasikan untuk Menginstal Ansible. Anda dapat memeriksa ini jika diperlukan untuk menginstal program yang diperlukan di sistem Anda.
Anda juga harus memiliki sshpass diinstal di komputer Anda, di mana Anda seharusnya menginstal Ansible. Saya akan menunjukkan cara menginstal how sshpass di Ubuntu/Debian dan CentOS/RHEL dalam artikel ini. Jangan khawatir jika Anda belum menginstal program ini di sistem Anda.
Menginstal sshpass di Ubuntu/Debian
Program sshpass tersedia di repositori paket resmi Ubuntu/Debian. Anda dapat dengan mudah menginstal program ini di komputer Anda.
Pertama, perbarui cache repositori paket APT melalui perintah berikut:
$ sudo apt update
Sekarang, instal sshpass melalui perintah berikut:
$ sudo apt install sshpass -y
sshpass sekarang harus diinstal.
Menginstal sshpass pada CentOS 8/RHEL 8
sshpass tersedia di repositori EPEL CentOS 8/RHEL 8. Anda harus mengaktifkan repositori EPEL untuk menginstal sshpass.
Pertama, perbarui cache repositori paket DNF melalui perintah berikut:
$ sudo dnf makecache
Selanjutnya, instal paket repositori EPEL melalui perintah berikut:
$ sudo dnf install epel-release -y
Paket repositori EPEL sekarang harus diinstal dan repositori EPEL harus diaktifkan.
Perbarui lagi cache repositori paket DNF, sebagai berikut:
$ sudo dnf makecache
Install sshpass melalui perintah berikut:
$ sudo dnf install sshpass -y
sshpass harus dipasang.
Menyiapkan Direktori Proyek yang Mungkin
Sebelum kita melanjutkan lebih jauh, ada baiknya untuk membuat struktur direktori proyek, hanya untuk menjaga agar sedikit teratur.
Untuk membuat direktori proyek sshpass/ dan semua subdirektori yang diperlukan (di direktori kerja Anda saat ini), jalankan perintah berikut:
$ mkdir -pv sshpass/files,playbooks
Arahkan ke direktori proyek, sebagai berikut:
$cd sshpass/
Membuat tuan rumah berkas inventaris, sebagai berikut:
$ nano host
Tambahkan IP host atau nama DNS Anda di file inventaris.
Setelah Anda selesai dengan langkah ini, simpan file dengan menekan
Buat file konfigurasi Ansible di direktori proyek, sebagai berikut:
$ nano mungkin.cfg
Sekarang, ketik baris berikut di mungkin.cfg mengajukan.
Setelah Anda selesai dengan langkah ini, simpan file dengan menekan
Menguji Login SSH Berbasis Kata Sandi di Ansible
Selanjutnya coba ping ke host di file inventory, sebagai berikut :
$ memungkinkan semua -u shovon -m pingCATATAN: Di sini, -kamu opsi digunakan untuk memberi tahu pengguna mana yang dapat masuk sebagai. Dalam hal ini, itu akan menjadi pengguna shovon. Ganti nama pengguna ini dengan milik Anda mulai sekarang, selama demo.
Seperti yang Anda lihat, saya tidak dapat masuk ke host dan menjalankan perintah apa pun.
Untuk memaksa Ansible meminta kata sandi pengguna, jalankan mungkin perintah dengan -minta-pass argumen, sebagai berikut:
$ memungkinkan semua -u shovon --ask-pass -m ping
Seperti yang Anda lihat, Ansible meminta kata sandi SSH pengguna. Sekarang, ketikkan kata sandi SSH Anda (kata sandi login pengguna) dan tekan
Host dapat di-ping, sebagai berikut:
Kemungkinan Login SSH Berbasis Kata Sandi untuk Playbook
Anda dapat menggunakan login SSH berbasis kata sandi saat Anda menjalankan Playbook Ansible. Mari kita lihat sebuah contoh.
Pertama, buat buku pedoman baru askpass1.yaml dalam buku pedoman/ direktori, sebagai berikut:
$ nano buku pedoman/askpass1.yaml
Ketik baris berikut di askpass1.yaml file buku pedoman:
- tuan rumah: semuapengguna: shovon
tugas:
- nama: Ping semua host
ping:
- nama: Cetak pesan
debug:
pesan: 'Semua siap'
Setelah Anda selesai dengan langkah ini, simpan file dengan menekan
Jalankan askpass1.yaml buku pedoman, sebagai berikut:
$ playbook yang memungkinkan-playbook/askpass1.yaml
Seperti yang Anda lihat, saya tidak dapat terhubung ke host. Anda dapat melihat bahwa ini karena saya tidak menjalankan ansible-playbook perintah dengan -minta-pass pilihan.
Jalankan askpass1.yaml buku pedoman dengan -minta-pass pilihan, sebagai berikut:
$ ansible-playbook -ask-pass playbooks/askpass1.yaml
Seperti yang Anda lihat, Ansible meminta kata sandi SSH. Ketik kata sandi SSH Anda dan tekan
Buku pedoman askpass1.yaml sekarang harus berjalan dengan sukses.
Kemungkinan Login Kata Sandi Sudo untuk Playbook
Itu -minta-pass opsi hanya akan meminta kata sandi masuk SSH. Bagaimana jika Anda juga ingin mengetikkan kata sandi sudo?? Anda akan melihat bagaimana melakukan ini di langkah selanjutnya.
Pertama, buat buku pedoman baru askpass2.yaml dalam buku pedoman/ direktori, sebagai berikut:
$ nano buku pedoman/askpass2.yaml
Ketik baris berikut di askpass2.yaml mengajukan.
- tuan rumah: semuapengguna: shovon
menjadi: Benar
tugas:
- nama: Instal Paket Apache2
tepat:
nama: apache2
negara: terbaru
- nama: Pastikan layanan Apache2 berjalan
layanan:
nama: apache2
negara: mulai
diaktifkan: Benar
- nama: Salin indeks.file html ke server
salinan:
src: … /file/indeks.html
tujuan: /var/www/html/index.html
modus: 0644
pemilik: www-data
grup: www-data
Di sini, saya telah menggunakan perintah menjadi: Benar untuk memberi tahu Ansible untuk menjalankan buku pedoman ini dengan hak istimewa Sudo. Setelah Anda selesai dengan langkah ini, simpan askpass2.yaml file dengan menekan
Buat sebuah indeks.html file di file/ direktori, sebagai berikut:
$ file/indeks nano.html
Ketik kode HTML berikut di indeks.html mengajukan:
Halo Dunia
Berhasil
Setelah Anda selesai dengan langkah ini, simpan file dengan menekan
Anda dapat menjalankan askpass2.yaml buku pedoman dengan -minta-pass pilihan, sebagai berikut:
$ ansible-playbook --ask-pass playbooks/askpass2.yaml
Anda kemudian akan dimintai kata sandi SSH, seperti sebelumnya.
Tetapi playbook masih mungkin tidak berjalan bahkan jika Anda memberikan kata sandi SSH. Alasannya adalah karena Anda harus memberi tahu Ansible untuk meminta kata sandi Sudo, serta kata sandi SSH.
Anda dapat memberi tahu Ansible untuk meminta kata sandi Sudo menggunakan -minta-menjadi-lulus pilihan saat menjalankan playbook, sebagai berikut:
$ ansible-playbook --ask-pass --ask-become-pass playbooks/askpass2.yaml
Sekarang, Ansible akan meminta Anda untuk memasukkan kata sandi SSH.
Selanjutnya, Ansible akan meminta Anda untuk memasukkan kata sandi sudo. Jika kata sandi sudo Anda sama dengan kata sandi SSH (yang kemungkinan besar), biarkan kosong dan tekan
Seperti yang Anda lihat, buku pedoman berjalan dengan sukses.
Mengonfigurasi Login SSH Berbasis Sandi Otomatis dan Login Sandi Sudo
Anda mungkin ingin menggunakan SSH berbasis kata sandi dan login sudo, tetapi tidak ingin mengetikkan kata sandi SSH dan kata sandi sudo setiap kali Anda menjalankan buku pedoman. Jika itu masalahnya, maka bagian ini untuk Anda.
Untuk menggunakan login SSH berbasis kata sandi dan login sudo tanpa diminta kata sandi, yang harus Anda lakukan adalah menambahkan ansible_ssh_pass dan ansible_become_pass variabel host atau variabel grup dalam file inventaris Anda.
Pertama, buka tuan rumah berkas inventaris, sebagai berikut:
$ nano host
Jika Anda memiliki beberapa host di file inventaris Anda dan masing-masing host memiliki kata sandi yang berbeda, tambahkan: ansible_ssh_pass dan ansible_become_pass variabel sebagai variabel host (setelah setiap host) sebagai berikut.
Pastikan untuk mengganti rahasia dengan kata sandi SSH dan Sudo Anda.
Jika semua atau beberapa host memiliki kata sandi yang sama, Anda dapat menambahkan add ansible_ssh_pass dan ansible_become_pass variabel sebagai variabel grup, seperti yang ditunjukkan pada contoh di bawah ini.
Di sini, saya hanya memiliki satu host, jadi saya telah menambahkan ansible_ssh_pass dan ansible_become_pass variabel untuk semua grup (semua host dalam file inventaris). Tetapi, Anda juga dapat menambahkan variabel ini untuk grup tertentu lainnya.
Setelah Anda selesai menambahkan ansible_ssh_pass dan ansible_become_pass variabel dalam tuan rumah file inventaris, simpan tuan rumah file inventaris dengan menekan
Anda sekarang dapat menjalankan askpass2.yaml buku pedoman, sebagai berikut:
$ playbook/askpass2 yang memungkinkan-playbook.yaml
Seperti yang Anda lihat, buku pedoman berjalan dengan sukses, meskipun tidak meminta kata sandi SSH atau kata sandi sudo.
Jadi, ini adalah bagaimana Anda menggunakan sshpass untuk SSH berbasis kata sandi dan sudo login di Ansible. terimakasih telah membaca artikel ini!