<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.cless.pro/index.php?action=history&amp;feed=atom&amp;title=Ansible._Roles</id>
	<title>Ansible. Roles - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cless.pro/index.php?action=history&amp;feed=atom&amp;title=Ansible._Roles"/>
	<link rel="alternate" type="text/html" href="https://wiki.cless.pro/index.php?title=Ansible._Roles&amp;action=history"/>
	<updated>2026-10-23T00:00:38Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.36.2</generator>
	<entry>
		<id>https://wiki.cless.pro/index.php?title=Ansible._Roles&amp;diff=1643&amp;oldid=prev</id>
		<title>Cless в 18:18, 8 сентября 2023</title>
		<link rel="alternate" type="text/html" href="https://wiki.cless.pro/index.php?title=Ansible._Roles&amp;diff=1643&amp;oldid=prev"/>
		<updated>2023-09-08T18:18:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия 18:18, 8 сентября 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot;&gt;Строка 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 18:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   ansible_ssh_port: 22&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   ansible_ssh_port: 22&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   ansible_user: root&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   ansible_user: root&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   ansible_ssh_pass: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dispersia85D&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   ansible_ssh_pass: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;PassWord&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  hosts:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  hosts:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   server01:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   server01:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Cless</name></author>
	</entry>
	<entry>
		<id>https://wiki.cless.pro/index.php?title=Ansible._Roles&amp;diff=1642&amp;oldid=prev</id>
		<title>Cless: Новая страница: «= Описание = Ansible роли для установки/настройки сервисов  = Общая предварительная настройк...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.cless.pro/index.php?title=Ansible._Roles&amp;diff=1642&amp;oldid=prev"/>
		<updated>2023-09-08T18:18:13Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «= Описание = Ansible роли для установки/настройки сервисов  = Общая предварительная настройк...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Описание =&lt;br /&gt;
Ansible роли для установки/настройки сервисов&lt;br /&gt;
&lt;br /&gt;
= Общая предварительная настройка =&lt;br /&gt;
Корневая директория проекта&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir ~/ansible&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Файл инвентаризации в формате YAML&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir ~/ansible/inventory&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano ~/ansible/inventory/servers_test&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
servers_test:&lt;br /&gt;
  vars:&lt;br /&gt;
   ansible_python_interpreter: /usr/bin/python3&lt;br /&gt;
   ansible_connection: ssh&lt;br /&gt;
   ansible_ssh_port: 22&lt;br /&gt;
   ansible_user: root&lt;br /&gt;
   ansible_ssh_pass: dispersia85D&lt;br /&gt;
  hosts:&lt;br /&gt;
   server01:&lt;br /&gt;
     ansible_ssh_host: 192.168.199.189&lt;br /&gt;
     #ansible_user: root&lt;br /&gt;
     #ansible_ssh_pass: PassWord&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Проверка списка хостов&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ansible all --list-hosts -i ./inventory/servers_test.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
      hosts (1):&lt;br /&gt;
        server01&lt;br /&gt;
    ...&lt;br /&gt;
