Add Ansible playbooks for deploying Mesos
Change-Id: If880af506bcbc8d755e9a441471979eac6a683a5 Partially-Implements: blueprint vagrant
This commit is contained in:
parent
fb92420fe0
commit
5ab80223eb
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
node_config_directory: "/etc/kolla"
|
||||
container_config_directory: "/var/lib/kolla/config_files"
|
||||
|
||||
api_interface: "{{ network_interface }}"
|
||||
|
||||
docker_registry_email:
|
||||
docker_registry:
|
||||
docker_namespace: "kollaglue"
|
||||
docker_registry_username:
|
||||
|
||||
docker_restart_policy: "always"
|
||||
|
||||
docker_common_options:
|
||||
auth_email: "{{ docker_registry_email }}"
|
||||
auth_password: "{{ docker_registry_password }}"
|
||||
auth_registry: "{{ docker_registry }}"
|
||||
auth_username: "{{ docker_registry_username }}"
|
||||
environment:
|
||||
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
||||
restart_policy: "{{ docker_restart_policy }}"
|
|
@ -0,0 +1,24 @@
|
|||
[master]
|
||||
localhost ansible_connection=local
|
||||
|
||||
[controller]
|
||||
localhost ansible_connection=local
|
||||
|
||||
[compute]
|
||||
localhost ansible_connection=local
|
||||
|
||||
[zookeeper:children]
|
||||
master
|
||||
|
||||
[mesos-master:children]
|
||||
master
|
||||
|
||||
[marathon:children]
|
||||
master
|
||||
|
||||
[chronos:children]
|
||||
master
|
||||
|
||||
[mesos-slave:children]
|
||||
controller
|
||||
compute
|
|
@ -0,0 +1,28 @@
|
|||
[master]
|
||||
master01
|
||||
master02
|
||||
master03
|
||||
|
||||
[controller]
|
||||
controller01
|
||||
controller02
|
||||
controller03
|
||||
|
||||
[compute]
|
||||
compute01
|
||||
|
||||
[zookeeper:children]
|
||||
master
|
||||
|
||||
[mesos-master:children]
|
||||
master
|
||||
|
||||
[marathon:children]
|
||||
master
|
||||
|
||||
[chronos:children]
|
||||
master
|
||||
|
||||
[mesos-slave:children]
|
||||
controller
|
||||
compute
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
chronos_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-chronos"
|
||||
chronos_tag: "{{ openstack_release }}"
|
||||
chronos_image_full: "{{ chronos_image }}:{{ chronos_tag }}"
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
- include: start.yml
|
||||
when: inventory_hostname in groups['chronos']
|
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
- name: Starting Chronos container
|
||||
kolla_docker:
|
||||
action: "start_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
environment:
|
||||
CHRONOS_HTTP_PORT: "4400"
|
||||
CHRONOS_MASTER: "zk://{% for host in groups['zookeeper'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:2181{% if not loop.last %},{% endif %}{% endfor %}/mesos"
|
||||
CHRONOS_ZK_HOSTS: "zk://{% for host in groups['zookeeper'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:2181{% if not loop.last %},{% endif %}{% endfor %}"
|
||||
image: "{{ chronos_image_full }}"
|
||||
name: "chronos"
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
marathon_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-marathon"
|
||||
marathon_tag: "{{ openstack_release }}"
|
||||
marathon_image_full: "{{ marathon_image }}:{{ marathon_tag }}"
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
- include: start.yml
|
||||
when: inventory_hostname in groups['zookeeper']
|
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
- name: Starting Marathon container
|
||||
kolla_docker:
|
||||
action: "start_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
environment:
|
||||
MARATHON_HOSTNAME: "{{ inventory_hostname }}"
|
||||
MARATHON_HTTPS_ADDRESS: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
|
||||
MARATHON_HTTP_ADDRESS: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
|
||||
MARATHON_MASTER: "zk://{% for host in groups['zookeeper'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:2181{% if not loop.last %},{% endif %}{% endfor %}/mesos"
|
||||
MARATHON_ZK: "zk://{% for host in groups['zookeeper'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:2181{% if not loop.last %},{% endif %}{% endfor %}/marathon"
|
||||
image: "{{ marathon_image_full }}"
|
||||
name: "marathon"
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
mesos_master_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-mesos-master"
|
||||
mesos_master_tag: "{{ openstack_release }}"
|
||||
mesos_master_image_full: "{{ mesos_master_image }}:{{ mesos_master_tag }}"
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
- include: start.yml
|
||||
when: inventory_hostname in groups['mesos-master']
|
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
- name: Starting Mesos master container
|
||||
kolla_docker:
|
||||
action: "start_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
environment:
|
||||
MESOS_HOSTNAME: "{{ inventory_hostname }}"
|
||||
MESOS_IP: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
|
||||
MESOS_ZK: "zk://{% for host in groups['zookeeper'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:2181{% if not loop.last %},{% endif %}{% endfor %}/mesos"
|
||||
MESOS_PORT: "5050"
|
||||
MESOS_LOG_DIR: "/var/log/mesos"
|
||||
MESOS_QUORUM: "3"
|
||||
MESOS_REGISTRY: "in_memory"
|
||||
MESOS_WORK_DIR: "/var/lib/mesos"
|
||||
image: "{{ mesos_master_image_full }}"
|
||||
name: "mesos_master"
|
||||
volumes:
|
||||
- /var/lib/mesos:/var/lib/mesos
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
mesos_slave_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-mesos-slave"
|
||||
mesos_slave_tag: "{{ openstack_release }}"
|
||||
mesos_slave_image_full: "{{ mesos_slave_image }}:{{ mesos_slave_tag }}"
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
- include: start.yml
|
||||
when: inventory_hostname in groups['mesos-slave']
|
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
- name: Starting Mesos slave container
|
||||
kolla_docker:
|
||||
action: "start_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
environment:
|
||||
MESOS_HOSTNAME: "{{ inventory_hostname }}"
|
||||
MESOS_IP: "{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}"
|
||||
MESOS_MASTER: "zk://{% for host in groups['zookeeper'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:2181{% if not loop.last %},{% endif %}{% endfor %}/mesos"
|
||||
MESOS_SWITCH_USER: "false"
|
||||
MESOS_LOG_DIR: "/var/log/mesos"
|
||||
MESOS_LOGGING_LEVEL: "INFO"
|
||||
image: "{{ mesos_slave_image_full }}"
|
||||
name: "mesos_slave"
|
||||
privileged: True
|
||||
volumes:
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
zookeeper_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-zookeeper"
|
||||
zookeeper_tag: "{{ openstack_release }}"
|
||||
zookeeper_image_full: "{{ zookeeper_image }}:{{ zookeeper_tag }}"
|
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
- name: Running ZooKeeper bootstrap container
|
||||
kolla_docker:
|
||||
action: "start_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
detach: False
|
||||
environment:
|
||||
KOLLA_BOOTSTRAP:
|
||||
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
||||
image: "{{ zookeeper_image_full }}"
|
||||
name: "bootstrap_zookeeper"
|
||||
volumes:
|
||||
- "{{ node_config_directory }}/zookeeper/:{{ container_config_directory }}/:ro"
|
||||
- "zookeeper_data:/var/lib/zookeeper"
|
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
- name: Ensuring config directory exists
|
||||
file:
|
||||
path: "{{ node_config_directory }}/zookeeper"
|
||||
state: "directory"
|
||||
recurse: yes
|
||||
|
||||
- name: Copying config.json
|
||||
template:
|
||||
src: "zookeeper.json.j2"
|
||||
dest: "{{ node_config_directory }}/zookeeper/config.json"
|
||||
|
||||
- name: Copying ZooKeeper configuration files
|
||||
template:
|
||||
src: "{{ item }}.j2"
|
||||
dest: "{{ node_config_directory }}/zookeeper/{{ item }}"
|
||||
with_items:
|
||||
- "zoo.cfg"
|
||||
- "myid"
|
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
- include: config.yml
|
||||
when: inventory_hostname in groups['zookeeper']
|
||||
|
||||
- include: bootstrap.yml
|
||||
when: inventory_hostname in groups['zookeeper']
|
||||
|
||||
- include: start.yml
|
||||
when: inventory_hostname in groups['zookeeper']
|
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
- name: Starting ZooKeeper container
|
||||
kolla_docker:
|
||||
action: "start_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
image: "{{ zookeeper_image_full }}"
|
||||
name: "zookeeper"
|
||||
volumes:
|
||||
- "{{ node_config_directory }}/zookeeper/:{{ container_config_directory }}/:ro"
|
||||
- "zookeeper_data:/var/lib/zookeeper"
|
|
@ -0,0 +1 @@
|
|||
{{ groups['zookeeper'].index(inventory_hostname) + 1 }}
|
|
@ -0,0 +1,8 @@
|
|||
tickTime=3000
|
||||
initLimit=10
|
||||
syncLimit=5
|
||||
clientPort=2181
|
||||
{% for host in groups['zookeeper'] %}
|
||||
server.{{ loop.index }}={{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:2888:3888
|
||||
{% endfor %}
|
||||
dataDir=/var/lib/zookeeper
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"command": "/opt/mesosphere/zookeeper/bin/zkServer.sh start-foreground",
|
||||
"config_files": [
|
||||
{
|
||||
"source": "{{ container_config_directory }}/zoo.cfg",
|
||||
"dest": "/etc/zookeeper/conf/zoo.cfg",
|
||||
"owner": "zookeeper",
|
||||
"perm": "0600"
|
||||
},
|
||||
{
|
||||
"source": "{{ container_config_directory }}/myid",
|
||||
"dest": "/var/lib/zookeeper/myid",
|
||||
"owner": "zookeeper",
|
||||
"perm": "0600"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
---
|
||||
- hosts:
|
||||
- zookeeper
|
||||
roles:
|
||||
- { role: zookeeper,
|
||||
tags: zookeeper }
|
||||
|
||||
- hosts:
|
||||
- mesos-master
|
||||
roles:
|
||||
- { role: mesos-master,
|
||||
tags: mesos-master }
|
||||
|
||||
- hosts:
|
||||
- marathon
|
||||
roles:
|
||||
- { role: marathon,
|
||||
tags: marathon }
|
||||
|
||||
- hosts:
|
||||
- chronos
|
||||
roles:
|
||||
- { role: chronos,
|
||||
tags: chronos }
|
||||
|
||||
- hosts:
|
||||
- mesos-slave
|
||||
roles:
|
||||
- { role: mesos-slave,
|
||||
tags: mesos-slave }
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
network_interface: "eth2"
|
||||
docker_registry: "operator.local:5000"
|
||||
docker_namespace: "kollaglue"
|
||||
kolla_base_distro: "centos"
|
||||
kolla_install_type: "binary"
|
||||
openstack_release: "2.0.0"
|
||||
config_strategy: "COPY_ONCE"
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
docker_registry_password:
|
Loading…
Reference in New Issue