SaltStack - удаленное выполнение
Одна из основных концепций Salt - удаленное выполнение. Salt может выполнять команды в тысячах систем за считанные секунды. Salt использует свою собственную команду для выполнения этой функции. Давайте теперь разберемся с различными командами Salt для удаленного выполнения в этой главе.
Соль Командование
Команда Salt позволяет мастеру Salt связываться с одним или несколькими Salt minions. Базовый синтаксис следующий:
salt '<target>' <module.function> [arguments]
Приведенный выше синтаксис команды состоит из следующих трех основных компонентов.
target - Он определяет, какие системы применены командой.
module.function- Это команда. Команды состоят из модуля и функции.
arguments - Дополнительные данные, необходимые для вызова функции.
Давайте подробно разберемся с каждым из компонентов.
Что такое целевой компонент?
Target - это компонент, который позволяет фильтровать миньонов (управляемую систему) для запуска функции. Ниже описана простая команда, использующая целевой компонент.
salt '*' test.ping
Это приведет к следующему output -
minion2:
True
minion1:
True
Здесь цель ‘*’представляет все управляемые системы. 'test'вот модуль и pingэто функция. Это используется для проверки службы ping в удаленной системе. Мы узнаем о различных модулях и их функциях в следующих главах.
Цели, использующие ID (миньон)
Вы можете отправить команду определенному миньону, используя его idв мишени. Вместо того, чтобы использовать'*', вы можете заменить его, используя minion id. Это определено ниже.
salt 'minion1’ test.ping
Это приведет к следующему output -
minion1:
True
Цели с использованием регулярного выражения
Цели можно фильтровать по определенному регулярному выражению. Это определено ниже.
salt -E 'minion[0-9]' test.ping
Это приведет к следующему output -
minion2:
True
minion1:
True
Цели с использованием списка
Цели могут быть явно указаны в списке. Это определено в следующем блоке кода.
salt -L 'minion1,minion2' test.ping
Это приведет к следующему output -
minion2:
True
minion1:
True
Цели по состоянию
Цели можно объединить в одну команду, как показано в блоке кода ниже.
salt -C 'G@os:Ubuntu and minion* or [email protected].*' test.ping
Это приведет к следующему output -
minion1:
True
minion2:
True
Модуль и функции (module.function)
Salt может выполнять команды оболочки; обновлять пакеты и распространять файлы и т. д. во всех управляемых системах одновременно. Salt выполняет эти операции с помощью модулей. В Salt есть специальные модули для всех доступных функций. Давайте разберемся с различными модулями Salt на простом примере из этой главы.
Команда оболочки
Salt выполняет команды оболочки удаленно в нескольких системах, используя cmd.runкоманда. Вcmd основной модуль и run одна из функций, доступных в cmdмодуль. Вrun Функция позволяет выполнять любую команду оболочки в удаленной системе, как показано в блоке кода ниже.
salt '*' cmd.run 'ls -l /etc'
Это приведет к следующему 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
……………
……………
Показать использование диска
Соль предоставляет специальный модуль, diskчтобы получить полную информацию о диске управляемой системы. Вdiskmodule имеет usage функция для запроса подробностей.
salt '*' disk.usage
Это приведет к следующему 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
Сетевые интерфейсы
Salt предоставляет отдельный модуль, сеть и функцию, интерфейсы внутри модуля для запроса информации сетевого интерфейса об управляемых системах.
salt '*' network.interfaces
Это приведет к следующему 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
sys.doc Модуль выполнения
Солевые функции могут быть отправлены в sys.docисполнительный модуль. Это используется для получения подробной информации о любом модуле непосредственно из командной строки. Функции Salt самодокументируются. Вся документация по функциям может быть получена от миньонов с помощью функции sys.doc (), которая определена ниже.
salt '*' sys.doc
Аргументы для вызова функции
Аргументы используются для предоставления дополнительных данных для вызова функции. Ниже приводится простой пример аргумента.
salt '*' sys.doc pkg.install
Здесь аргумент pkg.install это модуль для установки определенных пакетов.
Функция Python
Аргументы - это параметры функции, разделенные пробелами. Это позволяет передавать код Python в качестве аргументов, как указано ниже.
salt '*' cmd.exec_code python 'import sys;print sys.version'
Это приведет к следующему 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]
Точно так же вы можете использовать дополнительные ключевые слова и YAML формат тоже.