Можете да дефинирате три вида потребителски факти в Ansible.
1) Общи факти: Тези факти са достъпни от всеки хост във вашия инвентарен файл.
2) Групови факти: Тези факти са достъпни само от определен набор от хостове или група от хостове.
3) Факти за домакините: Тези факти са достъпни само от определен хост.
В тази статия ще ви покажа как да работите с Ansible потребителски факти. И така, нека започнем.
Предпоставки:
Ако искате да изпробвате примерите от тази статия,
1) Трябва да имате инсталиран Ansible на вашия компютър.
2) Трябва да имате поне 6 хоста на Linux, конфигурирани за Ansible автоматизация.
В LinuxHint има много статии, посветени на Инсталиране на Ansible и конфигуриране на хостове за Ansible автоматизация. Можете да ги проверите, ако е необходимо.
Създаване на директория на проекти:
Преди да започнем, нека създадем директория на проекта, за да можем да организираме нашите проектни файлове.
За да създадете директория на проекта потребителски факти / във вашия У ДОМА директория, изпълнете следната команда:
$ mkdir -pv потребителски факти / playbooks, host_vars, group_vars
Сега отидете до потребителски факти / директория, както следва:
$ cd потребителски факти /
Създайте конфигурационен файл Ansible ансибъл.cfg в директорията на вашия проект, както следва:
$ nano ansible.cfg
Въведете в следващите редове вашия ансибъл.cfg файл.
[по подразбиране]инвентар = хостове
host_key_checking = Невярно
След като приключите, натиснете
Сега създайте Ansible инвентарен файл домакини в директорията на вашия проект, както следва:
$ nano домакини
Въведете следните редове във вашия домакин инвентарен файл.
vm1.нодеките.comvm2.нодеките.com
[уеб]
vm3.нодеките.com
vm4.нодеките.com
[база данни]
vm [5: 6].нодеките.com
След като приключите, натиснете
За да изброите всички налични хостове във вашия инвентарен файл, изпълнете следната команда:
$ ansible all --list-hostsКакто можете да видите, аз имам шест хоста в моя инвентарен файл.
За да изброите хостовете, налични в уеб група от вашия инвентарен файл, изпълнете следната команда:
$ ansible web --list-hostsКакто можете да видите, имам два домакина (vm3.нодеките.com и vm4.нодеките.com) в уеб група от моето инвентарно досие.
За да изброите хостовете, налични в база данни група от вашия инвентарен файл, изпълнете следната команда:
База данни на $ ansible --list-hostsКакто можете да видите, имам два домакина (vm5.нодеките.com и vm6.нодеките.com) в база данни група от моето инвентарно досие.
Работа с отговорни глобални факти:
В този раздел ще ви покажа как да дефинирате Ansible глобални факти / променливи във вашия инвентарен файл и достъп до тях от вашите Ansible playbooks. Ще ви покажа и как да дефинирате глобални факти / променливи в отделен файл.
Първо отворете домакин инвентарен файл със следната команда:
$ nano домакини
Сега добавете маркираните редове във вашия домакин инвентарен файл. След като приключите, натиснете
'
Добавяте глобални факти в всички: вар раздел. Тук добавих web_url глобален факт.
Сега създайте нова книга за игри print_global_fact.ямъл в книги за игри / директория, както следва:
$ nano playbooks / print_global_fact.ямъл
След това въведете следните редове в print_global_fact.ямъл файл.
- домакини: всичкипотребител: ansible
задачи:
- name: Отпечатайте стойността на глобалния факт 'web_url'
отстраняване на грешки:
msg: 'Уеб URL: web_url'
Целта на тази книга е да отпечата web_url глобален факт.
След като приключите, натиснете
Сега стартирайте print_global_fact.ямъл playbook, както следва:
$ ansible-playbook playbooks / print_global_fact.ямъл
Както можете да видите, всички хостове в моя инвентарен файл имат достъп до глобалния факт web_url.
Можете също да добавите глобални факти в отделен файл. По този начин можете да поддържате файла с инвентара чист. Нека да видим как да го направим.
Първо, нека премахнем глобалните факти от домакин инвентарен файл.
$ nano домакини
Сега премахнете маркираните редове от инвентарния файл и натиснете
След това създайте нов файл всичко в group_vars / директория, както следва:
$ nano group_vars / всички
Да добавим глобалния факт web_url, въведете следния ред в group_vars / всички файл.
web_url: https: // www.linuxhint.comСлед като приключите, натиснете
За да проверите дали имате достъп до глобалния факт web_url, стартирайте print_global_fact.ямъл игрална книга отново, както следва:
$ ansible-playbook playbooks / print_global_fact.ямъл
Както можете да видите, всички хостове в моя инвентарен файл имат достъп до глобалния факт web_url.
Работа с Ansible Group Facts:
В този раздел ще ви покажа как да дефинирате факти / променливи от групата Ansible във вашия инвентарен файл и да получите достъп до тях от вашите книги за игра Ansible. Ще ви покажа и как да дефинирате групови факти / променливи в отделен файл.
Първо отворете домакин инвентарен файл със следната команда:
$ nano домакини
Ако имате група домакин група1, след това добавяте групови факти / променливи за тази група хостове в група1: вар раздел от инвентарния файл.
[група1]..
[група1: варира]
променлива1 = стойност1
променлива2 = стойност2
Например, за да добавите груповите факти / променливи име на домейн и database_backends за уеб хост група, можете да въведете маркираните редове във вашия инвентарен файл.
След като приключите, натиснете
За да отпечатате и тествате дали можем да осъществим достъп до груповите факти, създайте нова книга за игри print_group_facts.ямъл в книги за игри / директория, както следва:
$ nano playbooks / print_group_facts.ямъл
Въведете следните редове във вашия print_group_facts.ямъл файл.
- домакини: уебпотребител: ansible
задачи:
- име: Отпечатайте групови факти
отстраняване на грешки:
msg: 'Име на домейн: domain_name База данни на базата данни: database_backend'
След като приключите, натиснете
Сега стартирайте print_group_facts.ямъл playbook, както следва:
$ ansible-playbook playbooks / print_group_facts.ямъл
Както можете да видите, домакините в уеб групата има достъп до име на домейн и database_backend групирайте факти / променливи.
Сега, нека изчистим файла с инвентара и ще видим как да добавим групови факти / променливи в отделен файл.
Първо отворете домакин инвентарен файл, както следва:
$ нано факти
Премахнете маркираните редове от домакин инвентарен файл. След като приключите, натиснете
Тъй като добавяме групови променливи за уеб хост група, създайте нов файл уеб (същото като името на групата) в group_vars / директория, както следва:
$ nano group_vars / web
За да добавите груповите факти име на домейн и database_backend за уеб хост група, добавете следните редове в group_vars / web файл.
име на домейн: уеб.linuxhint.comdatabase_backend: pgsql
След като приключите, натиснете
За да проверите дали хостовете в уеб групата има достъп до груповите факти, стартира print_group_facts.ямъл playbook, както следва:
$ ansible-playbook playbooks / print_group_facts.ямъл
Както можете да видите, домакините в уеб групата има достъп до име на домейн и database_backend групирайте факти / променливи.
Работа с фактите на Ansible Host:
В този раздел ще ви покажа как да дефинирате факти / променливи на хоста Ansible във вашия инвентарен файл и да получите достъп до тях от вашите книги за игра Ansible. Ще ви покажа и как да дефинирате хост факти / променливи в отделен файл.
Първо отворете домакин инвентарен файл със следната команда:
$ nano домакини
Можете да добавите факти / променливи за хоста след DNS името или IP адреса на хоста във вашия инвентарен файл, както следва:
www.домейн1.com променлива1 = стойност1 променлива2 = стойност2192.168.22.2 променлива1 = стойност3 променлива2 = стойност4
Например можете да добавите факти / променливи на хоста име на домейн и database_backend за домакините vm3.нодеките.com и vm4.нодеките.com, както е отбелязано на екранната снимка по-долу.
Забележете, че стойността на име на домейн и database_backend фактите / променливите са различни за всеки хост.
След като приключите с добавянето на хост факти / променливи, натиснете
Тъй като добавих същите факти / променливи, както в примера за групови факти / променливи, можем да използваме print_group_facts.ямъл playbook, за да тествате и достъпността на тези факти / променливи.
Стартирайте print_group_facts.ямъл playbook, както следва:
$ ansible-playbook playbooks / print_group_facts.ямъл
Както можете да видите, фактите / променливите на хоста са достъпни за посочения от тях хост. Стойностите са различни и за всеки хост.
Тъй като всеки от хостовете е в отделен ред в моя инвентарен файл, бих могъл лесно да добавя факти / променливи хост в моя инвентарен файл. Но ако използвате диапазони за дефиниране на хостове във вашия инвентарен файл, както е отбелязано на екранната снимка по-долу, не можете да добавяте факти / променливи на хоста като този.
Можете да добавите факти / променливи на хоста в отделен файл, точно както сте направили за глобалните и групови факти / променливи.
За да добавите факти / променливи за хоста за vm5.нодеките.com хост, създайте нов файл vm5.нодеките.com (същото като DNS името на хоста) в host_vars / директория, както следва:
$ nano host_vars / vm5.нодеките.com
Можете да добавите хост факти / променливи db_port и db_name за домакина vm5.нодеките.com със следващите редове.
db_port: 3306db_name: demo1
След като приключите, натиснете
По същия начин, за да добавите факти / променливи за хоста vm6.нодеките.com, създайте нов файл vm6.нодеките.com в host_vars / директория, както следва:
$ nano host_vars / vm6.нодеките.com
Можете да добавите факти / променливи на хоста db_port и db_name за домакина vm6.нодеките.com със следващите редове.
db_port: 8877db_name: app1
След като приключите, натиснете
За да отпечатате и тествате дали можем да получим достъп до фактите / променливите на хоста, създайте нова книга за игри print_host_facts.ямъл в книги за игри / директория, както следва:
$ nano playbooks / print_host_facts.ямъл
Сега въведете следните редове в print_host_facts.ямъл файл.
- хостове: база даннипотребител: ansible
задачи:
- name: Отпечатайте факти за хоста
отстраняване на грешки:
msg: 'Име на базата данни: db_name Порт на базата данни: db_port'
След като приключите, натиснете
За да проверите дали хостът vm5.нодеките.com и vm6.нодеките.com може да има достъп до фактите / променливите на хоста, да стартира print_host_facts.ямъл playbook, както следва:
$ ansible-playbook playbooks / print_host_facts.ямъл
Както можете да видите, домакините vm5.нодеките.com и vm6.нодеките.com има достъп до db_name и db_port хост факти / променливи.
Сглобяване на всичко заедно: Предимство на отговорните факти
В този раздел ще говоря за предимството на фактите от променливи / променливи. И така, нека започнем.
Преди да започнем, нека изчистим инвентарния файл.
Отвори домакин инвентарен файл със следната команда:
$ nano домакини
Премахнете маркирания раздел от инвентарния файл.
Ето как трябва да изглежда вашият инвентарен файл в този момент.
Сега добавете маркирания ред във вашия инвентарен файл. Тези редове добавят глобалните факти / променливи fact_scope и пристанище.
След това добавете маркираните редове във вашия инвентарен файл. Тези редове добавят fact_scope и пристанище факти / променливи за хостовете в база данни група.
Накрая добавете fact_scope и пристанище хост факти / променливи за vm3.нодеките.com и vm4.нодеките.com хостове, както е отбелязано на екранната снимка по-долу.
След като приключите, натиснете
За да отпечатате стойността на глобалните, групови и хостови факти / променливи, създайте нова книга за игри предимство_факт.ямъл в книги за игри / директория, както следва:
$ nano playbooks / fact_precedence.ямъл
Въведете следните редове в факт_прецедент.ямъл файл.
- домакини: всичкипотребител: ansible
задачи:
- име: Отпечатайте всички факти
отстраняване на грешки:
msg: 'Обхват на фактите: fact_scope Порт: порт'
След като приключите, натиснете
За да отпечатате глобални, групови и хостови факти / променливи, стартирайте факт_прецедент.ямъл playbook, както следва:
$ ansible-playbook playbooks / fact_precedence.ямъл
Както можете да видите, глобалните, груповите и хостовите факти / променливи се отпечатват.
Забележете, че груповите факти / променливи замениха глобалните факти / променливи (1). Също така забележете, че хост фактите / променливите замениха както груповите, така и глобалните факти / променливи (2).
Фактът / променливата предимство на Ansible е както следва:
Факт за домакин> Групов факт> Глобален фактЗаключение:
След като прочетете тази статия, бихте могли да работите удобно с глобални, групови и хостови факти / променливи на Ansible. Запомнете предимството на потребителския факт Ansible. Това ще ви помогне по-лесно да отстранявате грешките на своите книги Ansible.