troykinsella.concourse
ansible-concourse
Роль Ansible для управления Concourse CI.
Объем
Эта роль предназначена для управления установкой веб-сервиса Concourse CI (ATC/TSA) или рабочего сервиса.
Она:
- (По желанию) создает пользователя и группу
concourseдля запуска процесса демона. - (По желанию) форматирует и монтирует том, в котором выполняются задачи Concourse.
- Устанавливает сервис
systemdпод названиемconcourse-webи/илиconcourse-worker. - Загружает бинарный архив Concourse с официального сайта.
- Создает обертку-скрипт, который перехватывает параметры, передаваемые в исполняемый файл.
- Устанавливает необходимые ssh-ключи, предоставленные через переменные.
Она не:
- Генерирует ssh-ключи.
- Управляет базой данных Postgres.
- Управляет облачной инфраструктурой.
Установка
ansible-galaxy install troykinsella.concourse
Ветки
master: Concourse 7.x (7.1.0)support/6.x: Concourse 6.xsupport/5.x: Concourse 5.xsupport/4.x: Concourse 4.xsupport/3.x: Concourse 3.x
Примечание: Concourse вносит изменения в варианты команд, которые не совместимы с предыдущими версиями в рамках мажорных версий, поэтому эти ветки, скорее всего, не будут поддерживать ранние минорные или патч-ревизии мажорной версии. Последняя версия, использованная в тестировании, указана в скобках.
Переменные роли
Смотрите defaults/main.yml для значений по умолчанию, которые не указаны ниже. Многие из этих переменных логично соотносятся с параметрами, передаваемыми бинарному файлу Concourse при запуске. Выполните concourse web -h или concourse worker -h для получения более подробной информации.
Примечание: Большинство переменных имеют разумные значения по умолчанию и обычно не требуют определения, но могут быть установлены для управления соответствующим поведением. См. примеры для минимального набора конфигурации.
Переменные обслуживания
concourse_force_restart: Необязательно. По умолчанию: "no". Запускает перезапуск веб-сервисов и/или рабочих сервисов, независимо от того, изменялась ли конфигурация.
Переменные пользователя
concourse_manage_user: Необязательно. По умолчанию: "yes". Управляет системным пользователем, которому назначена собственность на файлы.concourse_user: Необязательно. Пользователь, который будет владеть каталогом установки Concourse и исполняемым процессом.concourse_uid: Необязательно. Идентификатор пользователя.concourse_group: Необязательно. Группа, которая будет владеть каталогом установки Concourse и исполняемым процессом.concourse_gid: Необязательно. Идентификатор группы.
Переменные установки
concourse_version: Необязательно. Версия Concourse для установки.concourse_install_prefix_dir: Необязательно. Каталог префикса, в котором будет размещен каталог установки Concourse. В этот каталог также будет загружен архив Concourse во время установки.concourse_install_dir: Необязательно. Путь к каталогу, в который будет распакован архив Concourse.concourse_binary_path: Необязательно. Абсолютный путь к бинарному файлу Concourse.concourse_bin_dir: Необязательно. Каталог, в котором находится бинарный файл Concourse и связанные скрипты.concourse_etc_dir: Необязательно. Каталог, в котором будут созданы файлы, связанные с Concourse.concourse_archive_name: Необязательно. Имя файла архива версии Concourse для установки.concourse_archive_url: Необязательно. URL, по которому можно загрузить архив версии Concourse.concourse_archive_checksum: Необязательно. Контрольная сумма архива версии Concourse для проверки загруженного архива.concourse_archive_os: Необязательно. Операционная система, для которой загружается архив версии Concourse.concourse_archive_arch: Необязательно. Архитектура системы, для которой загружается архив версии Concourse.concourse_archive_fetch_timeout: Необязательно. Время ожидания в секундах для загрузки архива версии Concourse.concourse_archive_delete_after_unarchive: Необязательно. По умолчанию: "yes". Удаляет архив версии после его распаковки.concourse_binary_mode: Необязательно. Режим файла бинарного файла Concourse.concourse_etc_files_mode: Необязательно. Режим файла всех файлов, хранящихся вconcourse_etc_dir.
Общие переменные
concourse_service_enabled: Необязательно. По умолчанию: "yes". Управляет сервисомsystemdдля экземпляра Concoursewebи/илиworker.concourse_service_start: Необязательно. По умолчанию: "yes". Запускает сервис(ы)systemdдля Concoursewebи/илиworker.concourse_log_level: Необязательно. Минимальный уровень логов для отображения. [debug|info|error|fatal]concourse_env_file: Необязательно. Файл, содержащий переменные окружения, который передается в атрибутEnvironmentFileфайла юнита сервисаsystemd. Это полезно для конфигурации, управляемой вне плейбука. Если конфигурация должна управляться плейбуком,concourse_web_envи/илиconcourse_worker_env- лучший выбор.
Переменные веб-сервиса
concourse_web: Необязательно. Установите значение "yes", чтобы установить Concourse ATC.concourse_bind_ip: Необязательно. IP-адрес, по которому будет слушаться веб-трафик.concourse_bind_port: Необязательно. Порт, по которому будет слушаться HTTP-трафик.concourse_tls_bind_port: Необязательно. Порт, по которому будет слушаться HTTPS-трафик.concourse_tls_certificate: Необязательно. Содержимое TLS-сертификата для использования при завершении HTTPS-соединения.concourse_tls_certificate_path: Необязательно. Удаленный путь файла TLS-сертификата для использования при завершении HTTPS-соединения. Обычно нужно указать толькоconcourse_tls_certificate.concourse_tls_key: Необязательно. Содержимое ключа TLS для использования при завершении HTTPS-соединения.concourse_tls_key_path: Необязательно. Удаленный путь файла ключа TLS для использования при завершении HTTPS-соединения. Обычно нужно указать толькоconcourse_tls_key.concourse_peer_address: Необязательно. URL, по которому этот ATC может быть достигнут из других ATC в кластере.concourse_external_url: Необязательно. URL, по которому любой ATC может быть достигнут извне.concourse_web_launcher_path: Необязательно. Путь к скрипту, который запускает процесс веб-сервиса Concourse.concourse_web_launcher_mode: Необязательно. Режим файла скрипта распуска веб-сервиса.concourse_cli_artifacts_dir: Необязательно. Значение параметра--cli-artifacts-dir.concourse_authorized_worker_keys_path: Необязательно. Путь к файлу авторизованных ключей рабочих процессов.concourse_host_key_path: Необязательно. Путь к файлу ключа хоста.concourse_session_signing_key: Обязательно. Ключ подписи сессии.concourse_session_signing_key_path: Необязательно. Путь к файлу ключа подписи сессии.concourse_encryption_key: Необязательно. Ключ длиной 16 или 32 символа, используемый для шифрования конфиденциальных данных перед их сохранением в базе данных.concourse_old_encryption_key: Необязательно. Ранее использованный ключ шифрования. Если предоставлен без нового ключа, данные шифруются. Если предоставлен с новым ключом, данные пересчитываются.concourse_host_key: Обязательно. Ключ хоста.concourse_authorized_worker_keys: Обязательно. Конкатенированные авторизованные ключи рабочих процессов.concourse_auth_duration: Необязательно. Длительность действия токенов.concourse_resource_checking_interval: Необязательно. Интервал проверки новых версий ресурсов.concourse_base_resource_type_defaults: Необязательно. Хэш значений по умолчанию для типов ресурсов в кластере.concourse_base_resource_type_defaults_file: Необязательно. Путь к файлу значений по умолчанию для типов ресурсов.concourse_web_options: Необязательно. Другие неуправляемые параметры для передачи вconcourse.concourse_web_env: Необязательно. Хэш переменных окружения, доступных для процессаconcourse web.
Переменные PostgreSQL веб-сервиса
concourse_postgres_host: Необязательно. Хост Postgres, к которому нужно подключиться.concourse_postgres_port: Необязательно. Порт Postgres, к которому нужно подключиться.concourse_postgres_socket: Необязательно. Путь к сокету Unix для подключения.concourse_postgres_user: Необязательно. Пользователь Postgres для входа.concourse_postgres_password: Необязательно. Пароль пользователя Postgres.concourse_postgres_ssl_mode: Необязательно. Использовать ли SSL для подключения к Postgres.concourse_postgres_ca_cert: Необязательно. Расположение файла сертификата CA Postgres.concourse_postgres_client_cert: Необязательно. Расположение файла клиентского сертификата Postgres.concourse_postgres_client_key: Необязательно. Расположение файла клиентского ключа Postgres.concourse_postgres_connect_timeout: Необязательно. Время ожидания подключения к Postgres.concourse_postgres_database: Необязательно. Имя базы данных Postgres.
Переменные локальной аутентификации веб-сервиса
concourse_local_users: Необязательно. Список учетных данных пользователей Concourse, которые добавляются как локальные пользователи. Элементы - это объекты с полямиnameиpassword(см. пример). Пароли могут быть в открытом виде или закодированы с помощью bcrypt.concourse_main_team_local_users: Необязательно. Список разрешенных локальных пользователей Concourse (из предоставленного списка локальных пользователей).
Переменные аутентификации через GitHub веб-сервиса
concourse_github_client_id: Необязательно. Клиентский идентификатор GitHub.concourse_github_client_secret: Необязательно. Секрет клиента GitHub.concourse_main_team_github_users: Необязательно. Список разрешенных пользователей GitHub.concourse_main_team_github_orgs: Необязательно. Список разрешенных организаций GitHub.concourse_main_team_github_teams: Необязательно. Список разрешенных команд GitHub, отформатированный как "org:team".
Другие методы аутентификации веб-сервиса
Не поддерживается. Сделайте это сами, предоставив параметры команды concourse web с помощью переменной concourse_web_options.
Переменные рабочего сервиса
concourse_worker: Необязательно. Установите значение "yes", чтобы установить рабочего процесса Concourse.concourse_worker_launcher_path: Необязательно. Путь к скрипту, который запускает процесс рабочего.concourse_worker_land_path: Необязательно. Путь к скрипту, который помещает рабочего на землю.concourse_worker_retire_path: Необязательно. Путь к скрипту, который выводит рабочего из эксплуатации.concourse_worker_binary_mode: Необязательно. Режим файла скрипта запуска, заземления и вывода рабочего.concourse_worker_land_on_stop: Необязательно. По умолчанию: "no". Выполнитьconcourse land-workerпри остановке сервиса.concourse_worker_retire_on_stop: Необязательно. По умолчанию: "yes". Выполнитьconcourse retire-workerпри остановке сервиса.concourse_work_dir: Необязательно. Каталог, в котором рабочий выполняет свои задачи.concourse_tsa_public_key_path: Необязательно. Путь к файлу открытого ключа TSA.concourse_tsa_worker_key_path: Необязательно. Путь к файлу закрытого ключа рабочего.concourse_tsa_host: Обязательно. Значение параметра--tsa-host.concourse_tsa_public_key: Обязательно. Открытый ключ TSA.concourse_tsa_worker_key: Обязательно. Закрытый ключ рабочего TSA.concourse_worker_tag: Необязательно. Значение параметра--tag.concourse_baggageclaim_driver: Необязательно. Драйвер для управления томами.concourse_worker_options: Необязательно. Другие неуправляемые параметры для передачи вconcourse.concourse_worker_env: Необязательно. Хэш переменных окружения, доступных для процессаconcourse worker.concourse_manage_work_volume: Необязательно. По умолчанию: "no". Активировать управление рабочим томом.concourse_work_volume_device: Обязательно, еслиconcourse_manage_work_volumeравно "yes". Устройство для монтирования в качестве рабочего тома.concourse_work_volume_fs_type: Необязательно. Тип файловой системы рабочего тома. По умолчанию устанавливаетсяbtrfsилиext4в зависимости от значенияconcourse_baggageclaim_driver.concourse_work_volume_fs_opts: Необязательно. Список параметров, которые будут переданы в команду mkfs при создании файловой системы рабочего тома.concourse_work_volume_fs_force_create: Необязательно. По умолчанию: "no". Если да, позволяет создать новую файловую систему рабочего тома на устройстве, которое уже имеет файловую систему.concourse_work_volume_fs_resize: Необязательно. По умолчанию: "no". Если да, если размер блочного устройства рабочего тома и файловой системы различаются, увеличивает файловую систему до доступного пространства.concourse_work_volume_mount_path: Необязательно. Каталог, в который будет монтироваться рабочий том.concourse_work_volume_mount_opts: Необязательно. Параметры монтирования рабочего тома.
Пример плейбука
- hosts: atc
roles:
- role: troykinsella.concourse
concourse_web: yes
concourse_authorized_worker_keys:
- "{{ worker_public_key }}"
concourse_postgres_host: concoursedb.abc123.us-east-1.rds.amazonaws.com
concourse_postgres_user: concourse
concourse_postgres_password: changeme
concourse_postgres_database: atc
concourse_local_users:
- name: admin
password: my_bcrypted_password
concourse_main_team_local_users:
- admin
concourse_external_url: http://concourse.example.com
- hosts: workers
roles:
- role: troykinsella.concourse
concourse_worker: yes
concourse_tsa_host: my-atc
concourse_tsa_public_key: "{{ host_pub_key }}"
concourse_tsa_worker_key: "{{ worker_key }}"
concourse_worker_env:
CONCOURSE_GARDEN_NETWORK_POOL: 10.254.0.0/16
CONCOURSE_GARDEN_MAX_CONTAINERS: 512
CONCOURSE_GARDEN_DOCKER_REGISTRY: https://docker.my-private-registry.org
Тестирование
Предварительные условия:
- Установите Docker
Для запуска тестов serverspec:
docker build .
Участники
- gaelL
- troykinsella (Отвечающий за поддержку)
Лицензия
MIT © Troy Kinsella
ansible-galaxy install troykinsella.concourse