├── .travis.yml ├── LICENSE ├── README.md ├── defaults └── main.yml ├── files └── flocker-control.override ├── handlers └── main.yml ├── meta └── main.yml ├── tasks ├── centos_firewall.yml ├── centos_install.yml ├── ceph_install.yml ├── configure_agent.yml ├── configure_control_service.yml ├── configure_plugin.yml ├── debian_firewall.yml ├── debian_install.yml └── main.yml └── tests ├── agent.yml ├── inventory └── test.yml /.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | language: python 3 | python: "2.7" 4 | sudo: required 5 | dist: trusty 6 | 7 | before_install: 8 | # Make sure everything's up to date. 9 | - sudo apt-get update -qq 10 | 11 | install: 12 | # Install Ansible. 13 | - pip install ansible 14 | # Install flocker 15 | - sudo apt-get -y install gcc libffi-dev libssl-dev python2.7 python2.7-dev python-virtualenv 16 | - sudo pip install --find-links=https://s3.amazonaws.com/clusterhq-archive/python/index.html Flocker 17 | # Add ansible.cfg to pick up roles path. 18 | - "{ echo '[defaults]'; echo 'roles_path = ../'; } >> ansible.cfg" 19 | 20 | script: 21 | # Check the role/playbook's syntax. 22 | - "ansible-playbook -i tests/inventory tests/test.yml --syntax-check" 23 | # Make sure we can run all the plays 24 | - "ansible-playbook -i tests/inventory tests/test.yml --connection=local --extra-vars 'flocker_agent_yml_path=tests/agent.yml'" 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 ClusterHQ 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ansible Role: Flocker Installer 2 | 3 | [![Build Status](https://travis-ci.org/ClusterHQ/ansible-role-flocker.svg?branch=master)](https://travis-ci.org/ClusterHQ/ansible-role-flocker.svg?branch=master) 4 | 5 | ## Requirements 6 | 7 | * Docker must be installed on all Flocker agent nodes. 8 | * This role requires you install the Flocker Client on the machine running the ansible playbook. Certificates are generated on the local machine (in `flocker_local_tempdir`) using flocker-ca and then distributed to the nodes. For more information see [Installing the Flocker Client](https://docs.clusterhq.com/en/latest/flocker-standalone/install-client.html). 9 | * The user must supply the path to a local agent.yml flocker file. 10 | 11 | ## Role Variables 12 | 13 | flocker_control_service_groupname: flocker_control_service 14 | 15 | The name of an ansible host group that contains one host: the node hosting the flocker control service. The default value for this group name is flocker_control_serivce. If the host group is called something else, change this variable to match the host group name you've chosen. 16 | 17 | flocker_agents_groupname: flocker_agents 18 | 19 | Similar to flocker_control_service_groupname but represents the groupname of the Flocker agent nodes. 20 | 21 | flocker_agent_yml_path: "" 22 | 23 | The absolute path to an agent.yml file on the local ansible machine. For more information on creating agent.yml refer to Configuring the Nodes and Storage Backends https://docs.clusterhq.com/en/latest/flocker-standalone/configuring-nodes-storage.html 24 | 25 | flocker_cluster_name: my_flocker_cluster 26 | 27 | The name of the cluster. This name will be used when creating the cluster certificates and, in the default case, the directory on the local machine where copies of the certs and keys are created. 28 | 29 | # Warning: this folder will be deleted everytime the playbook is run 30 | flocker_local_tempdir: /tmp/{{ flocker_cluster_name }} 31 | 32 | The path to a folder that will be used to generate the cluster certificates and keys. This folder will not be cleaned up when the installation is finished. However, the folder will be deleted and recreated at the start of every provisioning run. 33 | 34 | flocker_api_cert_name: api_user 35 | 36 | A unique identifier for the API client. 37 | 38 | flocker_install_docker_plugin: True 39 | 40 | Set to True to install the Flocker Plugin for Docker. 41 | 42 | ## Example Playbook 43 | 44 | --- 45 | - hosts: nodes 46 | user: ubuntu 47 | roles: 48 | - role: ClusterHQ.flocker 49 | 50 | ## Example Invocation 51 | 52 | ansible-playbook -i inventory/hosts flocker_example_playbook.yml --extra-vars "flocker_agent_yml_path=/home/user/config_files/agent.yml" 53 | 54 | ## Example Inventory 55 | 56 | [flocker_control_service] 57 | computer1.example.com 58 | 59 | [flocker_agents] 60 | computer2.example.com 61 | computer3.example.com 62 | 63 | [nodes:children] 64 | flocker_control_service 65 | flocker_agents 66 | 67 | ## License 68 | 69 | MIT / BSD 70 | -------------------------------------------------------------------------------- /defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | # we have to configure the control service node and agent nodes 4 | # differently. To accomplish this we choose what to import based on 5 | # the host's inventory group name. Change these variables based what 6 | # you have named the inventory groups for these servers. 7 | flocker_control_service_groupname: flocker_control_service 8 | flocker_agents_groupname: flocker_agents 9 | flocker_docker_plugin_groupname: flocker_docker_plugin 10 | flocker_ceph_groupname: flocker_ceph 11 | 12 | # you must provide the absolute path to your flocker agent.yml file. 13 | flocker_agent_yml_path: "" 14 | 15 | flocker_cluster_name: my_flocker_cluster 16 | # Warning: this folder will be deleted everytime the playbook is run 17 | flocker_local_tempdir: /tmp/{{ flocker_cluster_name }} 18 | flocker_api_cert_name: api_user 19 | flocker_install_docker_plugin: true 20 | -------------------------------------------------------------------------------- /files/flocker-control.override: -------------------------------------------------------------------------------- 1 | start on runlevel [2345] 2 | stop on runlevel [016] -------------------------------------------------------------------------------- /handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: restart flocker-control 3 | service: name=flocker-control state=restarted 4 | sudo: True 5 | 6 | - name: restart flocker-dataset-agent 7 | service: name=flocker-dataset-agent state=restarted 8 | sudo: yes 9 | 10 | - name: restart flocker-container-agent 11 | service: name=flocker-container-agent state=restarted 12 | sudo: yes 13 | 14 | - name: restart flocker-docker-plugin 15 | service: name=flocker-docker-plugin state=restarted 16 | sudo: yes 17 | -------------------------------------------------------------------------------- /meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: Brendan Cox 4 | description: Install Flocker and distribute certificates 5 | company: ClusterHQ 6 | license: MIT 7 | min_ansible_version: 2.0 8 | platforms: 9 | - name: EL 10 | versions: 11 | - 7 12 | - name: Ubuntu 13 | versions: 14 | - trusty 15 | galaxy_tags: 16 | - flocker 17 | - installer 18 | - docker 19 | dependencies: [] 20 | -------------------------------------------------------------------------------- /tasks/centos_firewall.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: determine if firewalld installed 3 | command: "which firewall-cmd" 4 | register: has_firewalld 5 | ignore_errors: true 6 | tags: 7 | - firewall 8 | 9 | - name: determine if firewalld is running 10 | command: "firewall-cmd --state" 11 | sudo: yes 12 | register: firewalld_running 13 | when: has_firewalld.rc == 0 14 | ignore_errors: true 15 | tags: 16 | - firewall 17 | 18 | - name: reload firewall 19 | command: "firewall-cmd --reload" 20 | sudo: yes 21 | when: (has_firewalld.rc == 0) and (firewalld_running.stdout == "running") 22 | tags: 23 | - firewall 24 | 25 | - name: add flocker-control-api 26 | command: "firewall-cmd --permanent --add-service flocker-control-api" 27 | sudo: yes 28 | when: (has_firewalld.rc == 0) and (firewalld_running.stdout == "running") 29 | tags: 30 | - firewall 31 | 32 | - command: "firewall-cmd --add-service flocker-control-api" 33 | sudo: yes 34 | when: (has_firewalld.rc == 0) and (firewalld_running.stdout == "running") 35 | tags: 36 | - firewall 37 | 38 | - name: reload firewall 39 | command: "firewall-cmd --reload" 40 | sudo: yes 41 | when: (has_firewalld.rc == 0) and (firewalld_running.stdout == "running") 42 | tags: 43 | - firewall 44 | 45 | - command: "firewall-cmd --permanent --add-service flocker-control-agent" 46 | sudo: yes 47 | when: (has_firewalld.rc == 0) and (firewalld_running.stdout == "running") 48 | tags: 49 | - firewall 50 | 51 | - command: "firewall-cmd --add-service flocker-control-agent" 52 | sudo: yes 53 | when: (has_firewalld.rc == 0) and (firewalld_running.stdout == "running") 54 | tags: 55 | - firewall 56 | -------------------------------------------------------------------------------- /tasks/centos_install.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: get distro_info_string 3 | command: "rpm -E %dist" 4 | register: flocker_distro_info_string 5 | 6 | - name: install flocker repo 7 | yum: 8 | name: "https://clusterhq-archive.s3.amazonaws.com/centos/clusterhq-release{{ flocker_distro_info_string.stdout }}.noarch.rpm" 9 | state: present 10 | sudo: yes 11 | 12 | - name: install git 13 | yum: name=git 14 | sudo: yes 15 | 16 | - name: install flocker-node 17 | yum: name=clusterhq-flocker-node 18 | sudo: yes 19 | 20 | - name: install flocker-docker-plugin 21 | yum: name=clusterhq-flocker-docker-plugin 22 | sudo: yes 23 | when: flocker_install_docker_plugin 24 | -------------------------------------------------------------------------------- /tasks/ceph_install.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: install ceph driver 3 | command: /opt/flocker/bin/pip install git+https://github.com/ClusterHQ/ceph-flocker-driver.git@master 4 | sudo: yes 5 | 6 | -------------------------------------------------------------------------------- /tasks/configure_agent.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: remove old /tmp// 3 | command: rm -rf "{{ flocker_local_tempdir }}/{{ inventory_hostname }}" 4 | delegate_to: 127.0.0.1 5 | 6 | - name: create the directories to hold the agent certs 7 | file: 8 | path: "{{ flocker_local_tempdir }}/{{ inventory_hostname }}" 9 | state: directory 10 | delegate_to: 127.0.0.1 11 | 12 | - name: remove old certs 13 | file: path="/etc/flocker/{{ item }}" state=absent 14 | with_items: 15 | - cluster.crt 16 | - node.crt 17 | - node.key 18 | sudo: yes 19 | 20 | - name: copy agent.yml to the node 21 | copy: src={{ flocker_agent_yml_path }} dest=/etc/flocker/agent.yml owner=root 22 | sudo: yes 23 | when: not (flocker_agent_yml_path is undefined or flocker_agent_yml_path is none or flocker_agent_yml_path | trim == '') 24 | 25 | - name: create the node certs on the local machine 26 | shell: "flocker-ca create-node-certificate --outputpath={{ flocker_local_tempdir }}/{{ inventory_hostname }}/" 27 | args: 28 | chdir: "{{ flocker_local_tempdir }}" 29 | delegate_to: 127.0.0.1 30 | 31 | - name: copy cluster.crt to the node 32 | copy: 33 | src: "{{ flocker_local_tempdir }}/cluster.crt" 34 | dest: /etc/flocker/cluster.crt 35 | sudo: yes 36 | 37 | - name: copy the node cert to the correct agent node 38 | copy: 39 | src: "{{ item }}" 40 | dest: /etc/flocker/node.crt 41 | with_fileglob: "{{ flocker_local_tempdir }}/{{ inventory_hostname }}/*.crt" 42 | sudo: yes 43 | notify: 44 | - restart flocker-dataset-agent 45 | - restart flocker-container-agent 46 | 47 | - name: copy the key to the correct agent node 48 | copy: 49 | src: "{{ item }}" 50 | dest: /etc/flocker/node.key 51 | mode: 0600 52 | with_fileglob: "{{ flocker_local_tempdir }}/{{ inventory_hostname }}/*.key" 53 | sudo: yes 54 | notify: 55 | - restart flocker-dataset-agent 56 | - restart flocker-container-agent 57 | -------------------------------------------------------------------------------- /tasks/configure_control_service.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - assert: { that: "ansible_os_family | match('Debian') or ansible_os_family | match('RedHat')" } 3 | 4 | - name: create /tmp/ 5 | file: 6 | path: "{{ flocker_local_tempdir }}" 7 | state: directory 8 | delegate_to: 127.0.0.1 9 | 10 | - name: flocker-ca initialize 11 | shell: "flocker-ca initialize {{ flocker_cluster_name }}" 12 | args: 13 | chdir: "{{ flocker_local_tempdir }}" 14 | delegate_to: 127.0.0.1 15 | 16 | - name: flocker-ca create-control-certificate 17 | shell: "flocker-ca create-control-certificate {{ inventory_hostname }}" 18 | args: 19 | chdir: "{{ flocker_local_tempdir }}" 20 | delegate_to: 127.0.0.1 21 | 22 | - name: create plugin cert if its getting created 23 | shell: "flocker-ca create-api-certificate plugin-cert-20b0e0b9-7a4e-4c88-9dd3-7aae1201ac72" 24 | args: 25 | chdir: "{{ flocker_local_tempdir }}" 26 | delegate_to: 127.0.0.1 27 | when: flocker_install_docker_plugin 28 | 29 | - name: create API cert 30 | shell: "flocker-ca create-api-certificate {{ flocker_api_cert_name }}" 31 | args: 32 | chdir: "{{ flocker_local_tempdir }}" 33 | delegate_to: 127.0.0.1 34 | 35 | - name: copy API cert.crt to the control node 36 | copy: 37 | src: "{{ flocker_local_tempdir }}/{{ flocker_api_cert_name }}.crt" 38 | dest: /etc/flocker/{{ flocker_api_cert_name }}.crt 39 | sudo: yes 40 | 41 | - name: copy API cert.key to the control node 42 | copy: 43 | src: "{{ flocker_local_tempdir }}/{{ flocker_api_cert_name }}.key" 44 | dest: /etc/flocker/{{ flocker_api_cert_name }}.key 45 | sudo: yes 46 | 47 | - name: copy cluster.crt to the control node 48 | copy: 49 | src: "{{ flocker_local_tempdir }}/cluster.crt" 50 | dest: /etc/flocker/cluster.crt 51 | sudo: yes 52 | 53 | - name: copy control key to the control node 54 | copy: 55 | src: "{{ flocker_local_tempdir }}/control-{{ inventory_hostname }}.key" 56 | dest: /etc/flocker/control-service.key 57 | mode: 0600 58 | sudo: yes 59 | 60 | - name: copy control cert to the control node 61 | copy: 62 | src: "{{ flocker_local_tempdir }}/control-{{ inventory_hostname }}.crt" 63 | dest: /etc/flocker/control-service.crt 64 | notify: 65 | - restart flocker-control 66 | sudo: yes 67 | 68 | - name: Flocker Control API port 69 | lineinfile: 70 | dest: /etc/services 71 | line: 'flocker-control-api 4523/tcp # Flocker Control API port' 72 | sudo: yes 73 | 74 | - name: Flocker Control Agent port 75 | lineinfile: 76 | dest: /etc/services 77 | line: 'flocker-control-agent 4524/tcp # Flocker Control Agent port' 78 | sudo: yes 79 | 80 | - name: setup flocker-control runlevels 81 | copy: src=flocker-control.override dest=/etc/init/flocker-control.override 82 | sudo: yes 83 | 84 | - include: debian_firewall.yml 85 | when: ansible_os_family == 'Debian' 86 | 87 | - include: centos_firewall.yml 88 | when: ansible_os_family == 'RedHat' 89 | -------------------------------------------------------------------------------- /tasks/configure_plugin.yml: -------------------------------------------------------------------------------- 1 | 2 | - name: remove old certs 3 | file: path="/etc/flocker/{{ item }}" state=absent 4 | with_items: 5 | - plugin-cert-20b0e0b9-7a4e-4c88-9dd3-7aae1201ac72.crt 6 | - plugin-cert-20b0e0b9-7a4e-4c88-9dd3-7aae1201ac72.key 7 | sudo: yes 8 | 9 | - name: copy API cert.crt to the control node 10 | copy: 11 | src: "{{ flocker_local_tempdir }}/plugin-cert-20b0e0b9-7a4e-4c88-9dd3-7aae1201ac72.crt" 12 | dest: /etc/flocker/plugin.crt 13 | sudo: yes 14 | notify: 15 | - restart flocker-docker-plugin 16 | 17 | - name: copy API cert.key to the control node 18 | copy: 19 | src: "{{ flocker_local_tempdir }}/plugin-cert-20b0e0b9-7a4e-4c88-9dd3-7aae1201ac72.key" 20 | dest: /etc/flocker/{{ flocker_api_cert_name }}.key 21 | sudo: yes 22 | notify: 23 | - restart flocker-docker-plugin 24 | -------------------------------------------------------------------------------- /tasks/debian_firewall.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: open firewall for flocker-control-api 3 | command: "ufw allow flocker-control-api" 4 | sudo: yes 5 | 6 | - name: open firewall for flocker-control-agent 7 | command: "ufw allow flocker-control-agent" 8 | sudo: yes 9 | -------------------------------------------------------------------------------- /tasks/debian_install.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: get ubuntu version 3 | command: "lsb_release --release --short" 4 | register: flocker_ubuntu_release_version 5 | 6 | - name: install https for apt 7 | apt: 8 | name: apt-transport-https 9 | update_cache: yes 10 | sudo: yes 11 | 12 | - name: install software properties 13 | apt: name=software-properties-common 14 | sudo: yes 15 | 16 | - name: install git 17 | apt: name=git 18 | sudo: yes 19 | 20 | - name: install flocker-repo 21 | command: add-apt-repository -y "deb https://clusterhq-archive.s3.amazonaws.com/ubuntu/{{ flocker_ubuntu_release_version.stdout }}/$(ARCH) /" 22 | sudo: yes 23 | 24 | - name: install flocker-node (forcefully) 25 | apt: 26 | name: clusterhq-flocker-node 27 | update_cache: yes 28 | force: yes 29 | sudo: yes 30 | 31 | - name: install flocker-docker-plugin (forcefully) 32 | apt: 33 | name: clusterhq-flocker-docker-plugin 34 | update_cache: yes 35 | force: yes 36 | sudo: yes 37 | when: flocker_install_docker_plugin 38 | -------------------------------------------------------------------------------- /tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | ################################################################################ 3 | # Preliminaries: ensure that the user has set variables 4 | # properly and that things are where they should be on the 5 | # host machine. 6 | 7 | - name: "Assert that we are on a supported platform" 8 | assert: { that: "ansible_os_family | match('Debian') or ansible_os_family | match('RedHat')" } 9 | 10 | - name: "Assert that host groups are named correctly. If this fails, update *_groupnames from defaults/main.yml" 11 | assert: { that: "'{{ flocker_control_service_groupname }}' in group_names or '{{ flocker_agents_groupname }}' in group_names" } 12 | 13 | - name: "Assert that the user has set flocker_agent_yml_path" 14 | assert: { that: "flocker_agent_yml_path != '' " } 15 | 16 | - name: "See if flocker-ca is installed on the host system" 17 | command: which flocker-ca 18 | register: flocker_ca_output 19 | ignore_errors: True 20 | delegate_to: 127.0.0.1 21 | 22 | - name: "Fail when flocker-ca is not installed on this system" 23 | fail: msg="you must install flocker on the ansible host system. See https\://docs.clusterhq.com/en/latest/flocker-standalone/install-client.html" 24 | when: "flocker_ca_output.rc != 0" 25 | delegate_to: 127.0.0.1 26 | 27 | - name: "Stat flocker_agent_yml_path" 28 | stat: path={{ flocker_agent_yml_path }} 29 | register: agent_path_test 30 | delegate_to: 127.0.0.1 31 | 32 | - name: "Assert that flocker_agent_yml_filepath exists" 33 | assert: 34 | that: 35 | - agent_path_test.stat.exists 36 | 37 | - include: debian_install.yml 38 | when: ansible_os_family == 'Debian' 39 | 40 | - include: centos_install.yml 41 | when: ansible_os_family == 'RedHat' 42 | 43 | - name: remove old /tmp/ 44 | command: rm -rf "{{ flocker_local_tempdir }}" 45 | delegate_to: 127.0.0.1 46 | when: "'{{ flocker_control_service_groupname }}' in group_names" 47 | 48 | - name: remove old /etc/flocker on the node 49 | command: rm -rf /etc/flocker 50 | sudo: yes 51 | 52 | - name: create /etc/flocker on the node 53 | file: 54 | path: /etc/flocker 55 | state: directory 56 | mode: 0700 57 | sudo: yes 58 | 59 | - include: configure_control_service.yml 60 | when: "'{{ flocker_control_service_groupname }}' in group_names" 61 | 62 | - include: configure_agent.yml 63 | when: "'{{ flocker_agents_groupname }}' in group_names" 64 | 65 | - include: configure_plugin.yml 66 | when: "'{{ flocker_docker_plugin_groupname }}' in group_names" 67 | 68 | - include: ceph_install.yml 69 | when: "'{{ flocker_ceph_groupname }}' in group_names" 70 | 71 | - include: debian_firewall.yml 72 | when: "'{{ flocker_control_service_groupname }}' in group_names and ansible_os_family == 'Debian'" 73 | 74 | - include: centos_firewall.yml 75 | when: "'{{ flocker_control_service_groupname }}' in group_names and ansible_os_family == 'RedHat'" 76 | -------------------------------------------------------------------------------- /tests/agent.yml: -------------------------------------------------------------------------------- 1 | "version": 1 2 | "control-service": 3 | # In almost all situations, using 127.0.0.1 as our control node will 4 | # not allow correct authentication between the control-service and 5 | # the agent node but it'll work here since thats the inventory name. 6 | "hostname": 127.0.0.1 7 | "port": 4524 8 | 9 | "dataset": 10 | "backend": "loopback" 11 | "root_path": "/var/lib/flocker/loopback" 12 | -------------------------------------------------------------------------------- /tests/inventory: -------------------------------------------------------------------------------- 1 | [flocker_control_service] 2 | 127.0.0.1 3 | 4 | [flocker_agents] 5 | 127.0.0.1 6 | 7 | [flocker_docker_plugin] 8 | 127.0.0.1 9 | 10 | [nodes:children] 11 | flocker_control_service 12 | flocker_agents 13 | flocker_docker_plugin 14 | -------------------------------------------------------------------------------- /tests/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - hosts: nodes 3 | remote_user: travis 4 | vars: 5 | flocker_agent_yml_path: "./agent.yml" 6 | roles: 7 | - role: ../../ansible-role-flocker 8 | flocker_install_docker_plugin: true 9 | flocker_api_cert_name: plugin 10 | --------------------------------------------------------------------------------