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