Начал изучать 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 копирование файлов и директорий.
Ansible установка и запуск программ.
Pingback: ansible распаковка архива - FRYAHA.RU