Prasyarat
Sekiranya anda ingin mencuba contoh yang dibincangkan dalam artikel ini,
1) Anda mesti memasang Ansible di komputer anda.
2) Anda mesti mempunyai sekurang-kurangnya hos Ubuntu / Debian yang boleh anda sambungkan dari Ansible.
Terdapat banyak artikel mengenai LinuxHint yang dikhaskan untuk Memasang Ansible. Anda boleh memeriksanya jika diperlukan untuk memasang program yang diperlukan pada sistem anda.
Anda juga perlu sshpass dipasang di komputer anda, di mana anda seharusnya memasang Ansible. Saya akan menunjukkan cara memasang sshpass pada Ubuntu / Debian dan CentOS / RHEL dalam artikel ini. Jangan bimbang jika anda belum memasang program ini di sistem anda.
Memasang sshpass pada Ubuntu / Debian
Program yang sshpass terdapat di repositori pakej rasmi Ubuntu / Debian. Anda boleh memasang program ini dengan mudah di komputer anda.
Pertama, kemas kini cache repositori pakej APT melalui arahan berikut:
$ sudo apt kemas kini
Sekarang, pasang sshpass melalui arahan berikut:
$ sudo apt pasang sshpass -y
sshpass kini harus dipasang.
Memasang sshpass pada CentOS 8 / RHEL 8
sshpass terdapat di repositori EPEL CentOS 8 / RHEL 8. Anda mesti mengaktifkan repositori EPEL untuk memasang sshpass.
Pertama, kemas kini cache repositori pakej DNF melalui arahan berikut:
$ sudo dnf makecache
Seterusnya, pasang pakej repositori EPEL melalui arahan berikut:
$ sudo dnf pasang epel-release -y
Pakej repositori EPEL sekarang harus dipasang dan repositori EPEL harus diaktifkan.
Kemas kini cache repositori pakej DNF sekali lagi, seperti berikut:
$ sudo dnf makecache
Pasang sshpass melalui arahan berikut:
$ sudo dnf pasang sshpass -y
sshpass harus dipasang.
Menyiapkan Direktori Projek Ansible
Sebelum kita melangkah lebih jauh, ada baiknya membuat struktur direktori projek, hanya untuk memastikan sesuatu tetap teratur.
Untuk membuat direktori projek sshpass / dan semua subdirektori yang diperlukan (dalam direktori kerja semasa anda), jalankan arahan berikut:
$ mkdir -pv sshpass / fail, buku main
Arahkan ke direktori projek, seperti berikut:
$ cd sshpass /
Buat a tuan rumah fail inventori, seperti berikut:
hos $ nano
Tambahkan IP host atau nama DNS anda dalam fail inventori.
Setelah anda selesai dengan langkah ini, simpan fail dengan menekan
Buat fail konfigurasi Ansible dalam direktori projek, seperti berikut:
$ nano tidak boleh dimakan.cfg
Sekarang, ketik baris berikut di tidak boleh dimakan.cfg fail.
Setelah anda selesai dengan langkah ini, simpan fail dengan menekan
Menguji Login SSH Berasaskan Kata Laluan di Ansible
Seterusnya, cuba ping hos dalam fail inventori, seperti berikut:
$ ansible all -u shovon -m pingNOTA: Di sini, -awak pilihan digunakan untuk memberitahu pengguna mana pengguna untuk log masuk sebagai. Dalam kes ini, ia akan menjadi pengguna penyodok. Ganti nama pengguna ini dengan nama anda dari sekarang, sepanjang demo.
Seperti yang anda lihat, saya tidak dapat log masuk ke host dan menjalankan sebarang arahan.
Untuk memaksa Ansible meminta kata laluan pengguna, jalankan tidak boleh dimakan perintah dengan -tanya-lulus hujah, seperti berikut:
$ ansible all -u shovon --ask-pass -m ping
Seperti yang anda lihat, Ansible meminta kata laluan SSH pengguna. Sekarang, ketik kata laluan SSH anda (kata laluan masuk pengguna) dan tekan
Tuan rumah boleh di-ping, seperti berikut:
Log masuk SSH berasaskan Kata Laluan yang Boleh Dibaca untuk Playbook
Anda boleh menggunakan log masuk SSH berdasarkan kata laluan semasa anda menjalankan buku main Ansible. Mari kita lihat contohnya.
Pertama, buat buku permainan baru askpass1.keladi di dalam buku permainan / direktori, seperti berikut:
Buku permainan $ nano / askpass1.keladi
Taipkan baris berikut di askpass1.keladi fail buku main:
- tuan rumah: semuapengguna: shovon
tugas:
- nama: Ping semua hos
ping:
- nama: Cetak mesej
nyahpepijat:
msg: 'Semua siap'
Setelah anda selesai dengan langkah ini, simpan fail dengan menekan
Jalankan askpass1.keladi buku permainan, seperti berikut:
$ ansible-playbook playbook / askpass1.keladi
Seperti yang anda lihat, saya tidak dapat berhubung dengan hos. Anda dapat melihat bahawa ini kerana saya tidak menjalankan buku main-ansible perintah dengan -tanya-lulus pilihan.
Jalankan askpass1.keladi buku permainan dengan -tanya-lulus pilihan, seperti berikut:
$ ansible-playbook -sas-pass playbooks / askpass1.keladi
Seperti yang anda lihat, Ansible meminta kata laluan SSH. Taipkan kata laluan SSH anda dan tekan
Buku permainan askpass1.keladi kini harus berjalan dengan jayanya.
Login Kata Laluan sudo yang boleh dibaca untuk Playbook
The -tanya-lulus pilihan akan meminta kata laluan masuk SSH sahaja. Bagaimana jika anda juga ingin memasukkan kata laluan sudo? Anda akan melihat bagaimana melakukan ini pada langkah seterusnya.
Pertama, buat buku permainan baru askpass2.keladi di dalam buku permainan / direktori, seperti berikut:
Buku main $ nano / askpass2.keladi
Taipkan baris berikut di askpass2.keladi fail.
- tuan rumah: semuapengguna: shovon
menjadi: Benar
tugas:
- name: Pasang pakej apache2
sesuai:
nama: apache2
nyatakan: terkini
- name: Pastikan perkhidmatan apache2 berjalan
perkhidmatan:
nama: apache2
negeri: dimulakan
didayakan: Betul
- nama: Salin indeks.fail html ke pelayan
salinan:
src:… / fail / indeks.html
dest: / var / www / html / index.html
mod: 0644
pemilik: www-data
kumpulan: www-data
Di sini, saya telah menggunakan arahan menjadi: Benar untuk memberitahu Ansible untuk menjalankan buku main ini dengan hak istimewa sudo. Setelah anda selesai dengan langkah ini, simpan askpass2.keladi fail dengan menekan
Buat sebuah indeks.html fail di fail / direktori, seperti berikut:
$ nano fail / indeks.html
Taipkan kod HTML berikut di indeks.html fail:
Hai dunia
Ianya berfungsi
Setelah anda selesai dengan langkah ini, simpan fail dengan menekan
Anda boleh menjalankan askpass2.keladi buku permainan dengan -tanya-lulus pilihan, seperti berikut:
$ ansible-playbook - buku main-pass-ask / passpass2.keladi
Anda kemudian akan diminta untuk mendapatkan kata laluan SSH, seperti sebelumnya.
Tetapi buku main masih tidak dapat dijalankan walaupun anda memberikan kata laluan SSH. Sebabnya adalah kerana anda harus memberitahu Ansible untuk meminta kata laluan sudo, dan juga kata laluan SSH.
Anda boleh memberitahu Ansible untuk meminta kata laluan sudo menggunakan -tanya-menjadi-lulus pilihan semasa menjalankan buku main, seperti berikut:
$ ansible-playbook - ask-pass - buku permainan ask-menjadi-pass / askpass2.keladi
Kini, Ansible akan meminta kata laluan SSH.
Seterusnya, Ansible akan meminta kata laluan sudo. Sekiranya kata laluan sudo anda sama dengan kata laluan SSH (yang kemungkinan besar), biarkan kosong dan tekan
Seperti yang anda lihat, buku main berjaya dijalankan.
Mengkonfigurasi Login SSH Berasaskan Kata Laluan Automatik dan Log Masuk Kata Laluan sudo
Anda mungkin ingin menggunakan SSH berasaskan kata laluan dan log masuk sudo, tetapi tidak mahu memasukkan kata laluan SSH dan kata laluan sudo setiap kali anda menjalankan buku main. Sekiranya demikian, bahagian ini sesuai untuk anda.
Untuk menggunakan log masuk SSH berasaskan kata laluan dan log masuk sudo tanpa diminta memasukkan kata laluan, yang harus anda lakukan ialah menambahkan ansible_ssh_pass dan ansible_become_pass pemboleh ubah host atau pemboleh ubah kumpulan dalam fail inventori anda.
Pertama, buka tuan rumah fail inventori, seperti berikut:
hos $ nano
Sekiranya anda mempunyai banyak host dalam fail inventori anda dan setiap host mempunyai kata laluan yang berbeza, kemudian tambahkan ansible_ssh_pass dan ansible_become_pass pemboleh ubah sebagai pemboleh ubah host (selepas setiap tuan rumah) seperti berikut.
Pastikan untuk mengganti rahsia dengan kata laluan SSH dan sudo anda.
Sekiranya semua atau beberapa host mempunyai kata laluan yang sama, maka anda boleh menambahkan ansible_ssh_pass dan ansible_become_pass pemboleh ubah sebagai pemboleh ubah kumpulan, seperti yang ditunjukkan dalam contoh di bawah.
Di sini, saya hanya mempunyai satu hos, jadi saya telah menambah ansible_ssh_pass dan ansible_become_pass pemboleh ubah untuk semua kumpulan (semua hos dalam fail inventori). Tetapi, anda juga boleh menambahkan pemboleh ubah ini untuk kumpulan tertentu yang lain.
Setelah anda selesai menambahkan ansible_ssh_pass dan ansible_become_pass pemboleh ubah dalam tuan rumah fail inventori, simpan tuan rumah fail inventori dengan menekan
Anda sekarang boleh menjalankan askpass2.keladi buku permainan, seperti berikut:
$ ansible-playbook playbook / askpass2.keladi
Seperti yang anda lihat, buku main berjaya dijalankan, walaupun ia tidak meminta kata laluan SSH atau kata laluan sudo.
Jadi, ini adalah cara anda menggunakan sshpass untuk SSH berasaskan kata laluan dan log masuk sudo di Ansible. Terima kasih kerana membaca artikel ini!