Pengantar
Ansible adalah alat administrasi sistem yang memungkinkan administrasi beberapa perangkat dari satu perangkat pusat. Ini dibandingkan dengan alat seperti Wayang atau Koki, tetapi sementara paket-paket itu memerlukan instalasi agen pada sistem klien, Ansible beroperasi dengan meneruskan perintah melalui ssh tanpa memerlukan agen sama sekali. Kami akan melihat beberapa tugas administratif yang dapat dilakukan Ansible sehingga Anda bisa mendapatkan gambaran yang lebih baik tentang apakah Ansible mungkin tepat untuk Anda.
.
Prasyarat
- Perangkat kontrol Linux, BSD, atau OSX.
- akses ssh (firewall dan kredensial) ke perangkat klien dari perangkat kontrol Anda. Ansible lebih suka menggunakan kunci ssh untuk mengakses perangkat klien, tetapi kami juga akan menunjukkan kepada Anda opsi menggunakan nama pengguna dan sandi.
- Python 2.6 atau 2.7 diinstal pada perangkat kontrol.
.
Pemasangan
Ansible tersedia melalui manajer paket dari distribusi Linux/BSD/OSX utama. Ini juga tersedia melalui penginstal pip Python.
CentOS/Fedora:
sudo yum install ansible
Ubuntu (Anda harus menambahkan Ansible PPA terlebih dahulu):
sudo apt-get install software-properties-common sudo apt-add-repository ppa:ansible/ansible sudo apt-get update sudo apt-get install ansible
Arch Linux:
pacman -S ansible
FreeBSD:
sudo pkg install ansible
Manajer paket Python, pip (pengguna OSX juga dapat menginstal dengan pip):
sudo pip install ansible
Menyiapkan Akses ke Klien yang Memungkinkan
Host
Salah satu manfaat menggunakan Ansible adalah kemampuan untuk mengelola banyak klien dari satu perangkat kontrol–dari antarmuka terminal yang sama. Anda dapat menentukan berbagai grup server klien berdasarkan fungsi, lokasi, dan/atau OS dengan membuat grup di /etc/ansible/hosts
berkas.
[mailservers] smtp.orl-fl.example.com smtp.dal-tx.example.com [db_servers] db.orl-fl.example.com db.sfo-ca.example.com [orlando] smtp.orl-fl.example.com db.orl-fl.examle.com [nameservers] ns[01:12].example.com
Nama yang diapit tanda kurung siku []
mendefinisikan nama grup dan menyertakan host dalam daftar yang mengikutinya. Anda juga dapat menunjukkan rentang berurutan dalam pola nama host dengan tanda kurung siku dan titik dua, seperti dalam ns[01:12].example.com
di atas.
Seorang klien mungkin ada dalam beberapa kelompok. Nama grup berfungsi sebagai alias untuk daftar grup, sehingga memudahkan untuk merujuk grup server mana yang akan Anda targetkan dengan perintah atau buku pedoman Ansible khusus Anda.
.
Tombol ssh
Ansible bekerja paling baik ketika server kontrol Anda – server tempat Anda akan menjalankan perintah Ansible – dapat menggunakan kunci ssh untuk mengakses host klien. Saat Anda menjalankan perintah Ansible tanpa opsi tambahan, defaultnya adalah mencoba mengakses klien jarak jauh melalui kunci ssh.
Tip:Jika Anda telah mengamankan kunci ssh pribadi Anda dengan frasa sandi, mungkin tidak nyaman dan tidak efisien untuk memasukkan frasa sandi itu setiap kali Anda perlu mendekripsinya untuk setiap sesi ssh yang akan Anda buka dengan Ansible. Untuk menyederhanakan proses ini, buka shell terpisah dengan
ssh-agent
. Saat Anda mengimpor kunci pribadi ke dalam shell ini, Anda hanya perlu memasukkan frasa sandi Anda sekali untuk menambahkan kunci pribadi yang tidak terenkripsi.
ssh-agent bash
ssh-add ~/.ssh/id_rsa
Perintah pertama membuka bash shell baru.
ssh-add
perintah akan meminta Anda untuk frasa sandi kunci pribadi Anda dan kemudian mengimpor kunci pribadi RSA ke dalam shell ini. Anda dapat, tentu saja, mengganti kunci pribadi yang sesuai, jika menggunakanid_ecdsa
atauid_dsa
, misalnya..
.
Akses ssh (Tanpa Tombol ssh)
Jika Anda memiliki server klien yang tidak memiliki kunci ssh yang diatur, Anda masih dapat menggunakan Ansible dengan pengguna Anda saat ini dan meminta kata sandi pengguna Anda. Misalnya, kita mungkin ingin menggunakan ping
modul untuk memverifikasi bahwa semua host kami di db_servers
grup responsif.
ansible db_servers -m ping --ask-pass
Perintah ini pertama-tama akan meminta kata sandi ssh pengguna saat ini untuk digunakan untuk mengakses semua server di db_servers
grup sebelum menjalankan modul pada setiap klien.
Catatan:Perintah ini akan mengharuskan pengguna Anda ada di setiap klien, diizinkan mengakses ssh, dan menggunakan kata sandi yang sama.
Juga,
ping
modul tidak terkait dengan ping ICMP yang menguji konektivitas jaringan. Penggunaannya denganansible
perintah memverifikasi bahwa server klien dapat diakses dengan pengguna yang ditunjukkan dan bahwa server klien memiliki versi Python yang dapat digunakan oleh Ansible.ping
modul harus mengembalikanpong
tanggapan setelah berhasil diselesaikan..
.
Akses ssh (Dengan Kata Sandi)
Perintah Ansible Default juga menganggap bahwa, selain menggunakan kunci ssh, Anda menggunakan sudo tanpa kata sandi. Jika Anda memiliki server klien yang memerlukan kata sandi untuk mendapatkan akses sudo, Anda dapat menggunakan opsi tambahan untuk menjadi sudo dan meminta kata sandi sudo. Jadi, misalnya, untuk me-reboot semua server di mailservers
grup menggunakan nama pengguna username
.
ansible mailservers -a "/sbin/reboot" -u username --become --ask-become-pass
--become
pilihan menunjukkan bahwa pengguna akan menjadi pengguna istimewa (sudo), dan --ask-become-pass
opsi meminta Ansible untuk meminta kata sandi untuk menjadi pengguna istimewa itu sebelum menjalankan perintah.
--become
dan--ask-become-pass
options adalah opsi yang lebih baru (pada versi Ansible 1.9) yang dimaksudkan untuk menggantikan--sudo
yang lebih lama dan--ask-sudo-pass
(-K
) pilihan, masing-masing. Versi lama ini masih berfungsi. Penggantiansudo
untukbecome
memperluas cakupan opsi ini untuk menyertakan integrasi dengan alat yang menggunakan cara selainsudo
untuk mengaktifkan eskalasi hak istimewa.
.
Beberapa Perintah CLI Dasar yang Memungkinkan
Meskipun kekuatan sebenarnya dari Ansible terletak pada penggunaan buku pedoman, Anda juga dapat menjalankan ansible
perintah untuk melakukan beberapa manajemen klien cepat untuk contoh di mana tidak masuk akal untuk membuat buku pedoman atau di mana Anda mungkin hanya perlu mendorong satu perintah ke sekelompok perangkat klien.
ansible
perintah mengikuti pola ansible [group] OPTIONS
.
.
Jalankan Pembaruan Yum
Jika, misalnya, Anda ingin menjalankan pembaruan yum pada server di mailservers
Anda group, Anda dapat menyelesaikan tugas ini dengan perintah Ansible berikut:
ansible mailservers -m yum -a "name=* state=latest" --become
Perintah ini memperbarui semua server di mailservers
grup dengan yum
modul (-m
). -a
opsi menunjukkan argumen tertentu dalam tanda kutip ganda–dalam hal ini, memperbarui semua paket yang diinstal (menggunakan *
wildcard) ke status terbarunya.
.
Salin File ke Klien
Anda dapat menggunakan Ansible untuk mendistribusikan file ke sekelompok server klien.
ansible orlando -m copy -a "src=/home/scripts/foo.sh dest=/opt/scripts/foo.sh"
Perintah ini memanggil copy
modul dan menunjukkan src
(sumber) dan dest
(tujuan) dalam tanda kutip untuk argumen. Lokasi sumber default ke perangkat yang menjalankan perintah Ansible ini dan bisa absolut atau relatif. Lokasi tujuan adalah lokasi pada perangkat klien jarak jauh dan harus selalu mutlak.
Anda juga dapat menggunakan copy
modul untuk lebih menyempurnakan atribut file yang Anda salin.
ansible orlando -m copy -a "src=/home/scripts/foo.sh dest=/opt/scripts/foo.sh owner=foo group=bar mode=0755"
Perintah ini juga mengubah izin pemilik, grup, dan file dari file pada setiap klien di orlando
grup.
.
Jalankan Perintah Shell
Anda juga dapat menjalankan skrip pada setiap klien dengan shell
modul.
ansible orlando -m shell -a '/opt/scripts/foo.sh >> /home/foo/bar.txt'
Perintah ini akan mengeksekusi foo.sh
script dan mengarahkan outputnya ke /home/foo/bar.txt
mengajukan. Perhatikan kutipan tunggal di sini. Anda memerlukan tanda kutip tunggal, bukan tanda kutip ganda agar Anda dapat meneruskan >>
operator ke shell jarak jauh.
.
Amuse-Bouche yang Memungkinkan
Ada banyak lagi perintah dan modul yang dapat Anda gunakan, tetapi contoh ini akan memberikan pengenalan yang baik tentang betapa bermanfaatnya Ansible jika Anda mengelola bahkan hanya sejumlah kecil server. Jika Anda berada dalam posisi yang terkadang tidak menyenangkan karena harus melakukan tugas berulang di seluruh infrastruktur server Anda, kami harap contoh ini memberi Anda gambaran tentang bagaimana Ansible dapat membantu Anda bekerja lebih cerdas (dan lebih efisien!).
Pastikan untuk memeriksa kembali dengan kami di masa mendatang untuk lebih banyak artikel tentang administrasi server dan hal-hal lain yang dapat Anda lakukan dengan Ansible. Atlantic.Net menawarkan koleksi luas solusi hosting VPS fleksibel untuk perusahaan rintisan kecil hingga perusahaan mapan.
.
.