Ansible

Как использовать модуль регистрации Ansible

Как использовать модуль регистрации Ansible
В Ansible вы можете запускать любую команду оболочки на своих хостах Ansible, хостах, которые вы будете настраивать с помощью Ansible. Эти команды оболочки могут иметь выходные данные. По умолчанию вывод игнорируется. Если вы хотите сохранить вывод в переменной и использовать его позже, вы можете использовать Ansible регистр модуль. Эта статья покажет вам, как использовать Ansible регистр модуль для хранения вывода команды в переменной и доступа к нему позже в вашей книге воспроизведения Ansible.

Предпосылки

Если вы хотите опробовать примеры из этой статьи, вы должны:

1) Установите Ansible на свой компьютер.

2) Настройте хост Ubuntu для автоматизации Ansible.

На LinuxHint есть много статей, посвященных установке Ansible и настройке хостов для автоматизации Ansible. При необходимости вы можете ознакомиться с этими статьями.

Настройка каталога проекта

Прежде чем двигаться дальше, создайте новый каталог проекта Ansible, чтобы все было немного организовано.

Чтобы создать каталог проекта регистрация-демо / и все необходимые подкаталоги (в вашем текущем рабочем каталоге), выполните следующую команду:

$ mkdir -pv register-demo / playbooks

После создания каталога проекта перейдите в каталог проекта, как показано ниже:

$ cd register-demo /

Создать хозяева файл инвентаризации, как показано ниже:

$ nano хосты

Добавьте IP-адрес или DNS-имя вашего хоста Ubuntu в файл инвентаризации (по одному хосту в строке), как показано на скриншоте ниже.

Здесь я добавил свой Ubuntu 20.04 Хост LTS vm3.нодекит.ком в убунту20 группа.

Как только вы закончите, сохраните файл, нажав + Икс, с последующим Y а также .

Создайте файл конфигурации Ansible анзибль.cfg в каталоге вашего проекта следующим образом:

$ нано доступный.cfg

Затем введите следующие строки в анзибль.cfg файл:

[по умолчанию]
inventory = hosts
host_key_checking = Ложь

Как только вы закончите, сохраните анзибль.cfg файл, нажав + Икс, с последующим Y а также .

Теперь попробуйте проверить связь с вашим хостом Ubuntu следующим образом:

$ ansible ubuntu20 -u ansible -m пинг

Как видите, мой Ubuntu 20.04 хост vm3.нодекит.ком доступен.

Пример 1: Основы

В этом примере я покажу вам некоторые основы Ansible регистр модуль. Я буду использовать Ansible для генерации случайного пароля в моем Ubuntu 20.04 хост, использующий pwgen команда, сохраните пароль в переменной, используя регистр модуль и распечатайте пароль на экране.

Сначала создайте новую пьесу generate_pass.ямл в пьесы / каталог, а именно:

$ nano playbooks / generate_pass.ямл

Введите следующие строки в generate_pass.ямл файл:

- хосты: ubuntu20
пользователь: ansible
становятся истинными
задачи:
- name: убедитесь, что pwgen установлен
apt:
имя: pwgen
состояние: настоящее
update_cache: Истина
- имя: Сгенерировать пароль
оболочка: pwgen -N 1 -s 30
зарегистрироваться: mypass
- имя: распечатать сгенерированный пароль
отлаживать:
msg: "Пароль: mypass"

Когда вы закончите, нажмите + Икс, с последующим Y а также , чтобы спасти generate_pass.ямл файл.

Следующая строка сообщает Ansible запустить playbook generate_pass.ямл на каждом хосте в убунту20 группа. В моем случае playbook будет запущен на хосте vm3.нодекит.ком.

В этом сборнике я определю три задачи.

Первая задача - убедиться, что pwgen пакет установлен.

Вторая задача сгенерирует случайный 30-значный пароль с помощью pwgen команда. Я буду использовать регистр модуль для хранения сгенерированного пароля в mypass Переменная.

