Вы находитесь на странице: 1из 9

Введение в ansible

Анатолий Жестов “Информзащита”


в прошлом Exante,livejournal, MadNet, Xim etc.
Hosts + cfg

1. [our_servers]
2. #можно просто указать сервер, его IP
3. 192.168.10.10
4. #можно присвоить имя, указать пользователя и т.д.
5. server1 ansible_host=192.168.0.20 ansible_user=vagrant ansible_pass=vagrant
6. server2 ansible_host=192.168.0.21 ansible_user=vagrant ansible_ssh_private_key_file=~/.ssh/id_rsa.pub

ansible.cfg. Приведен к виду:

1. [defaults]
2. # строчка которая указывает файл с серверами по умолчанию
3. inventory = ~/ansible/hosts
4. # строчка которая отменяет проверку первичного подключения по ssh (yes/no)
5. host_key_checking = false

2
YAML формат

нельзя применять "TAB" как пробел и необходимо четко соблюдать расположение элементов друг над
другом.

● каждый файл начинается с первой строчки "---"


● следующая строка начинается с отступа, нельзя применять "TAB", просто пробелы
● комментарии начинаются с символа «решётки» (#), начинаются в любом месте строки и продолжаются до конца строки
● списки обозначаются начальным дефисом (-) с одним членом списка на строку, либо члены списка заключаются в
квадратные скобки ([ ]) и разделяются запятой и пробелом (, )
● ассоциативные массивы представлены двоеточием с пробелом (: ) в виде ключ: значение, по одной паре ключ-значение на
строку, либо в виде пар, заключённых в фигурные скобки и разделенных запятой и пробелом (, )

3
YAML формат

1. ---
2. 1. ---
3. - petua 2.

4. nick: petik 3. - petua: { nick: petik, position: developer, skills: ['python', 'php'] }
5. position: developer 4.

6. skills: 5. - fructs: ['apple', 'orange', 'mango']


7. - python
8. - php
9.
10. - fructs
11. - apple
12. - orange
13. - mango

4
где что лежит

так себе идея обычное решение, общие настройки в /etc/


пользовательские - в каталоге пользователя.

1. cd /etc/ansible/ 1. sudo adduser ansible


2. sudo mkdir playbooks 2. sudo su - ansible
3. cd playbooks 3. mkdir playbooks
4. sudo nano some_task.yml 4. cd playbooks
5. vim some_task.yml

5
начинаем работу

наш случай - работаем в своей домашке

1. cd ~
2. git init ansible
3. mkdir ./ansible/playbooks
4. cd ./ansible/playbooks
5. nano some_task.yml
6. git add .
7. git commit -m “some_task added”

6
структура каталогов
https://github.com/mattjbarlow/ansible-directory
● roles/
● production # inventory file for production servers ● common/ # this hierarchy represents a "role"
● staging # inventory file for staging environment ● tasks/ #
● ● main.yml # <-- tasks file (can include smaller files)
● group_vars/ ● handlers/ #
● group1 # here we assign variables to particular groups ● main.yml # <-- handlers file
● host_vars/ ● templates/ # <-- files for use with the template resource
● hostname1 # if systems need specific variables, put them here ● ntp.conf.j2 # <------- templates end in .j2
● library/ # if any custom modules, put them here (optional) ● files/ #
● filter_plugins/ # if any custom filter plugins, put them here (optional) ● bar.txt # <-- files for use with the copy resource
● site.yml # master playbook ● foo.sh # <-- script files for use with the script resource
● webservers.yml # playbook for webserver tier ● vars/ #
● dbservers.yml # playbook for dbserver tier ● main.yml # <-- variables associated with this role
● defaults/ #
● main.yml # <-- default lower priority variables for this role
● meta/ #
● main.yml # <-- role dependencies

7
небесполезное

ansible-inventory --list

ansible-inventory --graph

export ANSIBLE_NOCOWS=1

и очень поможет

https://docs.ansible.com/ansible/latest/reference_appendices/faq.html

8
Место для вопросов

Хотите поговорить об этом?

Вам также может понравиться