<Попередній | зміст | Наступна>
10.2.3. Соляні стани та інші особливості
Хоча віддалене виконання є важливим будівельним блоком, це лише невелика частка того, що може зробити SaltStack.
Налаштовуючи нову машину, ви часто виконуєте безліч команд і тестів, щоб визначити деталі системи перед встановленням. Ці операції можна формалізувати у повторно використовувані шаблони конфігурації, які називаються файли стану. Операції, описані у файлах стану, можна виконувати за допомогою одного стан.застосувати команда солі.
Щоб заощадити час, ви можете покладатися на багато готових до використання файлів стану, які були створені спільнотою і які розповсюджуються в «Формулах солі»:
➨ https://docs.saltstack.com/en/latest/topics/development/conventions/formulas. html
Є багато інших функцій, які можна комбінувати:
• Планове виконання дій
• Визначення дій у відповідь на події, ініційовані міньйонами
• Збір даних з міньйонів
• Організація послідовності операцій між кількома прислужниками
• Застосування станів через SSH без встановлення служби salt-minion
• Надання систем на хмарних інфраструктурах та передача їх під управління
• І більше
SaltStack досить великий, і ми не можемо охопити всі функції тут. Насправді є книги, повністю присвячені SaltStack, і онлайн-документація також дуже обширна. Перегляньте його, якщо ви хочете дізнатися більше про його функції:
➨ https://docs.saltstack.com/en/latest/
Якщо ви керуєте значною кількістю машин, вам буде корисно дізнатися більше про SaltStack, оскільки ви можете заощадити значну кількість часу під час розгортання нових машин і зможете підтримувати узгоджену конфігурацію у вашій мережі.
Щоб надати вам уявлення про те, як виглядає робота з файлами стану, ми розглянемо простий приклад: як увімкнути репозиторій APT та встановити пакет, який ви створюєте в розділі 10.3.3, «Створення репозиторію пакетів для APT». [стор. 269] і розділ 10.3.2, «Створення пакетів конфігурації” [стор. 263]. Ви також зареєструєте ключ SSH в обліковому записі root, щоб ви могли дистанційно входити в систему у разі проблем.
За замовчуванням файли стану зберігаються в /srv/сіль на майстра; це структуровані файли YAML з a .sls розширення. Як і для виконання команд, застосування стану залежить від багатьох модулів стану:
➨ https://docs.saltstack.com/en/latest/topics/tutorials/starting_states.html
➨ https://docs.saltstack.com/en/latest/ref/states/all/
вашу /srv/salt/offsec.sls файл викличе три з цих модулів:
offsec_repository: pkgrepo.managed:
- назва: deb http://pkgrepo.offsec.com offsec-internal main
- файл: /etc/apt/sources.list.d/offsec.list
- URL-адреса ключа: salt://offsec-apt-key.asc
- require_in:
- pkg: offsec-за замовчуванням
offsec-defaults: pkg.installed
ssh_key_for_root: ssh_auth.present:
- користувач: root
- назва: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
offsec_repository: pkgrepo.managed:
- назва: deb http://pkgrepo.offsec.com offsec-internal main
- файл: /etc/apt/sources.list.d/offsec.list
- URL-адреса ключа: salt://offsec-apt-key.asc
- require_in:
- pkg: offsec-за замовчуванням
offsec-defaults: pkg.installed
ssh_key_for_root: ssh_auth.present:
- користувач: root
- назва: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali
Команда offsec_repository держава спирається на pkgrepo модуль стану. У прикладі використовується вдалося
функція в цьому модулі стану для реєстрації сховища пакетів. З key_url атрибут, ти
нехай сол знає, що ключ GPG (захищений ASCII), необхідний для перевірки підпису репозиторію, можна отримати з /srv/salt/offsec-apt-key.asc на сільмайстера. The require_in атрибут гарантує, що цей стан буде оброблено до offsec-за замовчуванням, оскільки для останнього потрібно правильно налаштувати репозиторій для встановлення пакунка.
Команда offsec-за замовчуванням state встановлює пакет з такою ж назвою. Це показує, що ім’я ключа часто є важливим значенням для станів, хоча його завжди можна замінити за допомогою a ім'я атрибут (як зроблено для колишньої держави). Для таких простих випадків, як цей, це зрозуміло й стисло.
Останній стан (ssh_key_for_root) додає ключ SSH, наведений у файлі ім'я приписувати /root/.ssh/ авторизовані_ключі (цільовий користувач встановлюється в користувач атрибут). Зверніть увагу, що ми скоротили ключ для зручності читання тут, але ви повинні помістити повний ключ в атрибут name.
Далі цей файл стану можна застосувати до даного фаворита:
сервер № сіль kali-подряпина стан.застосувати офсек
kali-scratch:
----------
Ідентифікатор: offsec_repository Функція: pkgrepo.managed
Ім'я: deb http://pkgrepo.offsec.com offsec-internal main Результат: вірно
Коментар: налаштований репо пакету 'deb http://pkgrepo.offsec.com offsec-internal
➥ головний'
Початок: 06:00:15.767794
Тривалість: 4707.35 мс Зміни:
----------
репо:
deb http://pkgrepo.offsec.com offsec-internal main
----------
ID: offsec-defaults Функція: pkg.installed
Результат: правда
Коментар: Встановлено/оновлено такі пакунки: offsec-defaults Початок: 06:00:21.325184
Тривалість: 19246.041 мс Зміни:
----------
offsec-за замовчуванням:
----------
новий:
1.0
старий:
----------
Ідентифікатор: ssh_key_for_root Функція: ssh_auth.present
сервер № сіль kali-подряпина стан.застосувати офсек
kali-scratch:
----------
Ідентифікатор: offsec_repository Функція: pkgrepo.managed
Ім'я: deb http://pkgrepo.offsec.com offsec-internal main Результат: вірно
Коментар: налаштований репо пакету 'deb http://pkgrepo.offsec.com offsec-internal
➥ головний'
Початок: 06:00:15.767794
Тривалість: 4707.35 мс Зміни:
----------
репо:
deb http://pkgrepo.offsec.com offsec-internal main
----------
ID: offsec-defaults Функція: pkg.installed
Результат: правда
Коментар: Встановлено/оновлено такі пакунки: offsec-defaults Початок: 06:00:21.325184
Тривалість: 19246.041 мс Зміни:
----------
offsec-за замовчуванням:
----------
новий:
1.0
старий:
----------
Ідентифікатор: ssh_key_for_root Функція: ssh_auth.present
Ім'я: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Результат: правда
Коментар: Додано авторизований ключ хосту AAAAB3NzaC1yc2...89C4N для користувача root. Початок: 06:00:40.582539
Тривалість: 62.103 мс Зміни:
---------- AAAAB3NzaC1yc2...89C4N:
Нові
Резюме для kali-scratch
------------
Успішно: 3 (змінено=3)
Помилка: 0
------------
Загальна кількість станів: 3
Загальний час роботи: 24.015 с
Ім'я: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Результат: правда
Коментар: Додано авторизований ключ хосту AAAAB3NzaC1yc2...89C4N для користувача root. Початок: 06:00:40.582539
Тривалість: 62.103 мс Зміни:
---------- AAAAB3NzaC1yc2...89C4N:
Нові
Резюме для kali-scratch
------------
Успішно: 3 (змінено=3)
Помилка: 0
------------
Загальна кількість станів: 3
Загальний час роботи: 24.015 с
Його також можна назавжди пов’язати з міньйоном, записавши його в файлі /srv/salt/top.sls
файл, який використовується стан.високий стан команда, щоб застосувати всі відповідні стани за один прохід:
сервер № кішка /srv/salt/top.sls
база:
kali-scratch:
- офсек
сервер № сіль kali-scratch state.highstate
kali-scratch:
----------
Ідентифікатор: offsec_repository Функція: pkgrepo.managed
Ім'я: deb http://pkgrepo.offsec.com offsec-internal main Результат: вірно
Коментар: Репо пакету "deb http://pkgrepo.offsec.com offsec-internal main" вже
➥ налаштовано Розпочато: 06:06:20.650053
Тривалість: 62.805 мс Зміни:
----------
ID: offsec-defaults Функція: pkg.installed
Результат: правда
Коментар: Пакет offsec-defaults вже встановлено. Розпочато: 06:06:21.436193
Тривалість: 385.092 мс Зміни:
----------
Ідентифікатор: ssh_key_for_root
сервер № кішка /srv/salt/top.sls
база:
kali-scratch:
- офсек
сервер № сіль kali-scratch state.highstate
kali-scratch:
----------
Ідентифікатор: offsec_repository Функція: pkgrepo.managed
Ім'я: deb http://pkgrepo.offsec.com offsec-internal main Результат: вірно
Коментар: Репо пакету "deb http://pkgrepo.offsec.com offsec-internal main" вже
➥ налаштовано Розпочато: 06:06:20.650053
Тривалість: 62.805 мс Зміни:
----------
ID: offsec-defaults Функція: pkg.installed
Результат: правда
Коментар: Пакет offsec-defaults вже встановлено. Розпочато: 06:06:21.436193
Тривалість: 385.092 мс Зміни:
----------
Ідентифікатор: ssh_key_for_root
Функція: ssh_auth.present
Ім'я: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Результат: правда
Коментар: авторизований ключ хосту AAAAB3NzaC1yc2...89C4N вже наявний для
➥ кореневої користувач
Початок: 06:06:21.821811
Тривалість: 1.936 мс Зміни:
Резюме для kali-scratch
------------
Вдалось: 3
Помилка: 0
------------
Загальна кількість станів: 3
Загальний час виконання: 449.833 мс
Функція: ssh_auth.present
Ім'я: ssh-rsa AAAAB3NzaC1yc2...89C4N rhertzog@kali Результат: правда
Коментар: авторизований ключ хосту AAAAB3NzaC1yc2...89C4N вже наявний для
➥ кореневої користувач
Початок: 06:06:21.821811
Тривалість: 1.936 мс Зміни:
Резюме для kali-scratch
------------
Вдалось: 3
Помилка: 0
------------
Загальна кількість станів: 3
Загальний час виконання: 449.833 мс