Проверка доступности хостов по SSH&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ansible -m ping servers_test -i ./inventory/servers_test.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   server01 | SUCCESS =&amp;gt; {&lt;br /&gt;
       &amp;quot;changed&amp;quot;: false,&lt;br /&gt;
       &amp;quot;ping&amp;quot;: &amp;quot;pong&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
   ...&lt;br /&gt;
Директория для ролей&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir ~/ansible/roles&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Каждую роль мы создаем с помощью команды ansible-galaxy. Синтаксис следующий:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ansible-galaxy init '''&amp;lt;Имя роли&amp;gt;'''&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После ввода команды в текущем каталоге (в нашем примере, /etc/ansible/roles) будет создана папка с названием роли, а в ней следующая структура каталогов:&amp;lt;blockquote&amp;gt;'''defaults''' — переменные по умолчанию. У них самый низкий приоритет и их могут легко переопределить переменные в каталоге vars (ниже по списку).&lt;br /&gt;
&lt;br /&gt;
'''files''' — для файлов, которые могут быть скопированы на настраиваемый сервер.&lt;br /&gt;
&lt;br /&gt;
'''handlers''' — обработчики, которые могут запускаться при определенных обстоятельствах. Например, перезапуск сервиса в случае обновления конфигурационного файла.&lt;br /&gt;
&lt;br /&gt;
'''meta''' — добавление метаданных, например: автор, описание, среда и так далее.&lt;br /&gt;
&lt;br /&gt;
'''tasks''' — папка с описанием выполняемых задач.&lt;br /&gt;
&lt;br /&gt;
'''templates''' — файлы с шаблонами. Мы можем использовать переменные в данных шаблонах — тогда при копировании файлов, они будут заменяться значениями.&lt;br /&gt;
&lt;br /&gt;
'''tests''' — скрипты для выполнения тестов — ansible покажет результаты выполнения команд, но не применит их.&lt;br /&gt;
&lt;br /&gt;
'''vars''' — файлы с переменными. Имеют высокий приоритет.&amp;lt;/blockquote&amp;gt;После будем приступать к настройке роли, созданию и запуску плейбука.&lt;br /&gt;
&lt;br /&gt;
= Пример. Установка BIND с помощи роли     =&lt;br /&gt;
Инициализируем новую роль&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ansible-galaxy init Bind&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano ~/ansible/roles/Bind/tasks/main.yml&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
---&lt;br /&gt;
- name: Include vars for os family&lt;br /&gt;
  include_vars:&lt;br /&gt;
   file: &amp;quot;{{ ansible_os_family }}.yml&amp;quot;&lt;br /&gt;
- name: Install Bind on RedHat Family&lt;br /&gt;
  yum:&lt;br /&gt;
   name: bind&lt;br /&gt;
   state: present&lt;br /&gt;
  when:&lt;br /&gt;
   ansible_os_family == &amp;quot;RedHat&amp;quot;&lt;br /&gt;
  notify:&lt;br /&gt;
   - bind systemd&lt;br /&gt;
- name: Install Bind on Debian Family&lt;br /&gt;
  apt:&lt;br /&gt;
   name: &amp;quot;{{ item }}&amp;quot;&lt;br /&gt;
   state: present&lt;br /&gt;
  loop:&lt;br /&gt;
  - bind9&lt;br /&gt;
  - dnsutils&lt;br /&gt;
  when:&lt;br /&gt;
   ansible_os_family == &amp;quot;Debian&amp;quot;&lt;br /&gt;
  notify:&lt;br /&gt;
   - bind systemd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;В зависимости от типа операционной системы мы подгрузим разные переменные (так как в разных системах имя для bind разное), после чего устанавливаем bind с помощью yum (для систем на базе Red Hat) или apt (Debian). Обратите внимание, что для систем Debian мы выполняем установку двух пакетов, для перечисления которых используем цикл.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano ~/ansible/roles/Bind/vars/Debian.yml&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
---&lt;br /&gt;
service_name : bind9&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;code&amp;gt;nano ~/ansible/roles/Bind/vars/RedHat.yml&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
---&lt;br /&gt;
service_name : named&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;После установки bind необходимо разрешить автозапуск сервиса и стартовать его. Имя сервиса подставляется из переменной и зависит от типа операционной системы Linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nano ~/ansible/roles/Bind/handlers/main.yml&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
---&lt;br /&gt;
- name: bind systemd&lt;br /&gt;
  systemd:&lt;br /&gt;
   name: &amp;quot;{{ service_name }}&amp;quot;&lt;br /&gt;
   enabled: yes&lt;br /&gt;
   state: started&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Создаем файл для плейбука установки Bind&amp;lt;blockquote&amp;gt;* в данном примере мы запускаем выполнение роли Bind на серверы из группы test_servers.&amp;lt;/blockquote&amp;gt;&amp;lt;code&amp;gt;nano ~/ansible/start_role_Bind.yml&amp;lt;/code&amp;gt;&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
---&lt;br /&gt;
- hosts: servers_test&lt;br /&gt;
  user: root&lt;br /&gt;
  become: true&lt;br /&gt;
  become_method: su&lt;br /&gt;
  become_user: root&lt;br /&gt;
  roles:&lt;br /&gt;
   - Bind&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Запускаем плейбук установки Binds&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ansible-playbook -v ~/ansible/start_role_Bind.yml -i ~/ansible/inventory/servers_test.yml&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;systemctl status named&amp;lt;/code&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     ● named.service - Berkeley Internet Name Domain (DNS)&lt;br /&gt;
     Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)&lt;br /&gt;
     Active: active (running) since Sat 2023-03-18 12:33:08 MSK; 8s ago&lt;br /&gt;
     ...&lt;br /&gt;
[[Категория:Ansible]]&lt;br /&gt;
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__&lt;br /&gt;
[[Категория:BIND]]&lt;/div&gt;</summary>
		<author><name>Cless</name></author>
	</entry>
</feed>