Ansible adalah alat otomatisasi sederhana yang mengotomatiskan penerapan aplikasi perangkat lunak, penyediaan cloud, dan manajemen konfigurasi. Ini adalah alat orkestrasi server yang membantu Anda mengelola dan mengontrol sejumlah besar node server dari satu tempat yang disebut 'Mesin Kontrol'. Ansible dibuat oleh Michael DeHaan pada tahun 2012 dan ditulis dengan Python dan Powershell.
Dalam tutorial ini, kita akan belajar bagaimana menerapkan pengguna baru dan mengaktifkan otentikasi Berbasis Kunci SSH menggunakan alat otomatisasi Ansible. Kami juga akan mempelajari cara mengonfigurasi 'Mesin Kontrol' yang Memungkinkan, serta cara menulis buku pedoman sederhana yang memungkinkan.
Prasyarat
- 2 atau lebih Server Ubuntu 18.04
- 10.0.15.10 mesin kontrol
- 10.0.15.21 ansi01
- 10.0.15.22 ansi02
- Hak istimewa root
Apa yang akan kita lakukan?
- Menyiapkan Mesin Kontrol yang Memungkinkan
- Tentukan Pengguna dan Kunci SSH
- Buat File Inventaris
- Buat Playbook yang Mungkin
- Menyebarkan Server Menggunakan Playbook
- Pengujian
Langkah 1 - Siapkan Mesin Kontrol yang Memungkinkan
Dalam tutorial ini, kita akan menggunakan server Ubuntu 16.04 sebagai Ansible 'Machine Control' dan host yang memungkinkan. Langkah pertama yang perlu kita lakukan adalah menyiapkan 'mesin kontrol'.
Kami akan menginstal python dan memungkinkan pada 'mesin kontrol' yang memungkinkan dengan menjalankan perintah berikut.
sudo apt install python ansible -y
Setelah instalasi selesai, kami akan menambahkan pengguna sistem baru.
Kami akan menambahkan pengguna baru bernama 'penyediaan' untuk melakukan penyediaan server menggunakan Ansible.
Tambahkan 'ketentuan' pengguna baru dan berikan kata sandi kepada pengguna.
penyediaan useradd -m -s /bin/bash
penyediaan passwd
Sekarang tambahkan pengguna 'penyediaan' untuk sudo tanpa kata sandi dengan membuat file konfigurasi baru di bawah '/etc/sudoers.d/' menggunakan perintah di bawah ini.
echo -e 'provision\tALL=(ALL)\tNOPASSWD:\tALL'> /etc/sudoers.d/provision
Pengguna baru telah dibuat, dan sekarang dapat menggunakan sudo tanpa kata sandi.
Langkah 2 - Tentukan Pengguna dan Kunci SSH
Pada langkah ini, kami akan menentukan pengguna untuk host yang memungkinkan. Pengguna ini akan dibuat secara otomatis oleh ansible, jadi kita hanya perlu menentukan nama pengguna, kata sandi, dan kunci publik ssh.
Untuk setiap server ('ansi01' dan 'ansi02'), kita akan membuat user baru bernama 'provision' dengan password 'secret01'. Dan kita perlu mengenkripsi kata sandi 'secret01' menggunakan perintah mkpasswd.
Enkripsi kata sandi 'secret01' menggunakan perintah di bawah ini.
mkpasswd --method=SHA-512
KETIKA SANDI 'secret01'
Catatan:
Pastikan paket 'whois' terinstal di sistem, atau Anda dapat menginstal menggunakan perintah berikut.
sudo apt install whois -y
Dan Anda akan mendapatkan sandi terenkripsi SHA-512.
Selanjutnya, kita akan membuat ssh-key baru.
Masuk ke pengguna 'penyediaan' dan buat kunci ssh menggunakan perintah ssh-keygen.
su - ketentuan
ssh-keygen -t rsa
Sekarang pengguna dan kata sandi telah ditentukan, dan kunci ssh telah dibuat l(terletak di direktori '.ssh').
Langkah 3 - Buat Inventaris Baru
Pada langkah ini, kita akan menentukan file inventaris untuk semua host server.
Masuk sebagai pengguna 'penyediaan' dan buat direktori baru untuk proyek.
su - ketentuan
mkdir -p ansible01/
Buka direktori 'ansible01' dan buat file inventaris baru 'inventory.ini' menggunakan vim.
cd ansible01/
vim inventory.ini
Tempelkan konfigurasi berikut di sana.
[server web]
ansi01 ansible_host=10.0.15.21
ansi02 ansible_host=10.0.15.22
Simpan dan keluar.
Sekarang buat file konfigurasi baru yang memungkinkan 'ansible.cfg'.
vim ansible.cfg
Tempelkan konfigurasi berikut di sana.
[default]
inventory =/home/provision/ansible01/inventory.ini
Simpan dan keluar.
File inventaris yang memungkinkan telah dibuat, dan skrip yang memungkinkan kami akan ditempatkan di bawah pengguna 'provision', di dalam direktori 'ansible01'.
Langkah 4 - Buat Playbook yang Mungkin
Playbook Ansible adalah kumpulan instruksi yang Anda kirim untuk dijalankan pada satu atau sekelompok host server. Ini mewakili penyediaan yang memungkinkan, di mana otomatisasi didefinisikan sebagai tugas, dan semua pekerjaan seperti menginstal paket, mengedit file, akan dilakukan oleh modul yang memungkinkan.
Pada langkah ini, kami akan membuat buku pedoman baru yang memungkinkan untuk menerapkan pengguna baru, menerapkan kunci ssh, dan mengonfigurasi layanan ssh.
Sebelum kami membuat playbook baru yang memungkinkan, kami akan memindai semua sidik jari server menggunakan perintah ssh-keyscan seperti di bawah ini.
ssh-keyscan 10.0.15.21>> ~/.ssh/known_hosts
ssh-keyscan 10.0.15.22>> ~/.ssh/known_hosts
Sidik jari server tersebut akan disimpan di file '.ssh/known_hosts'.
Catatan:
Jika Anda memiliki banyak node server, Anda dapat menyimpan daftar host Anda dan kemudian memindai sidik jari kunci ssh secara manual menggunakan skrip bash seperti yang ditunjukkan di bawah ini.
untuk saya di $(cat list-hosts.txt)
lakukan
ssh-keyscan $i>> ~/.ssh/known_hosts
selesai
Selanjutnya, buat buku pedoman yang memungkinkan bernama 'deploy-ssh.yml' menggunakan vim.
vim deploy-ssh.yml
Tempel mengikuti pedoman yang memungkinkan di sana.
- host:semua
vars:
- provision_password:'$6$w9S3t7x1kRtmG0u$6nVU9KZsC12Q8DYI4FtgKPy.e/cq/jseB/.DVito1SpUn> kumpulkan_fakta:tidak
remote_user:root
tugas:
- nama:Tambahkan pengguna baru bernama ketentuan
pengguna:
name=provision
password={{ provision_password }}
- name:Tambahkan pengguna ketentuan ke sudoers
copy:
tujuan:"/etc/sudoers.d/provision "
content:"provision ALL=(ALL) NOPASSWD:ALL"
- name:Deploy SSH Key
Authorized_key:user=provision
key=" lookup('file', '/home/provision/.ssh/id_rsa.pub') }}"
state=present
- name:Disable Password Authentication
lineinfile:
dest=/etc/ssh/sshd_config
regexp='^PasswordAuthentication'
line="PasswordAuthentic ation no"
state=present
backup=yes
notify:
- restart ssh
- name:Disable Root Login
lineinfile:
dest=/etc/ssh/sshd_config
regexp='^PermitRootLogin'
line="PermitRootLogin no"
> status
notify:
- restart ssh
handlers:
- name:restart ssh
service:
name=sshd
state=restart
Simpan dan keluar.
Pada skrip buku pedoman:
- kami membuat skrip buku pedoman 'deploy-ssh.yml' untuk diterapkan pada semua server yang ditentukan dalam file 'inventory.ini'.
- kami membuat variabel yang memungkinkan 'provision_password', yang berisi sandi terenkripsi untuk pengguna baru.
- Setel fakta yang mungkin ke 'tidak'.
- Tentukan pengguna 'root' sebagai pengguna jarak jauh untuk melakukan otomatisasi tugas.
- Kami membuat tugas baru untuk menambahkan pengguna baru, menambahkan pengguna ke sudoers, dan mengunggah kunci ssh.
- Kami membuat tugas baru untuk mengonfigurasi layanan ssh, menonaktifkan login root, dan menonaktifkan otentikasi kata sandi. Tugas untuk mengonfigurasi ssh akan memicu penangan 'mulai ulang ssh'.
- Kami membuat handler untuk memulai ulang layanan ssh.
Langkah 5 - Jalankan Playbook
Masuk ke pengguna 'provision' dan buka direktori 'ansible01'.
su - ketentuan
cd ansible01/
Sekarang jalankan playbook 'deploy-ssh.yml' menggunakan perintah seperti yang ditunjukkan di bawah ini.
ansible-playbook deploy-ssh.yml --ask-pass
Ketik kata sandi root Anda, dan Anda akan mendapatkan hasil seperti di bawah ini.
Semua tugas untuk men-deploy pengguna baru dan kunci ssh telah berhasil diselesaikan.
Langkah 6 - Pengujian
Uji menggunakan perintah yang memungkinkan.
server web yang memungkinkan -m ping
server web yang memungkinkan -m shell -a id
Sekarang Anda akan mendapatkan pesan hijau seperti di bawah ini.
Sekarang kita dapat mengelola server 'ansi01' dan 'ansi02' menggunakan Ansible, dan pengguna 'provision' akan menjadi pengguna default untuk Ansible.
Menguji koneksi ke server
ssh 10.0.15.21
ssh 10.0.15.22
Dan Anda akan terhubung ke setiap server menggunakan kunci default file '.ssh/id_rsa', dan menggunakan 'provision' pengguna.
Menyebarkan pengguna baru dan ssh-key menggunakan ansible telah berhasil diselesaikan.