From 011594580578191ece3fd2bed775b248341fa7b1 Mon Sep 17 00:00:00 2001 From: dannc Date: Mon, 1 Aug 2022 10:45:28 +0700 Subject: [PATCH] homework 8.4: partially complete --- readme.md | 1 + src/homework/08-ansible/8.3/readme.md | 2 +- .../08-ansible/8.4/playbook/.gitignore | 2 + .../playbook/group_vars/clickhouse/vars.yml | 8 ++ .../playbook/group_vars/lighthouse/vars.yml | 6 ++ .../8.4/playbook/group_vars/vector/vars.yml | 6 ++ .../8.4/playbook/inventory/prod.yml.example | 13 ++++ .../08-ansible/8.4/playbook/requirements.yml | 9 +++ src/homework/08-ansible/8.4/playbook/site.yml | 78 +++++++++++++++++++ src/homework/08-ansible/8.4/readme.md | 77 ++++++++++++++++++ 10 files changed, 201 insertions(+), 1 deletion(-) create mode 100644 src/homework/08-ansible/8.4/playbook/.gitignore create mode 100644 src/homework/08-ansible/8.4/playbook/group_vars/clickhouse/vars.yml create mode 100644 src/homework/08-ansible/8.4/playbook/group_vars/lighthouse/vars.yml create mode 100644 src/homework/08-ansible/8.4/playbook/group_vars/vector/vars.yml create mode 100644 src/homework/08-ansible/8.4/playbook/inventory/prod.yml.example create mode 100644 src/homework/08-ansible/8.4/playbook/requirements.yml create mode 100644 src/homework/08-ansible/8.4/playbook/site.yml create mode 100644 src/homework/08-ansible/8.4/readme.md diff --git a/readme.md b/readme.md index bede02f..88b08d3 100644 --- a/readme.md +++ b/readme.md @@ -39,3 +39,4 @@ * [8.1. Введение в Ansible](/src/homework/08-ansible/8.1) * [8.2. Работа с Playbook](/src/homework/08-ansible/8.2) * [8.3. Использование Yandex Cloud](/src/homework/08-ansible/8.3) +* [8.4 Работа с Roles](/src/homework/08-ansible/8.4) diff --git a/src/homework/08-ansible/8.3/readme.md b/src/homework/08-ansible/8.3/readme.md index af0dffd..ef3c857 100644 --- a/src/homework/08-ansible/8.3/readme.md +++ b/src/homework/08-ansible/8.3/readme.md @@ -1,4 +1,4 @@ -Выполнение [домашнего задания](https://github.com/netology-code/mnt-homeworks/blob/MNT-13/08-ansible-02-playbook/README.md) +Выполнение [домашнего задания](https://github.com/netology-code/mnt-homeworks/blob/MNT-13/08-ansible-03-yandex/README.md) по теме "8.3. Использование Yandex Cloud". ## Q/A diff --git a/src/homework/08-ansible/8.4/playbook/.gitignore b/src/homework/08-ansible/8.4/playbook/.gitignore new file mode 100644 index 0000000..9da7295 --- /dev/null +++ b/src/homework/08-ansible/8.4/playbook/.gitignore @@ -0,0 +1,2 @@ +inventory/prod.yml +files/* diff --git a/src/homework/08-ansible/8.4/playbook/group_vars/clickhouse/vars.yml b/src/homework/08-ansible/8.4/playbook/group_vars/clickhouse/vars.yml new file mode 100644 index 0000000..b349f97 --- /dev/null +++ b/src/homework/08-ansible/8.4/playbook/group_vars/clickhouse/vars.yml @@ -0,0 +1,8 @@ +--- +clickhouse_version: "22.3.3.44" +clickhouse_dbs_custom: + - { "name": logs } +clickhouse_packages: + - clickhouse-client + - clickhouse-server + - clickhouse-common-sta diff --git a/src/homework/08-ansible/8.4/playbook/group_vars/lighthouse/vars.yml b/src/homework/08-ansible/8.4/playbook/group_vars/lighthouse/vars.yml new file mode 100644 index 0000000..0a24b3c --- /dev/null +++ b/src/homework/08-ansible/8.4/playbook/group_vars/lighthouse/vars.yml @@ -0,0 +1,6 @@ +--- +nginx_username: dannc +lighthouse_vcs: https://github.com/VKCOM/lighthouse.git +lighthouse_vcs_version: d701335c25cd1bb9b5155711190bad8ab852c2ce +lighthouse_location: /var/www/lighthouse +lighthouse_access_log_name: lighthouse diff --git a/src/homework/08-ansible/8.4/playbook/group_vars/vector/vars.yml b/src/homework/08-ansible/8.4/playbook/group_vars/vector/vars.yml new file mode 100644 index 0000000..3f1964b --- /dev/null +++ b/src/homework/08-ansible/8.4/playbook/group_vars/vector/vars.yml @@ -0,0 +1,6 @@ +--- +vector_version: 0.23.0 +vector_config_dir: /var/lib/vector +vector_config: + data_dir: /var/lib/vector + # todo добавить конфигурацию https://vector.dev/docs/reference/configuration/ diff --git a/src/homework/08-ansible/8.4/playbook/inventory/prod.yml.example b/src/homework/08-ansible/8.4/playbook/inventory/prod.yml.example new file mode 100644 index 0000000..af57fae --- /dev/null +++ b/src/homework/08-ansible/8.4/playbook/inventory/prod.yml.example @@ -0,0 +1,13 @@ +--- +clickhouse: + hosts: + clickhouse-01: + ansible_host: +vector: + hosts: + vector-01: + ansible_host: +lighthouse: + hosts: + lighthouse-01: + ansible_host: diff --git a/src/homework/08-ansible/8.4/playbook/requirements.yml b/src/homework/08-ansible/8.4/playbook/requirements.yml new file mode 100644 index 0000000..2c1217e --- /dev/null +++ b/src/homework/08-ansible/8.4/playbook/requirements.yml @@ -0,0 +1,9 @@ +--- +- src: git@github.com:AlexeySetevoi/ansible-clickhouse.git + scm: git + version: "1.13" + name: clickhouse +- src: git@github.com:Dannecron/netology-devops-ansible-lighthouse.git + scm: git + version: "1.0.1" + name: lighthouse diff --git a/src/homework/08-ansible/8.4/playbook/site.yml b/src/homework/08-ansible/8.4/playbook/site.yml new file mode 100644 index 0000000..03fc42c --- /dev/null +++ b/src/homework/08-ansible/8.4/playbook/site.yml @@ -0,0 +1,78 @@ +--- +- name: clickhouse + hosts: clickhouse + roles: + - clickhouse + tags: + - clickhouse + +- name: lighthouse + hosts: lighthouse + roles: + - lighthouse + tags: + - lighthouse + +- name: vector + hosts: vector + tasks: + - name: vector | install archive manager + become: true + ansible.builtin.yum: + name: + - tar + - name: vector | get distrib + ansible.builtin.get_url: + url: "https://packages.timber.io/vector/{{ vector_version }}/vector-{{ vector_version }}-x86_64-unknown-linux-musl.tar.gz" + dest: "./vector-{{ vector_version }}-x86_64-unknown-linux-musl.tar.gz" + mode: "755" + - name: vector | unpack distrib + ansible.builtin.unarchive: + src: "./vector-{{ vector_version }}-x86_64-unknown-linux-musl.tar.gz" + dest: "./" + remote_src: true + - name: vector | install + become: true + ansible.builtin.copy: + src: "vector-x86_64-unknown-linux-musl/bin/vector" + dest: "/usr/local/bin/" + remote_src: true + mode: "755" + - name: vector | check installed version + ansible.builtin.command: + cmd: vector --version + register: result + changed_when: + - 'vector_version not in result.stdout' + tags: + - vector_check_version + - name: vector | create data dir + become: true + ansible.builtin.file: + mode: "755" + owner: "{{ ansible_user_id }}" + group: "{{ ansible_user_gid }}" + path: "{{ vector_config_dir }}" + state: "directory" + - name: vector | template config + ansible.builtin.template: + src: "templates/vector.config.j2" + dest: "{{ vector_config_dir }}/vector.yaml" + mode: "755" + - name: vector | register as service + become: true + ansible.builtin.template: + src: "templates/vector.service.j2" + dest: "/etc/systemd/system/vector.service" + owner: "{{ ansible_user_id }}" + group: "{{ ansible_user_gid }}" + mode: "0644" + backup: true + - name: vector | start service + become: true + ansible.builtin.service: + name: vector + state: started + daemon_reload: true + tags: + - vector diff --git a/src/homework/08-ansible/8.4/readme.md b/src/homework/08-ansible/8.4/readme.md new file mode 100644 index 0000000..c269145 --- /dev/null +++ b/src/homework/08-ansible/8.4/readme.md @@ -0,0 +1,77 @@ +Выполнение [домашнего задания](https://github.com/netology-code/mnt-homeworks/blob/MNT-13/08-ansible-04-role/README.md) +по теме "8.4. Работа с Roles". + +## Q/A + +### Задание 1 + +> Подготовка к выполнению +> +> 1. (Необязательно) Познакомьтесь с [lighthouse](https://youtu.be/ymlrNlaHzIY?t=929) +> 2. Создайте два пустых публичных репозитория в любом своём проекте: vector-role и lighthouse-role. +> 3. Добавьте публичную часть своего ключа к своему профилю в github. + +Заведены новые репозитории: +- //todo vector +- [Dannecron/netology-devops-ansible-lighthouse](https://github.com/Dannecron/netology-devops-ansible-lighthouse) + +### Задание 2 + +> Основная часть +> +> Наша основная цель - разбить наш playbook на отдельные roles. +> Задача: сделать roles для clickhouse, vector и lighthouse и написать playbook для использования этих ролей. +> Ожидаемый результат: существуют три ваших репозитория: два с roles и один с playbook. +> +> 1. Создать в старой версии playbook файл `requirements.yml` и заполнить его следующим содержимым: +> +> ```yaml +> --- +> - src: git@github.com:AlexeySetevoi/ansible-clickhouse.git +> scm: git +> version: "1.11.0" +> name: clickhouse +> ``` + +Создан файл [requirements.yml](./playbook/requirements.yml). + +> 2. При помощи `ansible-galaxy` скачать себе эту роль. + +```shell +ansible-galaxy install -r requirements.yml +``` + +```text +Starting galaxy role install process +- extracting clickhouse to ~/.ansible/roles/clickhouse +- clickhouse (1.13) was installed successfully +``` + +__Warning__: Внутри роли используются тэги `always`, которые нужно игнорировать (`--skip-tags always`), +если данная роль не будет запускаться в рамках playbook. + +> 4. Создать новый каталог с ролью при помощи `ansible-galaxy role init vector-role`. +> 5. На основе tasks из старого playbook заполните новую role. Разнесите переменные между `vars` и `default`. +> 6. Перенести нужные шаблоны конфигов в `templates`. +> 7. Описать в `README.md` обе роли и их параметры. + +// todo сделать для vector + +> 9. Повторите шаги 3-6 для lighthouse. Помните, что одна роль должна настраивать один продукт. + +Новая роль создана и расположена в репозитории [Dannecron/netology-devops-ansible-lighthouse](https://github.com/Dannecron/netology-devops-ansible-lighthouse). + +Плюс, добавлена новая зависимость в [requirements.yml](./playbook/requirements.yml): + +```yaml +- src: git@github.com:Dannecron/netology-devops-ansible-lighthouse.git + scm: git + version: "1.0.1" + name: lighthouse +``` + +> 11. Выложите все roles в репозитории. Проставьте тэги, используя семантическую нумерацию. Добавьте roles в `requirements.yml` в playbook. +> 12. Переработайте playbook на использование roles. Не забудьте про зависимости lighthouse и возможности совмещения `roles` с `tasks`. +> 13. Выложите playbook в репозиторий. + +[Playbook](./playbook/site.yml) был переработан на использование ролей.