Настройка ansible первые шаги

Дата | 22.11.2021

Настройка ansible первые шаги
Начал изучать ansible (Настройка ansible первые шаги).
Есть группа серверов выделенных под базу данных.
4 slave сервера под mysql базы.
Для начало установил системы, выбор пал на FreeBSD.
Настроил на серверах ssh, пока этого достаточно.
На центровом сервере, откуда будет запускать ansible создал директорию под конфигурации задач.
Установим сам ansible.

# cd /usr/ports/sysutils/ansible && make install clean

Создадим директорию.

# mkdir /usr/local/etc/ansible

В ней создадим конфигурацию наших серверов.
Параметры в этих файлах нужны будут для будущих playbook.
Конфигурация не сильно запутана и сложна, все логично.
[all:vars] — Для всех.
[nodes] — Индивидуально для каждого сервера.
[mysql] — Название группы серверов.

# cat /usr/local/etc/ansible/hosts 
[all:vars]
from_ansible_python_path=/usr/local/bin/python

[nodes]
mysql0_prod ansible_host=ip адрес сервера
mysql0_prod ansible_ssh_port=12345
mysql0_prod ansible_ssh_host=ip адрес сервера

mysql1_prod ansible_host=ip адрес сервера
mysql1_prod ansible_ssh_port=12345
mysql1_prod ansible_ssh_host=ip адрес сервера

mysql2_prod ansible_host=ip адрес сервера
mysql2_prod ansible_ssh_port=12345
mysql2_prod ansible_ssh_host=ip адрес сервера

mysql3_prod ansible_host=ip адрес сервера
mysql3_prod ansible_ssh_port=12345
mysql3_prod ansible_ssh_host=ip адрес сервера

mysql_test ansible_host=ip адрес сервера ansible_ssh_port=54321 ansible_ssh_host=ip адрес сервера ansible_user=test_us ansible_pass=mypassword123456

[mysql]
mysql0_prod
mysql1_prod
mysql2_prod
mysql3_prod
mysql_test

[defaults] — По умолчанию общие для всех параметры.
gather_facts — Сбор данных серверов, если не используются факты (собранные автоматически setup модулем) с серверов, то можно отключить, быстрее задачи будут выполняться.

# cat /usr/local/etc/ansible/ansible.cfg 
[defaults]
interpreter_python=/usr/local/bin/python
gather_facts: false

С начальной настройкой закончили, приступим к созданию playbook (задач).
Для составления playbooks нужно учитывать синтаксис YAML, а так же нужно учитывать и Jinja.
Синтаксис плэйбуков должен быть с пробелами, отступами как у YAML.
Первым делом нам нужно установить python.
Далее мне нужно посмотреть кто в группе wheel и какие директории есть в /usr.
Raw модуль служит только для установки на низком уровне python, что бы в последствии ansible мог корректно работать.

# cat /usr/local/etc/ansible/first_start
- hosts: mysql
  gather_facts: False
  pre_tasks:
    - name: 'Install python.'
      raw: test -e /usr/local/bin/python || (pkg install -y python38)

    - name: "Symlink created."
      raw: test -e /usr/local/bin/python || (ln -s /usr/local/bin/python3.8 /usr/local/bin/python)
      register: set_symlink
      failed_when: set_symlink.rc != 0 and set_symlink.rc != 1

  tasks:
    - name: who is in group wheel.
      shell:
        cmd: "getent group wheel | cut -d: -f4 |  tr ',' '\n' > /tmp/tee1"
        executable: /bin/sh

Так же добавил проверку установлен ли сам питон с symlink (test -e /usr/local/bin/python).
Запускаем плэйбук.

# ansible-playbook first_start

PLAY [mysql] ************************************************************************************************************************************************************************************

TASK [Install python.] ************************************************************************************************************************************************************************
changed: [mysql0_prod]
changed: [mysql1_prod]
changed: [mysql2_prod]
changed: [mysql3_prod]
changed: [mysql_test]

TASK [Symlink created.] ***********************************************************************************************************************************************************************
changed: [mysql0_prod]
changed: [mysql1_prod]
changed: [mysql2_prod]
changed: [mysql3_prod]
changed: [mysql_test]

TASK [who is in group wheel.] *******************************************************************************************************************************************************************
changed: [mysql0_prod]
changed: [mysql1_prod]
changed: [mysql2_prod]
changed: [mysql3_prod]
changed: [mysql_test]

PLAY RECAP ************************************************************************************************************************************************************************************
mysql0_prod                 : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
mysql1_prod                 : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
mysql2_prod                 : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
mysql3_prod                 : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
mysql_test                  : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Вот и вся первичная настройка ansible первые шаги.
Далее расскажу как установить и настроить софт на сервере с помощью ansible.
За статью не судите строго, статью пишу в первую очередь для себя.
Ansible только начал осваивать.
В ansible распаковка архива.
ansible копирование файлов и директорий.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *