Skip to content
This repository has been archived by the owner on Jul 27, 2023. It is now read-only.

Commit

Permalink
Merge pull request #1239 from CiscoCloud/feature/custom-partitioner
Browse files Browse the repository at this point in the history
Add new partitioner script, which can do job on first boot
  • Loading branch information
ryane committed Apr 28, 2016
2 parents e718fcc + af414dd commit 0fd30d7
Show file tree
Hide file tree
Showing 19 changed files with 679 additions and 127 deletions.
11 changes: 11 additions & 0 deletions roles/docker/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,17 @@ dependencies into a standardized unit for software development." Their site has
Mantl to ship units of work around the cluster, combined
with :doc:`marathon`'s scheduling.

Variables
---------

.. data :: docker_source
Specify origin of docker packages.
Possible values: ``docker``, ``redhat``.
Default: ``docker` -- using packages from ``Docker, inc``.
Using a private Docker registry
-------------------------------

Expand Down
33 changes: 31 additions & 2 deletions roles/docker/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,41 @@
# Where do we get docker packages from?
# values are redhat or docker
docker_package_source: docker

docker_package: '{% if docker_package_source == "docker" %}docker-engine{% else %}docker{% endif %}'

# inversion of docker_package for upgrade/transition code path
docker_package_to_remove: '{% if docker_package_source == "docker" %}docker{% else %}docker-engine{% endif %}'

# Install the docker_gc package (prunes docker containers, images, and volumes)
docker_gc_install: true

do_private_docker_registry: false
docker_lvm_backed: "{% if provider in ['gce', 'openstack', 'aws'] %}True{% else %}False{% endif %}"

# Docker log options: See https://docs.docker.com/engine/admin/logging/overview/
docker_log_driver: journald

# Docker options
docker_options:
- "--dns {{ private_ipv4 }}"
- "--log-driver={{ docker_log_driver }}"
- "{% if docker_selinux_enabled %}--selinux-enabled {% endif %}"
- "{% if kube_build is defined %}--dns-search {{ cluster_name }}{% endif %}"

# Docker network options can be provided as a list
docker_network_options:
- "-H unix:///var/run/docker.sock"
# If you want to open the docker API, uncomment the line below.
# Please note this is insecure
# - "-H tcp://0.0.0.0:2375"

# Possible values: overlay (default), devicemapper, btrfs (unsupported)
# Used with docker-storage-setup
docker_storage_driver: overlay

## Settings for devicemapper thinprovider

## Settings for devicemapper thinprovider (docker-storage-setup)
## These are not used for overlay on lvm
## Refer to commentaries in ../templates/docker-storage-setup.conf.j2
## or `man lvcreate` for acceptable sizes, and their syntax
docker_lvm_data_volume_size: 40%FREE
Expand Down
8 changes: 8 additions & 0 deletions roles/docker/files/20-ExecStart.conf.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon $OPTIONS \
$MANTL_STORAGE_OPTIONS \
$DOCKER_NETWORK_OPTIONS \
$ADD_REGISTRY \
$BLOCK_REGISTRY \
$INSECURE_REGISTRY
6 changes: 6 additions & 0 deletions roles/docker/files/docker.repo
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
14 changes: 14 additions & 0 deletions roles/docker/tasks/lvm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,17 @@
tags:
- docker
- bootstrap

- name: configure lvm for docker
sudo: yes
template:
src: docker-volume.conf.j2
dest: /etc/mantl/filesystems.d/20-docker-volume.conf
mode: 0644
tags:
- docker
- disk

- name: process with mantl storage setup
sudo: yes
shell: "/usr/bin/mantl-storage-setup"
164 changes: 66 additions & 98 deletions roles/docker/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,140 +9,95 @@
- docker
- bootstrap

- name: install docker packages
- name: enable Docker, Inc. yum repo
sudo: yes
copy:
src: docker.repo
dest: /etc/yum.repos.d/docker.repo
tags:
- docker
when: docker_package_source is defined and docker_package_source == "docker"

- name: remove old docker package
sudo: yes
yum:
name: "{{ item }}"
state: present
state: absent
with_items:
- docker
- docker-selinux
- "{{ docker_package_to_remove }}"
- "{{ docker_package_to_remove }}-selinux"
tags:
- docker
- bootstrap

- name: check if docker storage already set up with devicemapper
- name: create rsyslog.d
sudo: yes
shell: "test -f /etc/sysconfig/docker-storage-setup && . /etc/sysconfig/docker-storage-setup && echo ${STORAGE_DRIVER:-NOT_SET}"
register: docker_storage_already_set_up
tags:
- disk
- docker

- name: set docker_configure_lvm
set_fact:
docker_configure_lvm: '{{ docker_lvm_backed|bool and docker_storage_driver in ["btrfs", "overlay"] and docker_storage_already_set_up.stdout in ["NOT_SET", "btrfs", "overlay"] }}'
file:
dest: /etc/rsyslog.d
state: directory
tags:
- disk
- docker

- name: create backing storage volume for docker storage
- name: create docker entry for syslogd
sudo: yes
lvol:
vg: "{{ volume_group_name }}"
lv: "{{ docker_volume_name }}"
size: "{{ docker_volume_size }}"
when: docker_configure_lvm|bool
copy:
dest: /etc/rsyslog.d/10-docker.conf
content: |
# Docker logging
:syslogtag, isequal, "docker:" /var/log/docker/docker.log
& ~
notify:
- restart rsyslog
tags:
- disk
- docker

- name: create backing storage filesystem for docker storage
sudo: yes
filesystem:
dev: "{{ docker_volume_device }}"
fstype: "{{ docker_volume_fs_type }}"
opts: "{{ docker_volume_fs_opts }}"
when: docker_configure_lvm|bool
tags:
- disk
- docker

- name: create mount point for docker storage
- name: create directory for systemd drop-ins
sudo: yes
file:
path: /etc/systemd/system/docker.service.d
state: directory
name: "{{ docker_volume_mount }}"
mode: 0755
when: docker_configure_lvm|bool
mode: 0755
tags:
- disk
- docker

- name: mount docker storage
# Not restart docker on file drop
- name: systemd drop-in for options
sudo: yes
mount:
state: mounted
name: "{{ docker_volume_mount }}"
fstype: "{{ docker_volume_fs_type }}"
src: "{{ docker_volume_device }}"
dump: 1
passno: 2
when: docker_configure_lvm|bool
tags:
- disk
- docker

- name: setup docker storage
sudo: yes
lineinfile:
dest: /etc/sysconfig/docker-storage-setup
regexp: "^{{ item.var }}=.*"
line: "{{ item.var }}={{ item.value }}"
state: present
create: yes
template:
src: "{{ item }}.j2"
dest: "/etc/systemd/system/docker.service.d/{{ item }}"
with_items:
- var: STORAGE_DRIVER
value: "{{ docker_storage_driver }}"
- var: DATA_SIZE
value: "{{ docker_lvm_data_volume_size }}"
- var: VG
value: "{{ volume_group_name }}"
- var: MIN_DATA_SIZE
value: "{{ docker_lvm_data_volume_size_min }}"
- var: AUTO_EXTEND_POOL
value: "{{ docker_lvm_auto_extend_pool }}"
when: docker_lvm_backed|bool and docker_storage_already_set_up.stdout == "NOT_SET"
tags:
- docker

- include: lvm.yml
when: docker_lvm_backed|bool and provider!="bare-metal"

- name: create rsyslog.d
sudo: yes
file:
dest: /etc/rsyslog.d
state: directory
- 10-options.conf
- 12-network-options.conf
- 14-storage-options.conf
notify:
- reload systemd
tags:
- docker

- name: create docker entry for syslogd
# Not restart docker on file drop
- name: systemd drop-in for ExecStart
sudo: yes
copy:
dest: /etc/rsyslog.d/10-docker.conf
content: |
# Docker logging
:syslogtag, isequal, "docker:" /var/log/docker/docker.log
& ~
notify:
- restart rsyslog
tags:
src: 20-ExecStart.conf.j2
dest: /etc/systemd/system/docker.service.d/20-ExecStart.conf
notify:
- reload systemd
tags:
- docker


- name: configure docker consul dns
- name: install docker packages
sudo: yes
lineinfile:
dest: /etc/sysconfig/docker
regexp: ^OPTIONS=
line: OPTIONS='{% if docker_selinux_enabled %}--selinux-enabled {% endif %}--dns {{ private_ipv4 }} --dns-search service.{{ consul_dns_domain }} {% if kube_build is defined %}--dns-search {{ cluster_name }}{% endif %} --log-driver=syslog'
yum:
name: "{{ item }}"
state: present
create: yes
notify:
- restart docker
with_items:
- "{{ docker_package }}"
- "{{ docker_package }}-selinux"
tags:
- docker
- bootstrap

- name: ensure docker config dir exists
sudo: yes
Expand Down Expand Up @@ -172,6 +127,9 @@
- docker
- skip_ansible_lint

- include: lvm.yml
when: docker_lvm_backed|bool

- name: enable docker
sudo: yes
service:
Expand All @@ -181,3 +139,13 @@
tags:
- docker
- bootstrap # needed to install Docker images during bootstrap

- name: install docker-gc
sudo: yes
yum:
name: docker-gc
state: latest
tags:
- docker
- bootstrap
when: docker_gc_install is defined and docker_gc_install|bool
3 changes: 3 additions & 0 deletions roles/docker/templates/10-options.conf.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# /etc/systemd/systemd/docker.service.d/10-options.conf
[Service]
Environment='OPTIONS={{ docker_options | join (" ") }}'
3 changes: 3 additions & 0 deletions roles/docker/templates/12-network-options.conf.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# /etc/systemd/systemd/docker.service.d/12-network-options.conf
[Service]
Environment='DOCKER_NETWORK_OPTIONS={{ docker_network_options | join (" ") }}'
3 changes: 3 additions & 0 deletions roles/docker/templates/14-storage-options.conf.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# /etc/systemd/systemd/docker.service.d/14-storage-options.conf
[Service]
EnvironmentFile=/etc/sysconfig/mantl-storage
25 changes: 25 additions & 0 deletions roles/docker/templates/docker-volume.conf.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{% if docker_lvm_backed|bool and docker_storage_driver in ["btrfs", "overlay"] %}
[volume:docker]
group = {{ volume_group_name }}
volume = {{ docker_volume_name }}
size = {{ docker_volume_size }}

[filesystem:docker]
dev = {{ docker_volume_device }}
fstype = {{ docker_volume_fs_type }}
mount = {{ docker_volume_mount }}
required_by = docker-storage-setup.service docker.service

[write:config]
file = /etc/sysconfig/mantl-storage
content = MANTL_STORAGE_OPTIONS=--storage-driver {{ docker_storage_driver }}
{% endif %}
{%if docker_lvm_backed|bool and docker_storage_driver == "devicemapper" %}
[thin:docker]
group = {{ volume_group_name }}
# Fixed volume name, to be compatible with docker-storage-setup
pool = docker-pool
size = {{ docker_lvm_data_volume_size }}
config = /etc/sysconfig/mantl-storage

{% endif %}
8 changes: 8 additions & 0 deletions roles/lvm/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,14 @@ Variables
- For GCE: /dev/disk/by-id/google-lvm
- For AWS: /dev/xvdh
.. debug_storage_setup:
Define source of partitioner script. If set to ``True`` then
``mantl-storage-setup`` script and associated files deployed from ansible tree,
otherwise it come with ``mantl-storage-setup`` package from Mantl repository.
default: ``False``
Facts
-----

Expand Down
2 changes: 2 additions & 0 deletions roles/lvm/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,5 @@ lvm_physical_device: >
{%- elif provider == 'aws' -%}/dev/xvdh
{%- elif provider == 'openstack' -%}/dev/vdb
{%- endif -%}{%- endif -%}
debug_storage_setup: False

0 comments on commit 0fd30d7

Please sign in to comment.