AnsibleShipyard.marathon
ansible-marathon
Apache Marathon 的剧本,支持可选的 HAProxy 配置。
请注意,目前的 Ansible Marathon 版本需要 Java 8,安装方式请见下文。
安装
ansible-galaxy install JasonGiedymin.marathon
要求
- Java 8
- Apache Zookeeper
- Apache Mesos
角色变量
---
marathon_version: "1.3.6"
# Debian: Mesosphere apt 仓库 URL
marathon_apt_package: "marathon={{ marathon_version }}-*"
marathon_apt_repo: "deb http://repos.mesosphere.com/{{ansible_distribution|lower}} {{ansible_distribution_release|lower}} main"
# Debian apt 的 marathon 包优先级。如果为空(默认),则不使用优先级。
marathon_apt_pin_priority:
# RedHat: Mesosphere yum 仓库 URL
marathon_yum_package: "marathon-{{ marathon_version }}"
mesosphere_yum_repo: "http://repos.mesosphere.com/el/{{ os_version_major }}/noarch/RPMS/{{ mesosphere_releases[os_version_major] }}"
marathon_hostname: "{{ inventory_hostname }}"
marathon_port: 8080
marathon_env_java_opts: '-Xmx512m'
marathon_env_vars:
- "JAVA_OPTS={{ marathon_env_java_opts }}"
# 命令行参数:
# https://mesosphere.github.io/marathon/docs/command-line-flags.html
# Marathon 会读取 /etc/marathon/conf 下的文件并将其添加到 CLI
# Marathon 可以使用的 Zookeeper 路径,用于查找 Mesos 主节点并用作状态存储。
zookeeper_hostnames: "localhost:2181"
# Zookeeper 集群中的 Mesos 路径
mesos_zookeeper_path: "/mesos"
# Zookeeper 集群中的 Marathon 路径
marathon_zookeeper_path: "/marathon"
mesos_zookeeper_masters: "zk://{{ zookeeper_hostnames }}{{ mesos_zookeeper_path }}"
marathon_zookeeper_state: "zk://{{ zookeeper_hostnames }}{{ marathon_zookeeper_path }}"
# 安装 haproxy 配置脚本的路径。如果为空字符串 ```""```,则禁用 haproxy 配置。
haproxy_script_location: "/usr/local/bin"
# **Mesos** SSL 支持
mesos_ssl_enabled: false # 当启用 Mesos 的 SSL 时,设置为 true 并填写其他 `mesos_ssl_` 变量。
mesos_ssl_support_downgrade: false
mesos_ssl_key_file: # 启用 Mesos SSL 时,必须指向 SSL 密钥文件
mesos_ssl_cert_file: # 启用 Mesos SSL 时,必须指向 SSL 证书文件
# 可选项
artifact_store: ""
checkpoint: "true"
marathon_mesos_role: ""
marathon_additional_configs: []
# 例如:
# - name: task_lost_expunge_interval
# value: 900000
依赖
- https://github.com/geerlingguy/ansible-role-java
- https://github.com/AnsibleShipyard/ansible-zookeeper
- https://github.com/AnsibleShipyard/ansible-mesos
- 安装 HAProxy 以支持 HAProxy
示例剧本
- hosts: all
tasks:
- name: 为 Debian 安装 Java 8 的仓库
apt_repository: repo='ppa:openjdk-r/ppa'
when:
- ansible_os_family == 'Debian'
- ansible_distribution_version|version_compare(16.04, '<')
- name: 安装依赖
hosts: all
roles:
- role: geerlingguy.java
java_packages:
- openjdk-8-jdk
when: ansible_os_family == 'Debian'
- role: geerlingguy.java
java_packages:
- java-1.8.0-openjdk
when: ansible_os_family == 'RedHat'
- role: AnsibleShipyard.ansible-zookeeper
- role: JasonGiedymin.mesos
mesos_install_mode: master-slave
- role: JasonGiedymin.marathon
HAProxy 支持
配置了一个 cron 作业,运行 haproxy_dns_cfg 脚本,该脚本将查询 marathon API 获取应用程序,并为每个应用程序设置适当的前端(监听 80 端口)及其后端。
HAProxy 会查找以应用程序名称为前缀的主机名并路由到该后端。
使用这种技术,您可以将一个 DNS 主机通配符指向所有主节点(例如,*.example.com),您启动的应用程序(例如,“myapp”)将在 myapp.example.com 上可用。如果将 haproxy_script_location 设置为空字符串""
,将禁用此功能。仅当 HAProxy 存在时才会安装。
许可证
Apache 许可证第 2.0 版,2004 年 1 月
AnsibleShipyard
我们的相关剧本
作者信息
@AnsibleShipyard/开发者及其他人。