SaltStack - Eksekusi Jarak Jauh

Salah satu konsep inti Salt adalah eksekusi jarak jauh. Salt dapat menjalankan perintah di ribuan sistem dalam hitungan detik. Salt menggunakan perintahnya sendiri untuk melakukan fungsi ini. Mari kita sekarang memahami berbagai perintah Salt untuk eksekusi jarak jauh di bab ini.

Perintah Garam

Perintah Salt memungkinkan master Salt untuk berkomunikasi dengan satu atau lebih Salt minions. Sintaks dasarnya adalah sebagai berikut,

salt '<target>' <module.function> [arguments]

Sintaks perintah di atas terdiri dari tiga komponen utama berikut.

  • target - Ini menentukan sistem mana yang diterapkan oleh perintah.

  • module.function- Itu adalah perintah. Perintah terdiri dari modul dan fungsi.

  • arguments - Data tambahan yang diperlukan untuk memanggil fungsi tersebut.

Mari kita pahami masing-masing komponen secara detail.

Apa itu Komponen Target?

Target adalah komponen, yang memungkinkan Anda untuk memfilter minion (sistem terkelola) untuk menjalankan fungsinya. Perintah sederhana yang menggunakan komponen target didefinisikan di bawah ini.

salt '*' test.ping

Ini akan menghasilkan yang berikut ini output -

minion2:
   True
minion1:
   True

Di sini, targetnya ‘*’mewakili semua sistem yang dikelola. 'test'di sini adalah modul dan pingadalah sebuah fungsi. Ini digunakan untuk menguji layanan ping di sistem jarak jauh. Kita akan belajar tentang berbagai modul dan fungsinya di bab-bab selanjutnya.

Target menggunakan ID (minion)

Anda dapat mengirim perintah ke antek tertentu menggunakan iddi target. Daripada menggunakan'*', Anda bisa menggantinya menggunakan minion id. Ini didefinisikan di bawah.

salt 'minion1’ test.ping

Ini akan menghasilkan yang berikut ini output -

minion1:
   True

Target menggunakan Ekspresi Reguler

Target dapat difilter dengan ekspresi reguler tertentu. Ini didefinisikan di bawah.

salt -E 'minion[0-9]' test.ping

Ini akan menghasilkan yang berikut ini output -

minion2:
   True
minion1:
   True

Target menggunakan Daftar

Target dapat ditentukan secara eksplisit dalam daftar. Ini didefinisikan dalam blok kode berikut.

salt -L 'minion1,minion2' test.ping

Ini akan menghasilkan yang berikut ini output -

minion2:
   True
minion1:
   True

Target berdasarkan Kondisi

Target dapat digabungkan dalam satu perintah seperti yang ditunjukkan pada blok kode di bawah ini.

salt -C 'G@os:Ubuntu and minion* or [email protected].*' test.ping

Ini akan menghasilkan yang berikut ini output -

minion1:
   True
minion2:
   True

Modul dan Fungsi (modul.fungsi)

Salt dapat menjalankan perintah shell; perbarui paket dan distribusikan file, dll., di semua sistem yang dikelola secara bersamaan. Salt melakukan operasi ini menggunakan modul. Salt memiliki modul khusus untuk semua fungsi yang tersedia. Mari kita pahami modul Salt yang berbeda menggunakan beberapa contoh sederhana dalam bab ini.

Perintah Shell

Salt menjalankan perintah shell dari jarak jauh di beberapa sistem menggunakan cmd.runperintah. Itucmd adalah modul utama dan run adalah salah satu fungsi yang tersedia di cmdmodul. Iturun fungsi memungkinkan perintah shell apa pun untuk dieksekusi di sistem jarak jauh seperti yang ditunjukkan pada blok kode di bawah ini.

salt '*' cmd.run 'ls -l /etc'

Ini akan menghasilkan yang berikut ini output -

minion2:
   total 868
   drwxr-xr-x 7 root root    4096 Jan 26 22:10 X11
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 acpi
   -rw-r--r-- 1 root root    2981 Jan 26 20:48 adduser.conf
   -rw-r--r-- 1 root root      10 Jan 26 21:04 adjtime
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 alternatives
   drwxr-xr-x 3 root root    4096 Jan 26 20:53 apm
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apparmor
   drwxr-xr-x 9 root root    4096 Jan 26 21:02 apparmor.d
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apport
   drwxr-xr-x 6 root root    4096 Jan 29 07:14 apt
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 at-spi2
……………
……………
minion1:
   total 868
   drwxr-xr-x 7 root root    4096 Jan 26 22:10 X11
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 acpi
   -rw-r--r-- 1 root root    2981 Jan 26 20:48 adduser.conf
   -rw-r--r-- 1 root root      10 Jan 26 21:04 adjtime
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 alternatives
   drwxr-xr-x 3 root root    4096 Jan 26 20:53 apm

   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apparmor
   drwxr-xr-x 9 root root    4096 Jan 26 21:02 apparmor.d
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apport
   drwxr-xr-x 6 root root    4096 Jan 29 07:09 apt
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 at-spi2
   -rw-r----- 1 root daemon   144 Oct 21  2013 at.deny
   -rw-r--r-- 1 root root    2177 Apr  9  2014 bash.bashrc
   -rw-r--r-- 1 root root      45 Mar 22  2014 bash_completion
……………
……………

Tampilkan Penggunaan Disk

Salt menyediakan modul khusus, diskuntuk mendapatkan detail lengkap disk dari sistem yang dikelola. Itudiskmodule mempunyai sebuah usage berfungsi untuk menanyakan detailnya.

salt '*' disk.usage

Ini akan menghasilkan yang berikut ini output -

