Отговорни

Как да използвам модула Ansible Register

Как да използвам модула Ansible Register
В Ansible можете да изпълнявате всяка команда за черупки на вашите Ansible хостове, хостовете, които ще конфигурирате с Ansible. Тези команди на черупки могат да имат изходи. По подразбиране изходът се игнорира. Ако искате да съхраните изхода в променлива и да я използвате по-късно, тогава можете да използвате Ansible регистрирам модул. Тази статия ще ви покаже как да използвате Ansible регистрирам модул за съхраняване на изхода на командата в променлива и достъп до нея по-късно във вашата книга за игра Ansible.

Предпоставки

Ако искате да изпробвате примерите в тази статия, трябва:

1) Инсталирайте Ansible на вашия компютър.

2) Настройте Ubuntu хост, конфигуриран за Ansible автоматизация.

В LinuxHint има много статии, посветени на инсталирането на Ansible и конфигурирането на хостове за автоматизация на Ansible. Можете да проверите тези статии, ако е необходимо.

Създаване на директория на проекти

Преди да продължите напред, създайте нова директория на проекта Ansible, само за да поддържате нещата малко организирани.

За да създадете директория на проекта регистър-демо / и всички необходими поддиректории (в текущата работна директория), изпълнете следната команда:

$ mkdir -pv register-demo / playbooks

След като директорията на проекта е създадена, отидете до директорията на проекта, както следва:

$ cd регистър-демо /

Създавам домакини инвентарен файл, както следва:

$ nano домакини

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

Тук добавих моя Ubuntu 20.04 LTS домакин vm3.нодеките.com в ubuntu20 група.

След като приключите, запазете файла, като натиснете + х, следван от Y и .

Създайте конфигурационен файл Ansible ансибъл.cfg в директорията на вашия проект, както следва:

$ nano ansible.cfg

След това въведете следните редове в ансибъл.cfg файл:

[по подразбиране]
инвентар = хостове
host_key_checking = Невярно

След като приключите, запазете ансибъл.cfg файл, като натиснете + х, следван от Y и .

Сега опитайте да пингнете вашия хост на Ubuntu, както следва:

$ ansible ubuntu20 -u ansible -m ping

Както можете да видите, моят Ubuntu 20.04 домакин vm3.нодеките.com е достъпна.

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

В този пример ще ви покажа някои от основите на Ansible регистрирам модул. Ще използвам Ansible, за да генерирам произволна парола в моя Ubuntu 20.04 домакин с помощта на pwgen команда, съхранявайте паролата в променлива с помощта на регистрирам модул и отпечатайте паролата на екрана.

Първо създайте новата книга за игри генерира_пропуск.ямъл в книги за игри / директория, както следва:

$ nano playbooks / generiraj_pass.ямъл

Въведете следните редове в генерира_пропуск.ямъл файл:

- хостове: ubuntu20
потребител: ansible
стана: Вярно
задачи:
- име: Уверете се, че pwgen е инсталиран
подходящ:
име: pwgen
състояние: присъства
update_cache: Вярно
- name: Генериране на парола
черупка: pwgen -N 1 -s 30
регистър: mypass
- name: Отпечатайте генерираната парола
отстраняване на грешки:
msg: "Паролата е mypass"

След като приключите, натиснете + х, следван от Y и , за да запазите генерира_пропуск.ямъл файл.

Следващият ред казва на Ansible да стартира книгата за игри генерира_пропуск.ямъл на всеки хост в ubuntu20 група. В моя случай книгата за игри ще се изпълнява на хоста vm3.нодеките.com.

В тази книга за игри ще дефинирам три задачи.

Първата задача ще гарантира, че pwgen пакетът е инсталиран.

Втората задача ще генерира случайна парола от 30 знака, използвайки pwgen команда. Ще използвам регистрирам модул за съхраняване на генерираната парола в mypass променлива.

Третата задача ще отпечата mypass променлива с помощта на Ansible отстраняване на грешки модул.

Стартирайте книгата за игри генерира_пропуск.ямъл използвайки следната команда:

$ ansible-playbook playbooks / generated_pass.ямъл

Както можете да видите, книгата за игри работи успешно. Генерирана е и парола.

Но защо променливата mypass отпечатайте толкова много елементи?

Е, променливата mypass е обект, който съдържа някои важни свойства.

Най-важните свойства на всеки от регистрирам променливите са както следва:

cmd - Командата, която се изпълнява за генериране на изхода.

stdout - Изходът на командата.

stderr - Изходът за грешка на командата.

старт - Датата и часът, когато командата започва да се изпълнява.

край - Датата и часът, когато командата завършва с изпълнението.

делта - Времето, необходимо за стартиране на командата. Това е разликата между край и старт Имоти.

stdout_lines - Масив, съдържащ всеки изходен ред на командата. Същото като stdout, но stdout разделя редовете, използвайки символи за нов ред (\ n) вместо масиви.

stderr_lines -  Масив, съдържащ всеки ред за извеждане на грешка на командата. Същото като stderr, но stderr разделя редовете, използвайки символи за нови редове (\ n) вместо масиви.

Ако просто искате да отпечатате / да получите достъп до низа с парола (което е много вероятно), можете да отпечатате / да получите достъп до stdout собственост на mypass променлива във вашата книга за игри, както е отбелязано на екранната снимка по-долу.

$ nano playbooks / generiraj_pass.ямъл

