Оглавление:
Карта сайта:
Оглавление:
Карта сайта:
Чтобы Ansible смог найти и использовать роли, нужна специально разработанная структура каталогов. Создадим каталог с именем roles:
📁 ansible-demo +---📁 inventory | +---cluster +---📁 roles | +---📁 deploy | +---📁 tasks | +--- main.yaml | +---📁 preconfig | +---📁 meta | +--- main.yaml | +---📁 tasks | +--- main.yaml \---all.yaml
В этом roles определим роли, которые можно использовать повторно в нескольких плейбуках и на разных серверах. Каждая роль, которую мы создадим, требует собственного каталога.
В зависимости от сложности выполняемых задач роли может использовать один или несколько каталогов. Что представляют собой каталоги:
Переносим все задачи из palybook all.yaml в роль roles→preconfig→tasks→main.yaml. roles→preconfig→tasks→main.yaml:
--- - name: All configs hosts: cluster roles: - preconfig - deploy
main.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
Теперь файл tasks проще понимать, потому что он содержит только фактические шаги, которые будут выполняться при использовании роли preconfig.
Для роли deploy создадим свою задачу roles→deploy→tasks→main.yaml:
--- - name: Demo command: echo "Demo"
Для того чтобы указать порядок запуска ролей и метаданные в ролях можно использовать каталог meta. Добавим в нем описание плейбука и зависимости(dependencies) роли preconfig от deploy
argument_specs: main: short_description: Настройка серверов для работы с докером description: Настройка серверов для работы с докером licension: CUSTOM min_ansible_version: 2.9 author: Sergey Anchikin platforms: Ubuntu dependencies: - role: deploy