minion1:
   ----------
   /:
      ----------
      1K-blocks:
         41251136
      available:
         37852804
      capacity:
         5%
      filesystem:
         /dev/sda1
      used:
         1662420
   /dev:
      ----------
      1K-blocks:
         503908
      available:
         503896
      capacity:
         1%
      filesystem:
         udev
      used:
         12
   /run:
      ----------
      1K-blocks:
         101780
      available:
         101412
      capacity:
         1%
      filesystem:
         tmpfs
      used:
         368
   /run/lock:
      ----------
      1K-blocks:
         5120
      available:
         5120
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /run/shm:
      ----------
      1K-blocks:
         508884
      available:
         508872
      capacity:
         1%
      filesystem:
         none
      used:
         12
   /run/user:
      ----------
      1K-blocks:
         102400
      available:
         102400
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /sys/fs/cgroup:
      ----------
      1K-blocks:
         4
      available:
         4
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /vagrant:
      ----------
      1K-blocks:
         303114632
      available:
         252331440
      capacity:
         17%
      filesystem:
         none
      used:
         50783192
minion2:
   ----------
   /:
      ----------
      1K-blocks:
         41251136
      available:
         37852804
      capacity:
         5%
      filesystem:
         /dev/sda1
      used:
         1662420
   /dev:
      ----------
      1K-blocks:
         503908
      available:
         503896
      capacity:
         1%
      filesystem:
         udev
      used:
         12
   /run:
      ----------
      1K-blocks:
         101780
      available:
         101412
      capacity:
         1%
      filesystem:
         tmpfs
      used:
         368
   /run/lock:
      ----------
      1K-blocks:
         5120
      available:
         5120
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /run/shm:
      ----------
      1K-blocks:
         508884
      available:
         508872
      capacity:
         1%
      filesystem:
         none
      used:
         12
   /run/user:
      ----------
      1K-blocks:
         102400
      available:
         102400
      capacity:
         0%
      filesystem:
         none
      used:
            0
   /sys/fs/cgroup:
      ----------
      1K-blocks:
         4
      available:
         4
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /vagrant:
      ----------
      1K-blocks:
         303114632
      available:
         252331440
      capacity:
         17%
      filesystem:
         none
      used:
         50783192

Antarmuka Jaringan

Salt menyediakan modul terpisah, jaringan dan fungsi, antarmuka di dalam modul untuk menanyakan informasi antarmuka jaringan tentang sistem yang dikelola.

salt '*' network.interfaces

Ini akan menghasilkan yang berikut ini output -

minion1:
   ----------
   eth0:
      ----------
      hwaddr:
         08:00:27:04:3e:28
      inet:
         |_
            ----------
            address:
               10.0.2.15
            broadcast:
               10.0.2.255
            label:
               eth0
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe04:3e28
            prefixlen:
               64
            scope:
               link
      up:
         True
   eth1:
      ----------
      hwaddr:
         08:00:27:34:10:52
      inet:
         |_
            ----------
            address:
               192.168.50.11
            broadcast:
               192.168.50.255
            label:
               eth1
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe34:1052
            prefixlen:
               64
            scope:
               link
      up:
         True
   lo:
      ----------
      hwaddr:
         00:00:00:00:00:00
      inet:
         |_
            ----------
            address:
               127.0.0.1
            broadcast:
               None
            label:
               lo
            netmask:
               255.0.0.0
      inet6:
         |_
            ----------
            address:
               ::1
            prefixlen:
               128
            scope:
               host
      up:
         True
minion2:
   ----------
   eth0:
      ----------
      hwaddr:
         08:00:27:04:3e:28
      inet:
         |_
            ----------
            address:
               10.0.2.15
            broadcast:
               10.0.2.255
            label:
               eth0
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe04:3e28
            prefixlen:
               64
            scope:
               link
      up:
         True
   eth1:
      ----------
      hwaddr:
         08:00:27:a7:31:8e
      inet:
         |_
            ----------
            address:
               192.168.50.12
            broadcast:
               192.168.50.255
            label:
               eth1
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fea7:318e
            prefixlen:
               64
            scope:
               link
      up:
         True
   lo:
      ----------
      hwaddr:
         00:00:00:00:00:00
      inet:
         |_
            ----------
            address:
               127.0.0.1
            broadcast:
               None
            label:
               lo
            netmask:
               255.0.0.0
      inet6:
         |_
            ----------
            address:
               ::1
            prefixlen:
               128
            scope:
               host
      up:
         True

Modul Eksekusi sys.doc

Fungsi garam dapat dikirim ke sys.docmodul eksekusi. Ini digunakan untuk mendapatkan detail tentang modul apa pun langsung dari baris perintah. Fungsi Salt mendokumentasikan dirinya sendiri. Semua dokumentasi fungsi bisa diambil dari minion melalui fungsi sys.doc (), yang didefinisikan di bawah ini.

salt '*' sys.doc

Argumen untuk Panggilan Fungsi

Argumen digunakan untuk menyediakan data tambahan untuk pemanggilan fungsi. Contoh argumen sederhana diberikan di bawah ini.

salt '*' sys.doc pkg.install

Di sini, argumennya pkg.install adalah modul untuk menginstal paket tertentu.

Fungsi Python

Argumen adalah parameter yang dipisahkan spasi untuk fungsi tersebut. Ini memungkinkan kode python untuk diteruskan sebagai argumen seperti yang diberikan di bawah ini.

salt '*' cmd.exec_code python 'import sys;print sys.version'

Ini akan menghasilkan yang berikut ini output -

minion2:
   2.7.6 (default, Oct 26 2016, 20:30:19) 
   [GCC 4.8.4]
minion1:
   2.7.6 (default, Oct 26 2016, 20:30:19) 
   [GCC 4.8.4]

Demikian pula, Anda dapat menggunakan kata kunci opsional dan YAML format juga.