Третья задача распечатает mypass переменная с помощью Ansible отлаживать модуль.

Запустите playbook generate_pass.ямл используя следующую команду:

Плейбуки $ ansible-playbook / generate_pass.ямл

Как видите, playbook успешно запустился. Также был сгенерирован пароль.

Но почему переменная mypass распечатать так много предметов?

Ну, переменная mypass это объект, который содержит некоторые важные свойства.

Важнейшие свойства каждого из регистр переменные следующие:

cmd - Команда, выполнявшаяся для генерации вывода.

стандартный вывод - Вывод команды.

stderr - Вывод ошибки команды.

Начало - Дата и время начала выполнения команды.

конец - Дата и время, когда команда завершила выполнение.

дельта - Время, затраченное на выполнение команды. В этом разница между конец и Начало характеристики.

stdout_lines - Массив, содержащий каждую строку вывода команды. Такой же как стандартный вывод, но стандартный вывод разделяет строки, используя символы новой строки (\ n) вместо массивов.

stderr_lines -  Массив, содержащий каждую строку вывода ошибок команды. Такой же как stderr, но stderr разделяет строки, используя символы новой строки (\ n) вместо массивов.

Если вы просто хотите распечатать / получить доступ к строке пароля (что очень вероятно), вы можете распечатать / получить доступ к стандартный вывод собственность mypass переменная в вашей playbook, как отмечено на скриншоте ниже.

$ nano playbooks / generate_pass.ямл

Как только вы закончите, запустите playbook generate_pass.ямл очередной раз. Будет напечатана только строка пароля, как вы можете видеть на скриншоте ниже.

Это охватывает основы Ansible регистр модуль.

Пример 2: Содержимое каталога магазина

В этом примере я покажу вам, как сохранить содержимое каталога в переменной с помощью Ansible регистр модуль, а также как их перебирать.

Сначала создайте новую пьесу get_dir_contents.ямл в пьесы / каталог.

$ nano playbooks / get_dir_contents.ямл

Затем введите следующие строки в get_dir_contents.ямл playbook:

- хосты: ubuntu20
пользователь: ansible
становятся истинными
задачи:
- name: список всех файлов и каталогов в / home / ansible
оболочка: ls / home / ansible
регистр: dir_contents
- name: печатать содержимое каталога с помощью циклов
отлаживать:
msg: "item"
цикл: "dir_contents.stdout_lines "

Когда вы закончите, нажмите + Икс, с последующим Y а также , чтобы спасти generate_pass.ямл файл.

В этом сборнике я определю две задачи.

Первая задача перечисляет все содержимое / home / ansible каталог и хранит их в dir_contents Переменная.

Вторая задача печатает dir_contents Переменная.

Запустить get_dir_contents.ямл playbook, как показано ниже.

плейбуки $ ansible-playbook / get_dir_contents.ямл

Как видите, stdout_lines свойство хранит содержимое каталога в виде массива. В стандартный вывод свойство также хранится в содержимом каталога. Эти свойства разделяются символами новой строки (\ n). В этом примере stdout_lines с недвижимостью легко работать.

Затем переберите содержимое каталога, используя цикл.

Для этого откройте get_dir_contents.ямл playbook и измените вторую задачу, как отмечено на скриншоте ниже.

$ nano playbooks / get_dir_contents.ямл

Здесь я повторяю dir_contents.stdout_lines массив с помощью цикла и печать элементов массива с помощью Ansible отлаживать модуль. В этой задаче пункт переменная - это переменная цикла, используемая для перебора элементов массива.

Запустить get_dir_contents.ямл playbook, как показано ниже:

плейбуки $ ansible-playbook / get_dir_contents.ямл

Как видите, содержимое / главная / анзибль каталог распечатываются на экране.

Пример 3: резервное копирование каталога

В этом примере я покажу вам, как создать резервную копию каталога с помощью Ansible регистр, файл, а также копировать модули.

