Tutorial yang Mungkin untuk Pemula: Buku Pedoman, Perintah & Contoh

Apa itu Ansible?

Mungkin adalah alat otomatisasi dan orkestrasi sumber terbuka untuk penyediaan perangkat lunak, manajemen konfigurasi, dan penerapan perangkat lunak. Ansible juga dapat dengan mudah menjalankan dan mengkonfigurasi sistem mirip Unix Windows sistem untuk menyediakan infrastruktur sebagai kode. Ini berisi bahasa pemrograman deklaratifnya sendiri untuk konfigurasi dan manajemen sistem.

Ansible populer karena kesederhanaan instalasinya, kemudahan penggunaan dalam hal konektivitas ke klien, kurangnya agen untuk klien Ansible dan banyaknya keterampilan. Ini berfungsi dengan menghubungkan melalui SSH ke klien, sehingga tidak memerlukan agen khusus di sisi klien, dan dengan mendorong modul ke klien, modul kemudian dieksekusi secara lokal di sisi klien dan outputnya didorong kembali ke server Ansible.

Karena menggunakan SSH, ansible dapat dengan mudah terhubung ke klien menggunakan SSH-Keys, sehingga menyederhanakan seluruh proses. Detail klien, seperti nama host atau alamat IP dan port SSH, disimpan dalam file yang disebut file inventaris. Setelah Anda membuat file inventaris dan mengisinya, ansible dapat menggunakannya.

Mengapa menggunakan Ansible?

Berikut adalah beberapa kelebihan/manfaat penting menggunakan Ansible

  • Salah satu keuntungan paling signifikan dari Ansible adalah gratis untuk digunakan oleh semua orang.
  • Tidak diperlukan keahlian administrator sistem khusus untuk menginstal dan menggunakan Ansible, dan dokumentasi resminya sangat lengkap.
  • Modularitasnya terkait plugin, modul, inventaris, dan buku pedoman menjadikan Ansible pendamping yang sempurna untuk mengatur lingkungan besar.
  • Ansible sangat ringan dan konsisten, dan tidak ada kendala terkait sistem operasi atau perangkat keras yang mendasarinya.
  • Ini juga sangat aman karena kemampuannya tanpa agen dan karena penggunaan fitur keamanan OpenSSH.
  • Keuntungan lain yang mendorong penerapan Ansible adalah kurva pembelajarannya yang mulus ditentukan oleh dokumentasi yang komprehensif serta struktur dan konfigurasi yang mudah dipelajari.

Sejarah yang Mungkin

Berikut adalah tanda-tanda penting dari sejarah yang mungkin terjadi:

  • Pada bulan Februari 2012 proyek Ansible dimulai. Ini pertama kali dikembangkan oleh Michael DeHaan, pencipta Cobbler and Func, Fedora Unified Network Controller.
  • Awalnya disebut AnsibleWorks Inc, perusahaan yang mendanai alat ansible diakuisisi pada tahun 2015 oleh RedHat dan kemudian, bersama dengan RedHat, bergerak di bawah naungan IBM.
  • Saat ini, Ansible disertakan dalam distribusi seperti Fedora Linux, RHEL, Centos dan Oracle Linux.

Istilah penting yang digunakan di Ansible

  • Server yang memungkinkan

    Mesin tempat Ansible diinstal dan dari mana semua tugas dan pedoman akan dijalankan

  • Modul

    Pada dasarnya, modul adalah perintah atau kumpulan perintah serupa yang mungkin dimaksudkan untuk dieksekusi di sisi klien

  • tugas

    Tugas adalah bagian yang terdiri dari satu prosedur yang harus diselesaikan

  • Peran

    Suatu cara untuk mengatur tugas dan file terkait yang nantinya akan dipanggil dalam buku pedoman

  • Fakta

    Informasi diambil dari sistem klien dari variabel global dengan operasi pengumpulan fakta

  • Inventaris

    File yang berisi data tentang server klien ansible. Didefinisikan dalam contoh selanjutnya sebagai file host

  • Bermain

    Eksekusi buku pedoman

  • Handler

    Tugas yang dipanggil hanya jika ada pemberi notifikasi

  • Pemberitahu

    Bagian dikaitkan dengan tugas yang memanggil pengendali jika keluarannya diubah

  • label

    Nama ditetapkan untuk tugas yang dapat digunakan nanti untuk mengeluarkan tugas atau sekelompok tugas spesifik tersebut.