След като приключите, стартирайте книгата с игри генерира_пропуск.ямъл отново. Ще бъде отпечатан само низът с парола, както можете да видите на екранната снимка по-долу.

Това обхваща основите на Ansible регистрирам модул.

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

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

Първо създайте новата книга за игри get_dir_contents.ямъл в книги за игри / директория.

$ nano playbooks / get_dir_contents.ямъл

След това въведете следните редове в get_dir_contents.ямъл книга за игри:

- хостове: ubuntu20
потребител: ansible
стана: Вярно
задачи:
- име: Избройте всички файлове и директории в / home / ansible
черупка: ls / home / ansible
регистър: dir_contents
- name: Отпечатайте съдържанието на директорията с помощта на цикли
отстраняване на грешки:
съобщение: "item"
цикъл: "dir_contents.stdout_lines "

След като приключите, натиснете + х, следван от Y и , за да запазите генерира_пропуск.ямъл файл.

В тази книга за игри ще дефинирам две задачи.

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

Втората задача отпечатва dir_contents променлива.

Стартирайте get_dir_contents.ямъл playbook, както следва.

$ ansible-playbook playbooks / get_dir_contents.ямъл

Както можете да видите, stdout_lines свойството съхранява съдържанието на директорията като масив. The stdout свойството също се съхранява в съдържанието на директорията. Тези свойства са разделени от символи за нов ред (\ n). В този пример, stdout_lines с имота се работи лесно.

След това прегледайте съдържанието на директорията с помощта на цикъл.

За да направите това, отворете get_dir_contents.ямъл playbook и променете втората задача, както е отбелязано на екранната снимка по-долу.

$ nano playbooks / get_dir_contents.ямъл

Ето, преглеждам dir_contents.stdout_lines масив с помощта на цикъл и отпечатване на елементите на масива с помощта на Ansible отстраняване на грешки модул. В тази задача, вещ променливата е циклична променлива, използвана за итерация над елементите на масива.

Стартирайте get_dir_contents.ямъл playbook, както следва:

$ ansible-playbook playbooks / get_dir_contents.ямъл

Както можете да видите, съдържанието на / начало / анзибъл директория се отпечатват на екрана.

Пример 3: Архивиране на директория

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

Първо създайте новата книга за игри backup_home_dir.ямъл в книги за игри / директория, както следва:

$ nano playbooks / backup_home_dir.ямъл

След това въведете следните редове в backup_home_dir.ямъл файл.

- хостове: ubuntu20
потребител: ansible
стана: Вярно
задачи:
- name: Вземете съдържанието на началната директория / начало / отговор
черупка: ls / home / ansible
регистър: dir_contents
- name: Създайте нова директория / tmp / ansible
файл:
път: / tmp / ansible
състояние: директория
- name: Архивиране на домашна директория / home / ansible в / tmp / ansible
копие:
src: / home / ansible / item
dest: / 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 playbooks / backup_home_dir.ямъл

Както можете да видите, на моя Ubuntu 20.04 LTS хост, архивирането беше успешно.

Пример 4: Изпълнение или пропускане на задачи

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

Първо създайте новата книга за игри register_conditions.ямъл в книги за игри / директория, както следва:

$ nano playbooks / register_conditions.ямъл

След това въведете следните редове в register_conditions.ямъл файл.

- хостове: ubuntu20
потребител: ansible
стана: Вярно
задачи:
- name: Списък на съдържанието на директорията
черупка: ls / home / ansible / test3
регистър: dir_contents
- name: Проверете дали директорията е празна
отстраняване на грешки:
msg: "Директорията е празна."
когато: dir_contents.stdout == ""

След като приключите, натиснете + х, следван от Y и , за да запазите register_conditions.ямъл файл.

В тази книга за игри определих две задачи.

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

Втората задача проверява дали dir_contents.stdout е празен низ или дали директорията / home / ansible / test3 празно е. Ако директорията е празна, съобщението Директорията е празна ще отпечата.

Стартирайте register_conditions.ямъл playbook, както следва:

$ ansible-playbook playbooks / register_conditions.ямъл

Както можете да видите, книгата за игри работи успешно.

Тъй като директорията / home / ansible / test3 е празно, книгата за игри отпечатва съобщението Директорията е празна.

След това създайте нов файл в / home / ansible / test3 директория.

$ touch test3 / myfile

Тъй като / home / ansible / test3 директория вече не е празна, задачата Проверете дали директорията е празна се пропуска, както можете да видите на екранната снимка по-долу.

$ ansible-playbook playbooks / register_conditions.ямъл

Заключение

Отговорното регистрирам модул е ​​много полезен за сървърна автоматизация. Тази статия ви показа основите на регистрирам модул, включително примери за използване на Ansible регистрирам модул за съхранение и архивиране на директории и за изпълнение на задачи в директорията.

Как да промените курсора на мишката и размера на курсора, цвета и схемата в Windows 10
Показалецът на мишката и курсорът в Windows 10 са много важни аспекти на операционната система. Това може да се каже и за други операционни системи, т...
Безплатни и игри с отворен код за разработване на Linux игри
Тази статия ще обхване списък с безплатни двигатели за игри с отворен код, които могат да се използват за разработване на 2D и 3D игри на Linux. Същес...
Урок Сянка на Tomb Raider за Linux
Shadow of the Tomb Raider е дванадесетото допълнение към поредицата Tomb Raider - франчайз за екшън-приключенска игра, създаден от Eidos Montreal. Игр...