В качестве системного администратора собирает информацию о том, какую версию программного обеспечения установлена или какая настройка в определенном файле на десятки или сотнях систем является довольно распространенной задачей. Сама задача довольно распространена, но способ, которым это достигнуто, может быть широко отличается даже от скрипта к скрипту в вашей среде.
Кукольный болт обеспечивает отличные леса или рамки, позволяющие сосредоточиться на получении ценной информации из систем, а не логистики того, как найти и подключаться к ним.
В этом посте блога мы будем создавать задачу кукольного болта, чтобы проверить, установлен ли Docker и работает на нескольких машинах.
Инициализировать новый болт проекта
Убедитесь, что последняя версия кукольного болта установлена перед началом работы.
Кукольный болт использует Проект Справочники в качестве пунктов запуска для беговых болтов. В этом посте мы создадим болт проекта под названием SystemInfo Это будет содержать наши задачи для сбор информации о системе. Следующая команда создаст каталог с именем SystemInfo в текущем рабочем каталоге.
bolt project init systeminfo
Теперь должен быть Болт.иамл Файл в системная информация каталог. В SystemInfo Каталог проекта Создать файл с именем Bolt-Project.yaml со следующим контентом.
# bolt-project.yaml name: systeminfo
Создайте задачу SystemInfo
С воздействием проекта болта мы теперь готовы создавать наши задачи болтов для получения информации из наших систем.
Создать каталог задач
Создать Задачи каталог в каталоге проекта.
mkdir tasks
Изменить каталог на вновь созданные каталога задач.
cd tasks
Теперь мы готовы создать наш скрипт, который проверяет систему для Docker и посмотреть, работает ли она. Создать файл с именем CheckDocker.SH В текущем каталоге и добавьте следующий контент.
#!/bin/bash output=$(docker ps 2>&1) retVal=$? if [$retVal -ne 0]; then echo "Docker is not present or running" else echo "Docker is present and running" fi
Теперь, когда у нас есть сценарий Shell для проверки установки Docker, нам просто нужно создать файл метаданных для нашей задачи, который предоставляет информацию о задаче. Имя файла задач должно быть отражено сценарию оболочки, так что он будет иметь имя checkdocker.json. .
{ "description": "Check if docker is install and running", "input_method": "stdin", "parameters": {} }
Теперь мы можем подтвердить, что болт распознает нашу новую задачу, запустив следующую команду, которая перечислены зарегистрированные задачи болтов.
bolt task show
Если задача регистрирует правильно, выход должен включать SystemInfo:: Checkdocker Вход.
facts Gather system facts package Manage and inspect the state of packages pkcs7::secret_createkeys Create a key pair pkcs7::secret_decrypt Encrypt sensitive data with pkcs7 pkcs7::secret_encrypt Encrypt sensitive data with pkcs7 puppet_agent::install Install the Puppet agent package puppet_agent::version Get the version of the Puppet agent package installed. Returns nothing if none present. puppet_conf Inspect puppet agent configuration settings reboot Reboots a machine reboot::last_boot_time Gets the last boot time of a Linux or Windows system service Manage and inspect the state of services **systeminfo::checkdocker Check if docker is install and running** terraform::apply Apply an HCL manifest terraform::destroy Destroy resources managed with Terraform terraform::initialize Initialize a Terraform project directory terraform::output JSON representation of Terraform outputs
Запустите SystemInfo:: CheckDocker Task
С зарегистрированным заданием мы готовы запускать задачу, запустив следующую команду. В этом примере мы будем запустить задачу против нескольких узлов в нашей среде.
bolt task run systeminfo::checkdocker --no-host-key-check --user root --targets 10.0.0.25,10.0.0.252,10.0.0.224,10.0.0.80
Если задача успешно запустилась, она должна была сгенерировать выходные данные, аналогичные показанному ниже.
bolt task run systeminfo::checkdocker --user root --targets 10.0.0.25,10.0.0.252,10.0.0.224,10.0.0.80 Started on 10.0.0.224... Started on 10.0.0.252... Started on 10.0.0.25... Started on 10.0.0.80... Finished on 10.0.0.25: Docker is present and running Finished on 10.0.0.252: Docker is not present or running Finished on 10.0.0.80: Docker is not present or running Finished on 10.0.0.224: Docker is not present or running Successful on 4 targets: 10.0.0.25,10.0.0.252,10.0.0.224,10.0.0.80 Ran on 4 targets in 4.62 sec
Выход из задачи может быть сделан гораздо великолепным, но даже через несколько минут мы смогли создать задачу болтов, что запрашивает наши системы и давайте знать, если докер работает в этой системе. Это довольно простой пример того, что можно сделать с помощью кукольного болта, но возможности бесконечны для сбора ценной системной информации.
Оригинал: «https://dev.to/puppet/collecting-system-information-using-puppet-bolt-36ap»