Kemungkinan Instalasi di Linux

Setelah Anda membandingkan dan mempertimbangkan pilihan Anda dan memutuskan untuk menggunakan Ansible, langkah selanjutnya adalah menginstalnya di sistem Anda. Kami akan melalui langkah-langkah instalasi yang berbeda Linux distribusi, yang paling populer, dalam tutorial kecil berikutnya.

Instal Ansible pada sistem Centos/RedHat

Langkah 1) Instal repo EPEL

[root@ansible-server ~]# sudo yum install epel-release

Langkah 2) Instal paket yang memungkinkan

[root@ansible-server ~]# sudo  yum install -y ansible

Instal Ansible pada sistem Centos/RedHat

Instal mungkin Ubuntu/sistem Debian

Langkah 1) Lakukan pembaruan pada paket

$ sudo apt update

Langkah 2) Instal paket software-properties-common

$ sudo apt install software-properties-common

Langkah 3) Instal arsip paket pribadi anible

$ sudo apt-add-repository ppa:ansible/ansible

Langkah 4) Instal mungkin

$ sudo apt update
$ sudo apt install ansible

Perintah ad-hoc yang mungkin

Salah satu cara paling sederhana untuk menggunakan Ansible adalah dengan menggunakan perintah ad-hoc. Ini dapat digunakan ketika Anda ingin mengeluarkan beberapa perintah pada server atau sekelompok server. Perintah ad-hoc tidak disimpan untuk penggunaan di masa mendatang tetapi mewakili cara cepat untuk berinteraksi dengan server yang diinginkan.

Untuk tutorial Ansible ini, file host dua server sederhana akan dikonfigurasi, berisi host1 dan host2.

Anda dapat memastikan bahwa host dapat diakses dari server yang memungkinkan dengan mengeluarkan perintah ping pada semua host.

[root@ansible-server test_ansible]# ansible -i hosts all -m ping
host1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
host2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Perintah ad-hoc yang mungkin

Penjelasan:

  1. Status perintah, dalam hal ini SUKSES
  2. Host tempat perintah dijalankan
  3. Perintah dikeluarkan melalui parameter -m, dalam hal ini ping
  4. Dengan parameter -i, Anda dapat mengarahkan ke file host.


Anda dapat mengeluarkan perintah yang sama hanya pada host tertentu jika diperlukan.

[root@ansible-server test_ansible]# ansible -i hosts all -m ping --limit host2
host2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Perintah ad-hoc yang mungkin

Penjelasan:

  1. Parameter batas dapat digunakan untuk mengeluarkan perintah hanya pada host tertentu di file host
  2. Nama host seperti yang ditentukan dalam file inventaris

Jika Anda perlu menyalin file ke beberapa tujuan dengan cepat, Anda dapat menggunakan modul salin yang menggunakan SCP. Sehingga perintah dan outputnya terlihat seperti di bawah ini:

[root@ansible-server test_ansible]# ansible -i hosts all -m copy -a "src=/root/test_ansible/testfile dest=/tmp/testfile"
host1 | SUCCESS => {
    "changed": true,
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "dest": "/tmp/testfile",
    "gid": 0,
    "group": "root",
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e",
    "mode": "0644",
    "owner": "root",
    "size": 0,
    "src": "/root/.ansible/tmp/ansible-tmp-1562216392.43-256741011164877/source",
    "state": "file",
    "uid": 0
}
host2 | SUCCESS => {
    "changed": true,
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "dest": "/tmp/testfile",
    "gid": 0,
    "group": "root",
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e",
    "mode": "0644",
    "owner": "root",
    "size": 0,
    "src": "/root/.ansible/tmp/ansible-tmp-1562216392.6-280302911361278/source",
    "state": "file",
    "uid": 0
}

Perintah ad-hoc yang mungkin

Penjelasan:

  1. Salin modul yang ditentukan
  2. Argumen modul, dalam hal ini, adalah jalur absolut sumber dan jalur absolut tujuan.
  3. Output perintah Ansible yang mencerminkan keberhasilan perintah copy dan detail lainnya seperti checksum sha1 atau md5 untuk pemeriksaan integritas file dan metadata seperti pemilik, ukuran, atau izin. Sangat mudah untuk menginstal paket di banyak server. Ansible memiliki beberapa modul yang berinteraksi dengan installer yang digunakan, seperti yum, apt, dnf, dll.

