Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
linux:ansible:roles [2023/12/23 19:51] werwolf |
linux:ansible:roles [2023/12/23 20:02] (текущий) werwolf [meta данные] |
||
|---|---|---|---|
| Строка 30: | Строка 30: | ||
| * 📁 **tasks**: содержит один или несколько файлов с задачами, которые определяются в разделе tasks обычного плейбука Ansible. Эти задачи могут напрямую ссылаться на файлы и шаблоны, содержащиеся в соответствующих каталогах внутри роли, без необходимости указывать полный путь к файлу. | * 📁 **tasks**: содержит один или несколько файлов с задачами, которые определяются в разделе tasks обычного плейбука Ansible. Эти задачи могут напрямую ссылаться на файлы и шаблоны, содержащиеся в соответствующих каталогах внутри роли, без необходимости указывать полный путь к файлу. | ||
| * 📁 **vars**: переменные для роли могут быть указаны в файлах внутри каталога, а затем ссылаться на них в другом месте роли. | * 📁 **vars**: переменные для роли могут быть указаны в файлах внутри каталога, а затем ссылаться на них в другом месте роли. | ||
| + | |||
| + | ==== Превращаем плейбук в роль ==== | ||
| + | |||
| + | Переносим все задачи из palybook **all.yaml** в роль **roles->preconfig->tasks->main.yaml**. | ||
| + | roles->preconfig->tasks->main.yaml: | ||
| + | <code yaml> | ||
| + | --- | ||
| + | - name: All configs | ||
| + | hosts: cluster | ||
| + | roles: | ||
| + | - preconfig | ||
| + | - deploy | ||
| + | |||
| + | </code> | ||
| + | |||
| + | main.yaml: | ||
| + | <code yaml> | ||
| + | --- | ||
| + | - name: Установка Docker | ||
| + | block: | ||
| + | - name: Create user # Первая задача | ||
| + | vars: # lsb_release -a - узнать версию ubuntu | ||
| + | user: werwolf | ||
| + | user: | ||
| + | name: "{{ user }}" | ||
| + | state: present | ||
| + | |||
| + | - name: Добавим universe | ||
| + | apt_repository: # lsb_release -a - узнать версию ubuntu | ||
| + | repo: "deb http://archive.ubuntu.com/ubuntu {{ ansible_distribution_release }} universe" | ||
| + | state: present | ||
| + | |||
| + | - name: Установка дополнительных пакетов | ||
| + | apt: | ||
| + | name: | ||
| + | - apt-transport-https | ||
| + | - ca-certificates | ||
| + | - curl | ||
| + | - gnupg | ||
| + | update-cache: yes | ||
| + | cache_valid_time: 86400 | ||
| + | state: present | ||
| + | - name: добавление ключа Docker | ||
| + | apt_key: | ||
| + | url: https://download.docker.com/linux/ubuntu/gpg | ||
| + | state: present | ||
| + | - name: Установка стабильного репозитория | ||
| + | apt_repository: | ||
| + | repo: > | ||
| + | deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] | ||
| + | https://download.docker.com/linux/ubuntu | ||
| + | {{ ansible_distribution_release }} stable | ||
| + | state: present | ||
| + | update-cache: yes | ||
| + | filename: docker | ||
| + | - name: Установка Docker-ce | ||
| + | apt: | ||
| + | name: docker-ce | ||
| + | update-cache: yes | ||
| + | cache_valid_time: 86400 | ||
| + | - name: Проверка что docker установлен и перезагружен | ||
| + | service: | ||
| + | name: docker | ||
| + | state: restarted | ||
| + | enabled: yes | ||
| + | become: true # общий для всего блока вызов sudo | ||
| + | - name: Установка Docker-compose | ||
| + | block: | ||
| + | - name: получение последней версии docker-compose | ||
| + | uri: | ||
| + | url: https://api.github.com/repos/docker/compose/releases/latest | ||
| + | body_format: json | ||
| + | register: release | ||
| + | - name: Установка docker-compose | ||
| + | get_url: | ||
| + | url: "https://github.com/docker/compose/releases/download/{{ release.json.tag_name }}/docker-compose-linux-x86_64" | ||
| + | dest: /usr/local/bin/docker-compose | ||
| + | mode: 0755 | ||
| + | become: yes | ||
| + | - name: завершени установки | ||
| + | block: | ||
| + | - name: Добавление пользователя в группу Docker | ||
| + | user: | ||
| + | name: werwolf | ||
| + | groups: docker | ||
| + | append: yes | ||
| + | - name: Перезагрузка сервера | ||
| + | reboot: | ||
| + | msg: "Rebooting machine in 5 seconds" | ||
| + | become: yes | ||
| + | </code> | ||
| + | |||
| + | Теперь файл tasks проще понимать, потому что он содержит только фактические шаги, которые будут выполняться при использовании роли **preconfig**. | ||
| + | |||
| + | Для роли **deploy** создадим свою задачу | ||
| + | roles->deploy->tasks->main.yaml: | ||
| + | <code yaml> | ||
| + | --- | ||
| + | - name: Demo | ||
| + | command: echo "Demo" | ||
| + | </code> | ||
| + | |||
| + | ==== meta данные ==== | ||
| + | Для того чтобы указать порядок запуска ролей и метаданные в ролях можно использовать каталог meta. | ||
| + | Добавим в нем описание плейбука и зависимости(**dependencies**) роли **preconfig** от **deploy** | ||
| + | |||
| + | <code yaml> | ||
| + | argument_specs: | ||
| + | main: | ||
| + | short_description: Настройка серверов для работы с докером | ||
| + | description: Настройка серверов для работы с докером | ||
| + | licension: CUSTOM | ||
| + | min_ansible_version: 2.9 | ||
| + | author: Sergey Anchikin | ||
| + | platforms: Ubuntu | ||
| + | dependencies: | ||
| + | - role: deploy | ||
| + | </code> | ||
| + | |||
| + | |||