Сначала создайте новую пьесу backup_home_dir.ямл в пьесы / каталог, а именно:

$ nano playbooks / backup_home_dir.ямл

Затем введите следующие строки в backup_home_dir.ямл файл.

- хосты: ubuntu20
пользователь: ansible
становятся истинными
задачи:
- name: получить домашний каталог / home / доступное содержимое
оболочка: ls / home / ansible
регистр: dir_contents
- name: Создать новый каталог / tmp / ansible
файл:
путь: / tmp / ansible
состояние: каталог
- имя: Резервное копирование домашнего каталога / home / ansible в / tmp / ansible
копия:
src: / home / ansible / элемент
назначение: / tmp / ansible /
remote_src: Истина
цикл: "dir_contents.stdout_lines

Когда вы закончите, нажмите + Икс, с последующим Y а также , чтобы спасти backup_home_dir.ямл файл.

В этом сборнике я определю три задачи.

Первая задача хранит содержимое / главная / анзибль каталог (каталог, для которого я буду создавать резервную копию) в dir_contents переменная с помощью Ansible регистр модуль.

Вторая задача создает новый каталог / tmp / ansible используя Ansible файл модуль. Это каталог, в котором будет храниться резервная копия.

Третья задача проходит через dir_contents.stdout_lines массив и использует Ansible копировать модуль для копирования каждого каталога в / tmp / ansible / каталог.

Запустить backup_home_dir.ямл playbook, как показано ниже:

плейбуки $ ansible-playbook / backup_home_dir.ямл

Как видите, на моем Ubuntu 20.04 Хост LTS, резервное копирование прошло успешно.

Пример 4: Выполнить или пропустить задачи

В этом примере я покажу вам, как запускать или пропускать задачи в зависимости от зарегистрированной вами переменной, используя регистр модуль.

Сначала создайте новую пьесу register_conditions.ямл в пьесы / каталог следующим образом:

$ nano playbooks / register_conditions.ямл

Затем введите следующие строки в register_conditions.ямл файл.

- хосты: ubuntu20
пользователь: ansible
становятся истинными
задачи:
- имя: Список содержимого каталога
оболочка: ls / home / ansible / test3
регистр: dir_contents
- имя: Проверить, пуста ли директория
отлаживать:
msg: "Каталог пуст."
когда: dir_contents.stdout == ""

Когда вы закончите, нажмите + Икс, с последующим Y а также , чтобы спасти register_conditions.ямл файл.

В этом сборнике я определил две задачи.

Первая задача хранит содержимое / главная / анзибль / test3 каталог в dir_contents Переменная.

Вторая задача проверяет, если dir_contents.стандартный вывод пустая строка, или каталог / главная / анзибль / test3 пустой. Если каталог пуст, сообщение Каталог пуст напечатает.

Запустить register_conditions.ямл playbook, как показано ниже:

Плейбуки $ ansible-playbook / register_conditions.ямл

Как видите, playbook успешно запустился.

Поскольку каталог / главная / анзибль / test3 пусто, playbook напечатал сообщение Каталог пуст.

Затем создайте новый файл в / главная / анзибль / test3 каталог.

$ touch test3 / myfile

Поскольку / главная / анзибль / test3 каталог уже не пустой, задача Проверьте, пуст ли каталог пропускается, как вы можете видеть на скриншоте ниже.

Плейбуки $ ansible-playbook / register_conditions.ямл

Заключение

Ансибл регистр модуль очень полезен для автоматизации серверов. Эта статья познакомила вас с основами регистр модуль, включая примеры использования Ansible регистр модуль для хранения и резервного копирования каталогов, а также для выполнения задач каталога.

Shadow of the Tomb Raider для Linux Учебное пособие
Shadow of the Tomb Raider - двенадцатое дополнение к серии Tomb Raider - франшизе приключенческой игры, созданной Eidos Montreal. Игра была очень хоро...
Как увеличить FPS в Linux?
FPS означает Кадров в секунду. Задача FPS - измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных ...
Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...