Cara Terapkan Docker Menggunakan Ansible

· 4 min read
Cara Terapkan Docker Menggunakan Ansible
Photo by Domenico Loia / Unsplash

Dengan munculnya Docker dan containerisasi secara umum, alat seperti Ansible, Puppet, atau Chef telah mengalami penurunan bobot karena sebagian besar konfigurasi sistem dilakukan di dalam container.

Selain itu, karena platform komputasi awan seperti Google Cloud atau AWS, atau Azure, menyediakan kluster Kubernetes yang dikelola, kebutuhan untuk mengonfigurasi mesin semakin berkurang setiap harinya.

Namun, apa yang terjadi jika Anda tidak mampu membeli layanan cloud dan hanya ingin membeli VPS atau mesin khusus dan menginstal Docker dan Docker Compose untuk menjalankan beberapa container saja?

Pada artikel ini, saya akan menjelaskan kepada Anda cara menginstal, mengkonfigurasi, dan menggunakan Ansible untuk menginstal Docker.

Cara menginstal Ansible

Menginstal Ansible terdiri dari menginstal beberapa alat CLI, dan ini sangat mudah, apa pun platform yang Anda gunakan. Saya akan mengajari Anda cara menginstal Ansible di Mac dan Ubuntu.

Untuk pengguna Mac: Anda dapat menginstal Ansible menggunakan Homebrew, cukup dengan menjalankan perintah berikut:

brew install ansible

Untuk pengguna Ubuntu: Anda dapat menginstal Ansible dengan menjalankan perintah berikut:

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible

Anda dapat menemukan informasi lebih lanjut di dokumentasi resmi.

Cara mengkonfigurasi Ansible

Mengonfigurasi Ansible adalah operasi yang cukup sederhana.

Pertama-tama, Anda perlu membuat direktori bernama playbooks. Di sinilah Anda akan menyimpan file YAML dengan langkah-langkah yang diperlukan untuk mengonfigurasi host jarak jauh Anda -VPS tempat Anda ingin menginstal Docker dan Docker Compose menggunakan Ansible.

Selanjutnya, Anda perlu membuat file bernama inventaris -bisa disebut apa pun sebenarnya-, dengan konten berikut:

IP_OF_THE_VPS

Itu saja. Cukup mudah. Satu-satunya hal yang perlu dipertimbangkan adalah Anda harus dapat melakukan SSH mesin ini menggunakan kunci SSH. Jadi jika ssh user@IP_OF_THE_VPS sudah bekerja untuk Anda, Anda siap untuk menjalankan pedoman yang mungkin.

Playbook untuk menginstal Docker dan Docker Compose

Ini adalah keseluruhan konten playbook YAML, dan saya akan menjelaskan langkah demi langkah:

---
- hosts: all
  remote_user: ubuntu
  become: true
  tasks:
    - name: install dependencies
      apt:
        name: "{{item}}"
        state: present
        update_cache: yes
      loop:
        - apt-transport-https
        - ca-certificates
        - curl
        - gnupg-agent
        - software-properties-common
    - name: add GPG key
      apt_key:
        url: https://download.docker.com/linux/ubuntu/gpg
        state: present
    - name: add docker repository to apt
      apt_repository:
        repo: deb https://download.docker.com/linux/ubuntu bionic stable
        state: present
    - name: install docker
      apt:
        name: "{{item}}"
        state: latest
        update_cache: yes
      loop:
        - docker-ce
        - docker-ce-cli
        - containerd.io
    - name: check docker is active
      service:
        name: docker
        state: started
        enabled: yes
    - name: Ensure group "docker" exists
      ansible.builtin.group:
        name: docker
        state: present
    - name: adding ubuntu to docker group
      user:
        name: ubuntu
        groups: docker
        append: yes
    - name: Install docker-compose
      get_url:
        url: https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
        dest: /usr/local/bin/docker-compose
        mode: 'u+x,g+x'
    - name: Change file ownership, group and permissions
      ansible.builtin.file:
        path: /usr/local/bin/docker-compose
        owner: ubuntu
        group: ubuntu

Hal pertama yang pertama, kunci host, yang nilainya semuanya, berarti bahwa pedoman akan dieksekusi pada semua host inventaris yang tersedia. Karena kami hanya memiliki satu, kami dapat mengatur semuanya dan semuanya akan berjalan baik-baik saja.

