GNU/Linux >> Belajar Linux >  >> Debian

Cara Menginstal dan Menggunakan Ansible di Debian 11

Ansible adalah gratis, sumber terbuka, dan salah satu alat manajemen konfigurasi paling populer. Ini adalah alat lintas platform yang menyederhanakan komputasi awan, manajemen konfigurasi, instalasi paket, dan konfigurasi layanan. Ini menggunakan file YAML yang berisi langkah-langkah yang ingin dijalankan pengguna di mesin tertentu. Dengan Ansible, Anda dapat mengonfigurasi dan mengelola lebih dari sekadar host dengan satu perintah. Ansible adalah alternatif dari alat manajemen konfigurasi lainnya seperti Chef and Puppet.

Dalam artikel ini, saya akan menunjukkan cara menginstal dan menggunakan alat manajemen konfigurasi Ansible di Debian 11.

Prasyarat

  • Tiga server menjalankan Debian 11.
  • Kata sandi root dikonfigurasi di setiap server.

Untuk tujuan tutorial ini, kita akan menggunakan pengaturan berikut:

  • Pengontrol yang Memungkinkan - 192.168.10.9
  • Host yang Mungkin - 192.168.10.10, 192.168.10.11

Instal Ansible di Debian 11

Secara default, paket Ansible tidak disertakan dalam repositori default Debian. Ada dua cara untuk menginstal Ansible di Debian 11.

  1. Menggunakan Perintah APT
  2. Menggunakan Perintah PIP

Instal Ansible Menggunakan APT

Pertama, Anda perlu menginstal beberapa dependensi di sistem Anda. Anda dapat menginstal dependensi yang diperlukan menggunakan perintah berikut:

apt-get install gnupg2 curl wget -y

Setelah semua dependensi terinstal, edit source.list APT dan tambahkan repositori Ansible:

nano /etc/apt/sources.list

Tambahkan baris berikut:

deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main

Simpan dan tutup file setelah selesai kemudian tambahkan kunci GPG Ansible menggunakan perintah berikut:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367

Anda akan melihat output berikut:

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.lFEjztT9TY/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
gpg: key 93C4A3FD7BB9C367: public key "Launchpad PPA for Ansible, Inc." imported
gpg: Total number processed: 1
gpg:               imported: 1

Sekarang, perbarui repositori dan instal Ansible dengan perintah berikut:

apt-get update
apt-get install ansible -y

Setelah Ansible diinstal, verifikasi versi Ansible dengan perintah berikut:

ansible --version

Anda akan mendapatkan output berikut:

ansible 2.10.8
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]

Instal Ansible Menggunakan PIP

Pertama, Anda perlu menginstal Python dan PIP ke sistem Anda. Anda dapat menginstalnya menggunakan perintah berikut:

apt-get install python3 python3-pip -y

Setelah instalasi selesai, gunakan perintah pip untuk menginstal Ansible seperti yang ditunjukkan di bawah ini:

pip install ansible

Instal sshpass

Sshpass adalah alat baris perintah yang memungkinkan Anda memberikan kata sandi dengan perintah SSH. Di sini, kita akan menggunakan sshpass pada node pengontrol Ansible dengan Ansible untuk mengautentikasi host jarak jauh.

Anda dapat menginstal sshpass dengan perintah berikut:

apt-get install sshpass -y

Selanjutnya, sambungkan ke host jarak jauh pertama yang memungkinkan untuk menambahkan sidik jari SSH ke known_hosts Anda berkas:

ssh [email protected]

Anda akan diminta untuk memberikan kata sandi SSH seperti yang ditunjukkan di bawah ini:

The authenticity of host '192.168.10.10 (192.168.10.10)' can't be established.
ECDSA key fingerprint is SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.10' (ECDSA) to the list of known hosts.
Password: 

Berikan sandi Anda dan tekan Enter untuk menambahkan sidik jari SSH.

Selanjutnya, sambungkan ke host jarak jauh kedua yang memungkinkan untuk menambahkan sidik jari SSH ke file known_hosts Anda:

ssh [email protected]

Anda akan diminta untuk memberikan kata sandi SSH seperti yang ditunjukkan di bawah ini:

The authenticity of host '192.168.10.11 (192.168.10.11)' can't be established.
ECDSA key fingerprint is SHA256:q3zMoJ6qdjYvAdL7/w4Z0gm0ZEgGOB+rNIPKEMdYS6o.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.11' (ECDSA) to the list of known hosts.
Password: 

Berikan kata sandi Anda dan tekan Enter .

Anda sekarang dapat menggunakan perintah sshpass untuk memverifikasi koneksi SSH:

sshpass -p yourpassword ssh [email protected]

Buat File Inventaris Host yang Memungkinkan

Selanjutnya, Anda perlu membuat file inventaris untuk menentukan alamat IP host jarak jauh, nama pengguna, kata sandi, dan port SSH:

nano ~/.hosts

Tambahkan baris berikut:

[servers]
server1 ansible_host=192.168.10.10 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22
server2 ansible_host=192.168.10.11 ansible_user=root ansible_ssh_pass=password ansible_ssh_port=22