Pada contoh berikutnya, Anda akan mengetahui cara menginstal paket melalui modul yum pada dua host Centos.

[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=present'
host1 | SUCCESS => {
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [


"Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirror.netsite.dk\n * elrepo: mirrors.xservers.ro\n * epel: fedora.mirrors.telekom.ro\n * extras: centos.mirrors.telekom.ro\n * remi-php70: remi.schlundtech.de\n * remi-safe: remi.schlundtech.de\n * updates: centos.mirror.iphh.net\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package         Arch              Version                Repository       Size\n================================================================================\nInstalling:\n ncdu            x86_64            1.14-1.el7             epel             51 k\n\nTransaction Summary\n================================================================================\nInstall  1 Package\n\nTotal download size: 51 k\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : ncdu-1.14-1.el7.x86_64                                       1/1 \n  Verifying  : ncdu-1.14-1.el7.x86_64                                       1/1 \n\nInstalled:\n  ncdu.x86_64 0:1.14-1.el7                                                      \n\nComplete!\n"
    ]
}
host2 | SUCCESS => {
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [
        "Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirror.netsite.dk\n * elrepo: mirrors.leadhosts.com\n * epel: mirrors.nav.ro\n * extras: centos.mirrors.telekom.ro\n * remi-php70: mirrors.uni-ruse.bg\n * remi-safe: mirrors.uni-ruse.bg\n * updates: centos.mirror.iphh.net\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package         Arch              Version                Repository       Size\n================================================================================\nInstalling:\n ncdu            x86_64            1.14-1.el7             epel             51 k\n\nTransaction Summary\n================================================================================\nInstall  1 Package\n\nTotal download size: 51 k\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : ncdu-1.14-1.el7.x86_64                                       1/1 \n  Verifying  : ncdu-1.14-1.el7.x86_64                                       1/1 \n\nInstalled:\n  ncdu.x86_64 0:1.14-1.el7                                                      \n\nComplete!\n"
    ]
}

Perintah ad-hoc yang mungkin

Penjelasan:

  1. Modul Yum digunakan dalam contoh ini
  2. Ini mendefinisikan argumen modul, dan dalam hal ini, Anda akan memilih nama paket dan statusnya. Jika negara tidak ada, misalnya, paket akan dicari dan jika ditemukan, dihapus
  3. Ketika diwarnai dengan warna kuning, Anda akan melihat output dari perintah yang memungkinkan dengan status berubah, artinya dalam hal ini, paket telah ditemukan dan diinstal.
  4. Status perintah yum install dikeluarkan melalui ansible. Dalam hal ini paket ncdu.x86_64 0:1.14-1.el7 telah diinstal.

Tentu saja, semua opsi penginstal yum dapat digunakan melalui berbagai cara, termasuk memperbarui, menginstal, versi terbaru, atau menghapus.

Pada contoh di bawah, perintah yang sama dikeluarkan untuk menghapus paket ncdu yang diinstal sebelumnya.

[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=absent'
host1 | SUCCESS => {
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [
        "Loaded plugins: fastestmirror\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package         Arch              Version               Repository        Size\n================================================================================\nRemoving:\n ncdu            x86_64            1.14-1.el7            @epel             87 k\n\nTransaction Summary\n================================================================================\nRemove  1 Package\n\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Erasing    : ncdu-1.14-1.el7.x86_64                                       1/1 \n  Verifying  : ncdu-1.14-1.el7.x86_64                                       1/1 \n\nRemoved:\n  ncdu.x86_64 0:1.14-1.el7                                                      \n\nComplete!\n"
    ]
}
host2 | SUCCESS => {
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [
        "Loaded plugins: fastestmirror\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package         Arch              Version               Repository        Size\n================================================================================\nRemoving:\n ncdu            x86_64            1.14-1.el7            @epel             87 k\n\nTransaction Summary\n================================================================================\nRemove  1 Package\n\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Erasing    : ncdu-1.14-1.el7.x86_64                                       1/1 \n  Verifying  : ncdu-1.14-1.el7.x86_64                                       1/1 \n\nRemoved:\n  ncdu.x86_64 0:1.14-1.el7                                                      \n\nComplete!\n"
    ]
}

Perintah ad-hoc yang mungkin

Penjelasan:

  1. Output dari perintah yum menunjukkan bahwa paket telah dihapus.

Fitur lain yang berguna dan penting yang digunakan ansible untuk berinteraksi dengan server klien adalah mengumpulkan beberapa fakta tentang sistem. Jadi, ia mengambil informasi perangkat keras, perangkat lunak, dan versi dari sistem dan menyimpan setiap nilai dalam variabel yang dapat digunakan nanti.

Jika Anda memerlukan informasi rinci tentang sistem yang akan dimodifikasi melalui kemungkinan, perintah selanjutnya dapat digunakan. Modul setup mengumpulkan fakta dari variabel sistem.

Perintah ad-hoc yang mungkin

Buku Pedoman yang Mungkin

Buku Pedoman yang Mungkin adalah cara mengirim perintah ke sistem jarak jauh melalui skrip. Playbook Ansible digunakan untuk mengonfigurasi lingkungan sistem yang kompleks guna meningkatkan fleksibilitas dengan mengeksekusi skrip ke satu atau beberapa sistem. Playbook Ansible cenderung lebih merupakan bahasa konfigurasi daripada bahasa pemrograman.

Perintah playbook yang memungkinkan menggunakan format YAML, jadi tidak banyak sintaks yang diperlukan, namun indentasi harus diperhatikan. Seperti namanya, playbook adalah kumpulan drama. Melalui buku pedoman, Anda dapat menetapkan peran tertentu untuk beberapa host dan peran lain untuk host lainnya. Dengan melakukan hal ini, Anda dapat mengatur beberapa server dalam skenario yang sangat beragam, semuanya dalam satu pedoman.

Untuk mendapatkan semua detail yang tepat sebelum melanjutkan dengan contoh playbook Ansible, pertama-tama kita harus mendefinisikan tugas. Tugas adalah antarmuka ke modul ansible untuk peran dan playbook.

Sekarang mari kita pelajari buku pedoman yang mungkin melalui contoh dengan satu buku pedoman dengan satu permainan, yang berisi banyak tugas seperti di bawah ini:

---

- hosts: group1
  tasks:
  - name: Install lldpad package
    yum:
      name: lldpad
      state: latest
  - name: check lldpad service status
    service:
      name: lldpad
      state: started

Buku Pedoman yang Mungkin

Dalam contoh buku pedoman yang mungkin di atas, grup1 host dalam file host ditargetkan untuk instalasi paket lldpad menggunakan modul yum dan kemudian layanan lldpad yang dibuat setelah instalasi kemudian dimulai menggunakan modul layanan yang sebagian besar digunakan untuk berinteraksi dengan ansambel systemd.

Penjelasan:

  1. Sekelompok host tempat pedoman akan dijalankan
  2. Modul Yum digunakan dalam tugas ini untuk instalasi lldpad
  3. Modul layanan digunakan untuk memeriksa apakah layanan aktif dan berjalan setelah instalasi

Setiap playbook ansible bekerja dengan file inventaris. File inventaris berisi daftar server yang dibagi menjadi beberapa grup untuk kontrol yang lebih baik atas detail seperti Alamat IP dan port SSH untuk setiap host.

File inventaris yang dapat Anda gunakan untuk contoh pedoman Ansible ini terlihat seperti di bawah ini. Ada dua grup, bernama grup1 dan grup2 yang masing-masing berisi host1 dan host2.

[group1]
host1 ansible_host=192.168.100.2 ansible_ssh_port=22
[group2]
host2 ansible_host=192.168.100.3 ansible_ssh_port=22

Buku Pedoman yang Mungkin

Penjelasan:

  1. Nama grup
  2. Nama host, dengan alamat IP dan port ssh, dalam hal ini yang default, 22.

Contoh buku pedoman Ansible lain yang berguna yang berisi dua permainan untuk dua tuan rumah kali ini adalah yang berikutnya. Untuk grup host pertama, grup1, selinux akan diaktifkan. Jika diaktifkan, maka sebuah pesan akan muncul di layar host.

Untuk grup host kedua, paket httpd akan diinstal hanya jika ansible_os_family adalah RedHat dan ansible_system_vendor adalah HP.

Ansible_os_family dan ansible_system_vendor adalah variabel yang dikumpulkan dengan opsi mengumpulkan_fakta dan dapat digunakan seperti dalam contoh kondisional ini.

---

- hosts: group1
  tasks:
  - name: Enable SELinux
    selinux:
      state: enabled
    when: ansible_os_family == 'Debian'
    register: enable_selinux

  - debug:
      Imsg: "Selinux Enabled. Please restart the server to apply changes."
    when: enable_selinux.changed == true

- hosts: group2
  tasks:
  - name: Install apache
    yum:
      name: httpd
      state: present
    when: ansible_system_vendor == 'HP' and ansible_os_family == 'RedHat'

Buku Pedoman yang Mungkin

Penjelasan:

  1. Contoh klausa kapan, Dalam hal ini, tipe OS ketika adalah Debian. Variabel ansible_os_family dikumpulkan melalui fungsionalitas Gather_facts.
  2. Keluaran tugas didaftarkan untuk digunakan di masa mendatang, dengan namanya aktifkan_selinux
  3. Contoh lain dari klausa when. Dalam kasus ini, sebuah pesan akan ditampilkan untuk pengguna host jika SELinux memang diaktifkan sebelumnya.
  4. Contoh lain dari klausa kapan yang terdiri dari dua aturan

Selain tugas, ada juga beberapa tugas khusus yang disebut penangan. Penangan harus memiliki nama unik di seluruh pedoman. Ini bekerja dengan cara yang sama seperti tugas biasa tetapi penangan dapat diberitahu melalui pemberi notifikasi.

Jika seorang handler tidak diberitahu selama menjalankan playbook, maka handler tersebut tidak akan berjalan. Namun, jika lebih dari satu tugas memberi tahu seorang pengendali, tugas ini hanya akan berjalan satu kali setelah semua tugas selesai.

Dalam contoh yang ditunjukkan di bawah ini, Anda dapat melihat bagaimana tugas tertentu memiliki bagian pemberitahuan yang memanggil tugas lain. Jika output dari tugas pertama diubah, maka tugas pengendali akan dipanggil. Contoh terbaiknya adalah mengubah file konfigurasi dan kemudian memulai ulang layanan tertentu.

---

- hosts: group2
  tasks:
  - name: sshd config file modify port
    lineinfile:
     path: /etc/ssh/sshd_config
     regexp: 'Port 28675'
     line: '#Port 22'
    notify:
       - restart sshd
handlers
    - name: restart sshd
      service: sshd
        name: sshd
        state: restarted

Dalam hal ini, jika tugas pertama, “sshd config file ubah port” diubah, artinya jika port tersebut bukan 28675, maka port tersebut akan diubah dan tugas tersebut akan memberitahukan handler dengan nama yang sama untuk dijalankan. , dan itu akan memulai ulang layanan sshd.

Buku Pedoman yang Mungkin

Penjelasan:

  1. Contoh pemberi notifikasi
  2. Contoh seorang pawang

Peran yang Mungkin

Ketika berhadapan dengan pedoman yang luas, akan lebih mudah untuk membagi tugas menjadi beberapa peran. Ini juga membantu dalam menggunakan kembali peran tersebut di masa depan. Peran adalah kumpulan tugas, yang dapat dipindahkan dari satu playbook ke playbook lainnya, dapat dijalankan secara mandiri tetapi hanya melalui file playbook.

Peran disimpan dalam direktori terpisah dan memiliki struktur direktori tertentu.

[root@ansible-server test2]# tree
.
`-- role1
    |-- defaults
    |   `-- main.yml
    |-- handlers
    |   `-- main.yml
    |-- meta
    |   `-- main.yml
    |-- README.md
    |-- tasks
    |   `-- main.yml
    |-- tests
    |   |-- inventory
    |   `-- test.yml
    `-- vars
        `-- main.yml

7 directories, 8 files

File yaml di direktori default berisi daftar variabel default yang akan digunakan bersama dengan playbook. Direktori handler digunakan untuk menyimpan handler. Direktori meta seharusnya memiliki informasi tentang penulis dan ketergantungan peran. Di direktori tugas, terdapat file yaml utama untuk peran tersebut.

Direktori tes berisi contoh file pedoman yaml dan contoh file inventaris dan sebagian besar digunakan untuk tujuan pengujian sebelum membuat peran sebenarnya.

Direktori vars berisi file yaml di mana semua variabel yang digunakan oleh peran tersebut akan ditentukan. Templat direktori dan file direktori harus berisi file dan templat yang akan digunakan oleh tugas dalam peran tersebut.

Untuk membuat pohon direktori untuk suatu peran, Anda harus menggunakan perintah berikut dengan parameter terakhir, nama peran:

[root@ansible-server test2]# ansible-galaxy init role1

Ansible juga berfungsi baik dengan templat. Sebagai bahasa untuk templating menggunakan Jinja2.

Pada contoh berikutnya, Anda akan mengetahui tampilan dasar template jinja2 dan menggunakannya dalam sebuah peran.

Pada saat dijalankan, bergantung pada, katakanlah, di pusat data mana server Anda berada, Anda dapat memilih lebih dari satu server nama, masing-masing terkait dengan pusat data, menggunakan variabel “resolver_ip_addresses.”

{% for resolver in resolver_ip_addresses %}
nameserver {{ resolver }}
{% endfor %}

options timeout:1
options attempts:5
options rotate

Dalam contoh ini, di direktori playbook, terdapat beberapa variabel yang ditentukan, termasuk variabel bernama resolver_ip_addresses dengan nilai berbeda bergantung pada pusat data.

- name: Set resolver for server
  template:
    src: dns.j2
    dest: /etc/resolv.conf
    group: root
    owner: root
    mode: "0644"
    tag: resolver	

Peran yang Mungkin

Penjelasan:

  1. Nama template yang akan digunakan. Templat terletak di direktori templat di jalur peran
  2. Jalur tujuan nama file yang akan diganti dengan template, di sisi klien.
  3. Izin file tujuan

Tugas peran juga dapat memiliki bidang tag, yang memiliki nama yang diatribusikan. Lebih dari satu tugas dapat berbagi tag yang sama. Saat menjalankan pedoman yang memungkinkan, Anda juga dapat menentukan tag, sehingga tugas tersebut akan dijalankan.

Studi Kasus yang Mungkin

Pada bagian ini, kita akan menganalisis Studi Kasus mengenai kemungkinan pedoman penting yang memiliki tiga peran. Tujuannya adalah untuk memberikan contoh praktis tentang apa yang telah kita bicarakan sebelumnya. Beberapa contoh yang digunakan sebelumnya dalam tutorial pedoman Ansible ini akan diadaptasi dan digunakan dalam pedoman ini.

Di bawah ini adalah struktur direktori buku pedoman. File Yaml yang akan digunakan adalah p4.yml.

[root@ansible-server test_ansible]# ls -lrth
total 16K
-rw-r--r--. 1 root root   0 Jul  3 10:13 testfile
-rw-r--r--. 1 root root 203 Jul  3 13:30 p1.yml
-rw-r--r--. 1 root root 125 Jul  3 15:00 hosts
-rw-r--r--. 1 root root 488 Jul  3 16:40 p2.yml
-rw-r--r--. 1 root root 188 Jul  4 17:33 p4.yml
drwxr-xr-x. 5 root root  47 Jul  4 17:35 roles
[root@ansible-server test_ansible]# cd roles
[root@ansible-server roles]# ls -lrth
total 12K
drwxr-xr-x. 9 root root 4.0K Jul  4 12:52 httpd
drwxr-xr-x. 9 root root 4.0K Jul  4 13:55 selinux
drwxr-xr-x. 9 root root 4.0K Jul  4 16:54 resolver

Playbook ini memiliki tiga peran, salah satunya disebut sebagai penyelesai (resolver) yang menetapkan server nama tertentu di server dengan menyalin file dari server ke tujuan /etc/resolv.conf. Yang lain disebut httpd, dan menginstal paket httpd dengan modul yum, dan yang ketiga mengaktifkan SELinux dan memberi tahu pengguna yang login untuk me-reboot sistem. Setiap peran dibuat menggunakan perintah ansible-galaxy.

Peran penyelesai, tugas main.yml:

Studi Kasus yang Mungkin

Peran Httpd, tugas main.yml:

Studi Kasus yang Mungkin

Peran Selinux, tugas main.yml:

Studi Kasus yang Mungkin

Berikut adalah definisi playbook p4.yml. Playbook ini akan berjalan di semua host jika tidak ditentukan lain di baris perintah, playbook ini akan berjalan sebagai pengguna root di port 22 (SSH), playbook ini akan mengumpulkan fakta sebelum menjalankan peran, dan playbook ini akan menjalankan ketiga peran yang disebutkan sebelumnya. Setiap peran dapat dijalankan secara independen dengan menentukan tag di baris perintah ansible-playbook dengan parameter –t.

---

- hosts: all
  user: root
  port: 22
  gather_facts: True
  roles:
    - { role: selinux, tags: selinux }
    - { role: httpd, tags: httpd }
    - { role: resolver, tags: resolver }

Menjalankan buku pedoman p4.yml di dua host dan menafsirkan hasilnya. Perintah yang sama dapat dijalankan dengan parameter –check untuk uji coba. Jika Anda ingin menggunakan otentikasi kata sandi, gunakan parameter -k.

Studi Kasus yang Mungkin

Penjelasan:

  1. Perintah playbook yang memungkinkan yang menjalankan p4.yml
  2. Playbook melewatkan peran SELinux karena sudah diaktifkan.
  3. Kemungkinan ditemukan bahwa paket httpd sudah terinstal, sehingga kembali dengan baik.
  4. Resolver telah ditetapkan, dan status pemecah peran telah diubah.

Lembar Cheat Perintah yang Mungkin

Instal repo EPEL pada sistem Centos/RHEL

[root@ansible-server ~]# sudo yum install epel-release

Instal paket yang memungkinkan pada sistem Centos/RHEL

[root@ansible-server ~]# sudo  yum install -y ansible

Lakukan pembaruan pada paket di Debian/Ubuntu sistem

$ sudo apt update

Instal paket software-properties-common di Debian/Ubuntu sistem

$ sudo apt install software-properties-common

Instal arsip paket pribadi ansible di Debian/Ubuntu sistem

$ sudo apt-add-repository ppa:ansible/ansible

Instal mungkin di Debian/Ubuntu sistem

$ sudo apt update
$ sudo apt install ansible

Keluarkan perintah ping pada semua server yang ditentukan dalam file inventaris bernama host

 
[root@ansible-server test_ansible]# ansible -i hosts all -m ping

Keluarkan perintah ping hanya pada host2

[root@ansible-server test_ansible]# ansible -i hosts all -m ping --limit host2

Salin file “testfile” pada semua host di file inventaris

[root@ansible-server test_ansible]# ansible -i hosts all -m copy -a "src=/root/test_ansible/testfile dest=/tmp/testfile"

Instal paket ncdu di semua host

[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=present'

Hapus paket ncdu di semua host

[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=absent'

Bangun struktur direktori untuk peran bernama role1.

[root@ansible-server test2]# ansible-galaxy init role1

Buku pedoman p4.yml yang dijalankan kering

[root@ansible-server test_ansible]# ansible-playbook -i hosts p4.yml --check

Jalankan pedoman p4.yml dengan otentikasi kata sandi untuk semua host

[root@ansible-server test_ansible]# ansible-playbook -i hosts p4.yml -k

Kesimpulan

Dalam dunia dengan teknologi yang terus berubah dengan cepat dan tumbuh luar biasa cepat pada saat yang sama, administrator sistem dan insinyur devops harus memikirkan pendekatan yang berbeda tentang cara mengotomatiskan tugas rutin dan mengatur kumpulan server yang besar.

Meskipun ada banyak alternatif untuk Mungkin (Koki, Boneka) di luar sana yang melakukan hal yang sama dengan beberapa perbedaan, Ansible berhasil melampaui semuanya dengan kesederhanaannya, peningkatan keamanan, dan yang terpenting kurva pembelajarannya lancar. Karena kualitas ini dan adopsi Ansible yang cepat, kami membuat tutorial yang penuh dengan contoh sehingga Anda bisa mendapatkan pengalaman pertama yang lebih lancar dalam bekerja dengan Ansible.

Dalam tutorial dasar-dasar Ansible ini, kami menjelaskan ansible dan berbicara sedikit tentang sejarahnya. Kami menyebutkan kelebihan Ansible dan keuntungan yang dapat diberikan ansible pada otomatisasi dan orkestrasi infrastruktur dengan berbagai ukuran. Kami mendefinisikan istilah-istilah penting yang mungkin digunakan dan mendefinisikan struktur buku pedoman Ansible. Contoh menyeluruh disertai semua informasi dengan penjelasan rinci.