Kemudian, kita memiliki kunci remote_user: ini adalah pengguna yang kita gunakan untuk SSH ke mesin, katakanlah ubuntu, tapi kita bisa menggunakan pengguna apa pun yang memiliki akses SSH dan izin yang tepat.

menjadi: ini berarti kita akan menjalankan perintah yang berbeda menggunakan sudo. Ini diperlukan untuk menginstal paket, mengubah izin, grup, dll. Jika Anda membuka dokumentasi resmi Docker, Anda akan menemukan semua perintah dijalankan sebagai sudo.

Selanjutnya, Anda menemukan serangkaian tugas, yang berisi berbagai proses yang akan kita jalankan pada host jarak jauh.

Tugas apa pun memiliki nama, apt seperti tindakan, layanan, atau ansible.builtin.group, dan opsional perulangan. Dan tindakannya biasanya memiliki param, seperti nama atau status di bagian yang tepat.

Tugas pertama, disebut install dependencies , menginstal paket-paket berikut:

  • apt-transportasi-https
  • ca-sertifikat
  • keriting
  • agen gnupg
  • perangkat lunak-properti-umum

Anda dapat memeriksa dokumentasi Docker bahwa dependensi ini diperlukan untuk menginstal Docker.

Jika Anda melihat tugasnya, Anda akan melihat bahwa negara memiliki nilai yang ada. Ini berarti Ansible akan memastikan bahwa paket-paket ini ada di mesin, sehingga Ansible hanya akan menginstal jika diperlukan - beginilah cara Ansible idempoten.

Tugas berikutnya, tambahkan kunci GPG , tambahkan kunci APT ke sistem. Jika Anda familiar dengan Ubuntu, Anda pasti sudah tahu bahwa ini adalah kebutuhan untuk menginstal repositori tertentu.

Dan tepat di bawah kita memiliki tugas menambahkan repositori docker ke apt , yang cukup jelas. Ini menginstal repositori Docker di mesin.

Saatnya menginstal paket yang dibutuhkan Docker di tugas berikutnya. Lebih tepatnya, kita akan menginstal yang berikut ini:

Kemudian, dengan tugas pemeriksaan docker aktif, kami akan memastikan bahwa layanan berjalan setelah instalasi. Dan kami memeriksa grup docker sudah ada dengan tugas Pastikan docker grup ada .

Pada titik ini, kita seharusnya sudah menginstal Docker di mesin kita. Tapi kami hanya bisa menjalankan perintah menggunakan sudo, yang tidak diinginkan. Jadi kami menjalankan tugas berikutnya menambahkan ubuntu ke grup docker, yang pada dasarnya menambahkan pengguna ubuntu -pengguna kami yang sedang berjalan- ke grup docker.

Sekarang Docker sudah terinstal dan kita dapat menjalankan perintah tanpa sudo. Namun kami tidak memiliki Docker Compose, yang juga diperlukan untuk melakukan apa yang kami inginkan. Beberapa tugas berikutnya menginstalnya.

Yang pertama mengunduh biner dari server dan menginstalnya di bawah /usr/local/bin/docker-compose , memberikan izin yang diperlukan.

Yang terakhir hanya menambahkan biner ke properti pengguna ubuntu.

Sekarang kita telah memahami pedomannya, bagaimana kita dapat melaksanakannya?

Cara mengeksekusi file playbook menggunakan Ansible

Ansible hadir dengan alat CLI untuk menjalankan playbook, yaitu ansible-playbook.

Jalankan perintah berikut:

ansible-playbook -i inventory playbooks/main.yaml

Dan itu saja. Ansible harus dapat menghubungkan dan menginstal semua hal yang diperlukan. Outputnya akan memberi tahu Anda tindakan apa yang telah dijalankan.

Anda dapat memeriksa apakah Ansible benar-benar idempoten dengan menjalankan kembali perintah tersebut. Tidak ada yang harus diubah.

Kemungkinan masih bersama kita

Terlepas dari munculnya Docker dan sejenisnya, masih ada beberapa tugas yang harus Anda jalankan pada mesin, dan Anda tidak ingin melakukannya dengan tangan.

Ansible masih bersama kami dan dapat membantu Anda menyediakan mesin dengan cara yang berulang dan berversi.

Sekian dan Terimakasih...