Simpan dan tutup file.

Catatan :Pada file di atas, kita akan menggunakan IP remote host, username, password, dan port SSH.

Bekerja dengan Ansible

Ansible menyediakan banyak modul yang membantu Anda mengelola host jarak jauh.

Sintaks dasar untuk menjalankan Ansible seperti yang ditunjukkan di bawah ini:

ansible -i [inventory_file] -m [module] [host]

Mari verifikasi konektivitas ping ke semua host:

ansible -i ~/.hosts -m ping all

Jika semuanya baik-baik saja, Anda akan mendapatkan output berikut:

server2 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
server1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Jika Anda ingin memverifikasi konektivitas ping dari satu-satunya server1, jalankan perintah berikut:

ansible -i ~/.hosts -m ping server1

Anda akan mendapatkan output berikut:

server1 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Anda dapat menggunakan modul shell untuk menjalankan semua perintah pada host jarak jauh.

Misalnya, untuk menjalankan "free -m " pada server2, jalankan perintah berikut:

ansible -i ~/.hosts -m shell -a "free -m" server2

Anda akan melihat output berikut:

server2 | CHANGED | rc=0 >>
               total        used        free      shared  buff/cache   available
Mem:            1982         128         491           2        1363        1669
Swap:              0           0           0

Untuk menjalankan "df -h " commad di server2, jalankan perintah berikut:

ansible -i ~/.hosts -m shell -a "df -h" server2

Anda akan mendapatkan output berikut:

server2 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
udev            976M     0  976M   0% /dev
tmpfs           199M  404K  198M   1% /run
/dev/sda1        50G  2.4G   45G   5% /
tmpfs           992M  124K  992M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           199M     0  199M   0% /run/user/0

Ansible menyediakan modul apt untuk menginstal paket apa pun ke host jarak jauh.

Untuk menginstal Nginx paket di server1, jalankan perintah berikut:

ansible -i ~/.hosts -m ansible.builtin.apt -a "name=nginx state=present" server1

Anda akan mendapatkan output berikut:

server1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "cache_update_time": 1631424599,
    "cache_updated": false,
    "changed": true,
    "stderr": "",
    "stderr_lines": [],
        "Upgrading binary: nginx.",
        "Setting up nginx (1.18.0-6.1) ...",
        "Processing triggers for man-db (2.9.4-2) ...",
        "Processing triggers for libc-bin (2.31-13) ..."
    ]
}

Untuk memeriksa status layanan Nginx di server1, jalankan perintah berikut:

ansible -i ~/.hosts -m shell -a "systemctl status nginx" server1

Anda akan mendapatkan output berikut:

server1 | CHANGED | rc=0 >>
? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-09-12 05:55:36 UTC; 49s ago
       Docs: man:nginx(8)
    Process: 10761 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 10764 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 10871 (nginx)
      Tasks: 2 (limit: 2341)
     Memory: 5.8M
        CPU: 54ms
     CGroup: /system.slice/nginx.service
             ??10871 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??10874 nginx: worker process

Sep 12 05:55:36 ansible systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 12 05:55:36 ansible systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Sep 12 05:55:36 ansible systemd[1]: Started A high performance web server and a reverse proxy server.

Ansible menyediakan modul pengguna untuk membuat dan mengelola pengguna di host jarak jauh.

Untuk membuat pengguna baru bernama pengguna1 di server1, jalankan perintah berikut:

ansible -i ~/.hosts -m ansible.builtin.user -a "name=user1 password=yourpassword" server1

Anda akan melihat output berikut:

server1 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": true,
    "comment": "",
    "create_home": true,
    "group": 1000,
    "home": "/home/user1",
    "name": "user1",
    "password": "NOT_LOGGING_PASSWORD",
    "shell": "/bin/sh",
    "state": "present",
    "system": false,
    "uid": 1000
}

Kesimpulan

Pada artikel ini, Anda mempelajari cara menginstal Ansible dengan APT dan PIP. Anda juga mempelajari cara menggunakan modul Ansible yang berbeda untuk mengelola host jarak jauh. Saya harap Anda sekarang memiliki pemahaman yang cukup tentang Ansible. Jangan ragu untuk bertanya kepada saya jika Anda memiliki pertanyaan.


Debian
  1. Cara Menginstal dan Menggunakan NVM di Debian 11

  2. Cara Menginstal dan Menggunakan FFmpeg di Debian 10

  3. Cara menggunakan Ansible untuk menginstal dan mengkonfigurasi Redis 6 di Debian 11

  1. Cara Menginstal Dan Menggunakan Backport Debian

  2. Cara Menginstal dan Menggunakan Komposer PHP di Debian 10

  3. Cara Menginstal Ansible di Debian 11

  1. Cara Menginstal dan Menggunakan Docker di Debian 9

  2. Cara Menginstal dan Menggunakan Docker Compose di Debian 9

  3. Cara Menginstal dan Menggunakan Komposer PHP di Debian 9