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.