Skip to content

Commit 38cd534

Browse files
committed
Lists text
1 parent d9eea72 commit 38cd534

File tree

1 file changed

+126
-1
lines changed

1 file changed

+126
-1
lines changed

README.md

+126-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,126 @@
1-
# ansible-snippets
1+
# Полезные шаблоны для Ansible
2+
## Содержание
3+
- [Введение](#Введение)
4+
- [О файлах примерах](#О-файлах-примерах)
5+
- [О версиях Ansible](#О-версиях-Ansible)
6+
- [Структура данных]()
7+
- [Списки](#Списки)
8+
- [Словари (Хеш таблицы)](#Словари)
9+
- [Списки словарей](#Списки-словарей)
10+
- [Словари словарей](#Словари-словарей)
11+
- [Циклы](#Циклы)
12+
- [with_items](#with_items)
13+
- [С простыми списками](#С-простыми-списками)
14+
- [with_dict](#with_dict)
15+
- [Полезные ссылки](#Полезные-ссылки)
16+
- [Благодарности](#Благодарности)
17+
18+
## Введение
19+
Отчасти к счастью, отчасти к сожалению, но работа системного администратора фрилансера связана с огромным количеством технологий, меняющихся от проекта к проекту. С одной стороны, это позволяет держать свой мозг в тонусе. С другой стороны, иногда, возвращаясь к той или иной технологии, забываются уже давно изученные вещи.
20+
В данном документе и репозитории собраны некоторые примеры по работе с системой автоматизации Ansible. Возможно это поможет не только мне.
21+
[⬆ Наверх](#Содержание)
22+
23+
### О файлах примерах
24+
Во многих разделах идёт ссылка на файл пример из директории [examples](examples/). Все файлы примеры написаны с использованием модуля ``debug`` и просто работают с параметрами или синтаксисом, показывая возможное применение и возможные ошибки. Запуск этих файлов-примеров не приводит к каким-либо изменениям на локальной или удалённой системе.
25+
26+
Примеры в самом тексте могут повторятся в нескольких разделах. Это сделано намеренно и позволяет разобрать примеры с разных сторон. Например, примеры в разделе [списки](#Списки) и [with_items](#with_items) одинаковые, но показывают работу разных вещей.
27+
[⬆ Наверх](#Содержание)
28+
### О версиях Ansible
29+
Ansible проект с активной разработкой. Это значит, что некоторый старый синтаксис уже не работает в новых версиях. Данный документ написан и протестирован в Ansible версии 2.3.1.0.
30+
[⬆ Наверх](#Содержание)
31+
32+
## Структура данных
33+
Раздел структура данных подробно описывает различные стуктуры данных, используемые в Ansible. Раздел сильно связан с разделом [Циклы](#Циклы), рекомендую просмотреть оба раздела.
34+
[⬆ Наверх](#Содержание)
35+
36+
### Списки
37+
Списки это простейшая структура данных в Ansible. Задаётся путём присваиванию списку имени и перечислению самого списка с новой строки, через тире и пробел. Как и во всём yaml используются пробелы, размер и порядок отступов (пробелов) имеет значнение! Например, список устанавливаемого софта будет выглядеть следующим образом:
38+
```yaml
39+
soft:
40+
- htop
41+
- atop
42+
- tshark
43+
- mtr
44+
```
45+
Чаще всего используется с командой ``with_items``. В примере выше сам список будет иметь имя ``"{{ soft }}"``, а само указание на объект списка соответствует служебному ``"{{ item }}"``.
46+
Практическое использование будет выглядеть следующим образом:
47+
```yaml
48+
- name: Utils | Ubuntu | Install basic utilities
49+
apt:
50+
pkg: "{{ item }}"
51+
state: present
52+
with_items: "{{ soft }}"
53+
```
54+
Мало деталей? Более подробно в [файле примере](examples/lists.yml).
55+
56+
В некоторых случаях вам может потребоваться записать список в виде строки. Это возможно. Список заключается в квадратные скобки, каждый член списка заключается в кавычки и пишется через запятую. В подобном синтаксисе наш список софта будет выглядеть следующим образом:
57+
```yaml
58+
soft: ['htop', 'atop', 'tshark', 'mtr']
59+
```
60+
[⬆ Наверх](#Содержание)
61+
62+
### Словари (Хеш таблицы)
63+
64+
[⬆ Наверх](#Содержание)
65+
66+
### Списки словарей
67+
68+
[⬆ Наверх](#Содержание)
69+
70+
### Словари словарей
71+
72+
[⬆ Наверх](#Содержание)
73+
74+
## Циклы
75+
76+
[⬆ Наверх](#Содержание)
77+
78+
### with_items
79+
80+
[⬆ Наверх](#Содержание)
81+
82+
#### С простыми списками
83+
Команда ``with_items`` делает что-то для всего заданного списка. Список может задаваться непосредственно в команде или предварительно в переменных.
84+
Если задавать список непосредственно в команде, то код будет выглядеть следующим образом:
85+
```yaml
86+
- name: Utils | Ubuntu | Install basic utilities
87+
apt:
88+
pkg: "{{ item }}"
89+
state: present
90+
with_items:
91+
- htop
92+
- atop
93+
- tshark
94+
- mtr
95+
```
96+
Однако, такая конструкция используется достаточно редко, так как не позволяет выносить список в файл конфигурации и делать его уникальным для каждого хоста или группы. Значительно чаще используется конструкция с именнованным списком. В этом случае список задаётся в файле конфигурации хостаруппыоли и имеет следующий формат:
97+
```yaml
98+
soft:
99+
- htop
100+
- atop
101+
- tshark
102+
- mtr
103+
```
104+
Тогда исполняемый код будет преобразован в следующий:
105+
```yaml
106+
- name: Utils | Ubuntu | Install basic utilities
107+
apt:
108+
pkg: "{{ item }}"
109+
state: present
110+
with_items: "{{ soft }}"
111+
```
112+
[⬆ Наверх](#Содержание)
113+
114+
### with_dict
115+
116+
[⬆ Наверх](#Содержание)
117+
118+
### Полезные ссылки
119+
- [Официальная документация по Ansible (английский)](http://docs.ansible.com/ansible/)
120+
- [Проверка yaml синтаксиса онлайн](http://www.yamllint.com/)
121+
- [Проверка regex выражений онлайн](https://regex101.com/)
122+
123+
[⬆ Наверх](#Содержание)
124+
125+
## Благодарности
126+
[⬆ Наверх](#Содержание)

0 commit comments

Comments
 (0)