Skip to content

DragonDamage/Ansible_Instruction

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Инструкция по Ansible

1. Установка Ansible

Установка на Linux

Если вы используете Linux, выполните следующие команды в терминале, чтобы установить Ansible с помощью менеджера пакетов вашего дистрибутива:

Ubuntu и Debian:

$ sudo apt-get update
$ sudo apt-get install ansible

CentOS и Red Hat:

$ sudo yum update
$ sudo yum install ansible

Установка на macOS

$ brew update
$ brew install ansible

2. Настройка инвентаря

Ansible использует инвентарь для определения хостов, на которых нужно выполнить задачи. Инвентарь представляет собой файл, в котором перечислены IP-адреса или имена хостов, а также переменные, необходимые для настройки подключения к хостам.

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

Для создания инвентаря создайте файл с именем inventory.ini в любом месте на вашем компьютере и добавьте следующие строки:

[webservers]
web1.example.com
web2.example.com

[database]
db1.example.com

Переменные инвентаря

Кроме перечисления хостов, в инвентаре можно использовать переменные для настройки подключения к хостам. Для этого можно определить переменные для каждой группы хостов или для отдельных хостов Например, вы можете определить переменную ansible_user для каждого хоста, чтобы указать имя пользователя, с которым нужно подключаться к хосту

[webservers]
web1.example.com ansible_user=ubuntu
web2.example.com ansible_user=root

[database]
db1.example.com ansible_user=dbadmin

Также вы можете определить общие переменные для всех хостов в инвентаре, создав файл group_vars/all.yml и определив переменные в нем:

---
ansible_ssh_private_key_file: /path/to/private_key

Это позволит указать путь к файлу с приватным ключом SSH, который будет использоваться при подключении к хостам

3. Создание плейбуков

Плейбуки - это файлы YAML, которые содержат инструкции по выполнению задач на хостах. Каждый плейбук может содержать одну или несколько задач, которые Ansible будет выполнять последовательно на каждом хосте

Создание плейбука

Для создания плейбука создайте файл с именем playbook.yml в любом месте на вашем компьютере и добавьте следующий код:

---
- hosts: webservers
  become: true
  tasks:
    - name: Установить Nginx
      apt:
        name: nginx
        state: present

Этот плейбук выполняет задачу установки Nginx на все хосты из группы webservers. Атрибут become указывает на то, что Ansible должен использовать привилегии суперпользователя для выполнения задач

Выполнение плейбука

Для выполнения плейбука используйте команду ansible-playbook и передайте ей имя файла плейбука:

$ ansible-playbook playbook.yml -i inventory.ini

Ansible будет выполнять плейбук на каждом хосте из группы webservers, установив Nginx на каждом хосте

4. Использование модулей

Ansible предоставляет множество модулей, которые можно использовать для выполнения различных задач на хостах. Например, с помощью модуля copy можно копировать файлы на хосты, а с помощью модуля service можно управлять службами на хостах

Использование модуля copy

Для копирования файла на удаленный хост используйте модуль copy. В следующем примере мы скопируем файл index.html на все хосты из группы webservers:

---
- hosts: webservers
  become: true
  tasks:
    - name: Копирование файла index.html
      copy:
        src: /path/to/local/index.html
        dest: /var/www/html/index.html

Этот плейбук выполняет задачу копирования файла index.html с локального хоста на удаленные хосты из группы webservers

Использование модуля service

Для управления службами на удаленном хосте используйте модуль service. В следующем примере мы будем перезапускать службу Nginx на всех хостах из группы webservers:

---
- hosts: webservers
  become: true
  tasks:
    - name: Перезапуск службы Nginx
      service:
        name: nginx
        state: restarted

Этот плейбук выполняет задачу перезапуска службы Nginx на всех хостах из группы webservers

5. Использование ролей

Роли позволяют организовать плейбуки и задачи в более структурированном виде, что делает их более читабельными и управляемыми. Роль - это набор плейбуков, задач и переменных, которые можно использовать для выполнения определенной функции на хостах.

Создание роли

Для создания роли используйте команду ansible-galaxy:

$ ansible-galaxy init myrole

Затем создайте файл nginx/tasks/main.yml и добавьте следующий код:

---
- name: Установить Nginx
  apt:
    name: nginx
    state: present
    update_cache: true

- name: Настройка конфигурации Nginx
  template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf
    owner: root
    group: root
    mode: '0644'
  notify: Перезапуск службы Nginx

Этот файл определяет две задачи: первая задача устанавливает Nginx с помощью модуля apt, а вторая задача копирует файл конфигурации nginx.conf.j2 в /etc/nginx/nginx.conf на удаленных хостах с помощью модуля template. Затем задача оповещает модуль service о том, что необходимо перезапустить службу Nginx, используя оповещение notify

Использование роли в плейбуке

Для использования роли в плейбуке добавьте раздел roles и укажите имя роли. В следующем примере мы используем роль nginx в плейбуке:

---
- hosts: webservers
  become: true
  roles:
    - nginx

Этот плейбук выполнит задачи из роли nginx на всех хостах из группы webservers.

В этом руководстве были представлены основы Ansible, включая инструменты для управления хостами, конфигурации и установки пакетов, копирования файлов и управления службами, а также использование ролей для управления плейбуками и задачами.

Releases

No releases published

Packages

No packages published