Repository: incubator-myriad
Updated Branches:
  refs/heads/master f5e7406f8 -> 47c7be0de


MYRIAD-263 Add HDFS as system service in DC/OS vagrant testbed

The local development environment based on vagrant-libvirt (DC/OS)
needs deploy HDFS as foundation for Myriad. We have available HDFS
as Mesos framework at Mesosphere Universe, however running this
framework is not straightforward. So I propose deploy HDFS as systemd services,
this is easy and allow us focus the in our development (Myriad).

JIRA:
    [MYRIAD-263] https://issues.apache.org/jira/browse/MYRIAD-263

Pull Request:
    Closes #110

Author:    Javi Roman <jroman.espi...@gmail.com>
Date:      Sat Apr 21 13:11:48 2018 +0200


Project: http://git-wip-us.apache.org/repos/asf/incubator-myriad/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-myriad/commit/47c7be0d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-myriad/tree/47c7be0d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-myriad/diff/47c7be0d

Branch: refs/heads/master
Commit: 47c7be0de1c91470c766dda06c432c282b22bb01
Parents: f5e7406
Author: Javi Roman <jroman.espi...@gmail.com>
Authored: Sat Apr 21 13:11:48 2018 +0200
Committer: Javi Roman <javiro...@apache.org>
Committed: Sat May 5 09:40:51 2018 +0200

----------------------------------------------------------------------
 vagrant/libvirt/dcos/Vagrantfile                |  6 +-
 .../provisioning/group_vars/all/defaults.yml    | 26 ++++++++
 .../provisioning/roles/common/tasks/main.yml    |  3 +
 .../roles/common/templates/java.sh.j2           | 23 +++++++
 .../roles/dcos-setup/tasks/main.yml             |  1 -
 .../provisioning/roles/devel/tasks/main.yml     | 42 +++++++++++++
 .../roles/hadoop/files/core-site.xml            | 23 +++++++
 .../hadoop/files/hadoop-hdfs-datanode.service   | 16 +++++
 .../hadoop/files/hadoop-hdfs-namenode.service   | 15 +++++
 .../roles/hadoop/files/hdfs-site.xml            | 34 ++++++++++
 .../roles/hadoop/tasks/datanode.yml             | 42 +++++++++++++
 .../roles/hadoop/tasks/download.yml             | 51 +++++++++++++++
 .../provisioning/roles/hadoop/tasks/main.yml    | 56 +++++++++++++++++
 .../roles/hadoop/tasks/namenode.yml             | 65 ++++++++++++++++++++
 .../roles/jbod-disks/tasks/main.yml             | 64 +++++++++++++++++++
 .../roles/nfs-client/tasks/main.yml             | 30 +++++++++
 .../dcos/provisioning/roles/nfs/tasks/main.yml  | 41 ++++++++++++
 .../provisioning/roles/nfs/templates/exports.j2 | 34 ++++++++++
 vagrant/libvirt/dcos/provisioning/site.yml      | 19 +++++-
 19 files changed, 583 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/Vagrantfile
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/Vagrantfile b/vagrant/libvirt/dcos/Vagrantfile
index 886c227..0f0022f 100644
--- a/vagrant/libvirt/dcos/Vagrantfile
+++ b/vagrant/libvirt/dcos/Vagrantfile
@@ -19,10 +19,8 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-
-unless defined? VAGRANTFILE_API_VERSION 
-    VAGRANTFILE_API_VERSION = "2"
-end
+#
+VAGRANTFILE_API_VERSION = "2"
 
 # Tested with Vagrant version:
 Vagrant.require_version ">= 1.7.2"

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/group_vars/all/defaults.yml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/group_vars/all/defaults.yml 
b/vagrant/libvirt/dcos/provisioning/group_vars/all/defaults.yml
index 07e69e5..b8ce22e 100644
--- a/vagrant/libvirt/dcos/provisioning/group_vars/all/defaults.yml
+++ b/vagrant/libvirt/dcos/provisioning/group_vars/all/defaults.yml
@@ -33,6 +33,7 @@ system_packages:
   - xz 
   - unzip 
   - curl 
+  - nfs-utils
   - ipset
   - sysstat
 
@@ -42,3 +43,28 @@ system_epel_packages:
 
 with_dcos_version: "{{ lookup('env','DCOS_VERSION') }}"
 with_hadoop_version: "{{ lookup('env','HADOOP_VERSION') }}"
+
+# NFS enablement for sharing folders between nodes
+nfs_packages:
+  - rpcbind
+  - nfs-server
+  - nfs-lock
+  - nfs-idmap
+nfs_shared_folder: /opt/shared
+
+# Source code location for Mesos and Myriad
+myriad_cloned_folder: myriad
+myriad_repository: https://github.com/myriad-framework/myriad
+myriad_repo_branch: master
+
+# Hadoop configrations 
+hadoop_version: "{{ lookup('env','HADOOP_VERSION') }}"
+hadoop_binary_download_url: https://archive.apache.org/dist/hadoop/common/
+hadoop_binary_package: "{{ hadoop_binary_download_url }}/hadoop-{{ 
hadoop_version }}/hadoop-{{ hadoop_version }}.tar.gz"
+
+# Hadoop folders
+hadoop_data_root_folder: /cluster
+hadoop_namenode_folder: "{{ hadoop_data_root_folder }}/nn"
+hadoop_logs_folder: "{{ nfs_shared_folder }}/hadoop/logs"
+hadoop_etc_folder: "{{ nfs_shared_folder }}/hadoop/etc/hadoop"
+

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/common/tasks/main.yml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/roles/common/tasks/main.yml 
b/vagrant/libvirt/dcos/provisioning/roles/common/tasks/main.yml
index f814085..9c772b2 100644
--- a/vagrant/libvirt/dcos/provisioning/roles/common/tasks/main.yml
+++ b/vagrant/libvirt/dcos/provisioning/roles/common/tasks/main.yml
@@ -67,6 +67,9 @@
 - name: Restarting SSH daemon
   service: name=sshd state=restarted
 
+- name: Setup wide JAVA_HOME at /etc/profile.d
+  template: src=java.sh.j2 dest=/etc/profile.d/java.sh
+
 - name: Configure /etc/host files
   template: src=hosts.j2 dest=/etc/hosts
 

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/common/templates/java.sh.j2
----------------------------------------------------------------------
diff --git 
a/vagrant/libvirt/dcos/provisioning/roles/common/templates/java.sh.j2 
b/vagrant/libvirt/dcos/provisioning/roles/common/templates/java.sh.j2
new file mode 100644
index 0000000..dba8aaa
--- /dev/null
+++ b/vagrant/libvirt/dcos/provisioning/roles/common/templates/java.sh.j2
@@ -0,0 +1,23 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+{% if ansible_fqdn in groups['bootstrap'] %}
+export JAVA_HOME=/usr/lib/jvm/java
+{% else %}
+export JAVA_HOME=/opt/mesosphere/active/java/usr/java
+{% endif %}

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/dcos-setup/tasks/main.yml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/roles/dcos-setup/tasks/main.yml 
b/vagrant/libvirt/dcos/provisioning/roles/dcos-setup/tasks/main.yml
index 35e8af7..a826dec 100644
--- a/vagrant/libvirt/dcos/provisioning/roles/dcos-setup/tasks/main.yml
+++ b/vagrant/libvirt/dcos/provisioning/roles/dcos-setup/tasks/main.yml
@@ -102,7 +102,6 @@
 - name: Downloading DC/OS CLI
   shell: >
     curl -fLsS --retry 20 -Y 100000 -y 60 
-    https://downloads.dcos.io/binaries/cli/linux/x86-64/dcos-1.11/dcos
     https://downloads.dcos.io/binaries/cli/linux/x86-64/{{ 
versions[with_dcos_version].cli }}/dcos
     -o dcos && touch .cliskip
   args:

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/devel/tasks/main.yml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/roles/devel/tasks/main.yml 
b/vagrant/libvirt/dcos/provisioning/roles/devel/tasks/main.yml
new file mode 100644
index 0000000..95b8581
--- /dev/null
+++ b/vagrant/libvirt/dcos/provisioning/roles/devel/tasks/main.yml
@@ -0,0 +1,42 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+- name: Install the 'Development tools' package group
+  yum:
+    name: "@Development tools"
+    state: present
+
+- name: Install OpenJDK for Myriad Development
+  yum: name=java-1.8.0-openjdk-devel state=present
+
+- name: Setup shared folder permissions
+  file:
+    path: "{{ nfs_shared_folder }}"
+    state: directory
+    owner: vagrant
+    group: vagrant
+    mode: 0755
+
+- name: Checkout Apache Myriad repo
+  become_user: vagrant
+  git:
+    repo: "{{ myriad_repository }}"
+    dest: "{{ nfs_shared_folder }}/{{ myriad_cloned_folder }}"
+    version: "{{ myriad_repo_branch }}"
+    update: no

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/core-site.xml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/core-site.xml 
b/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/core-site.xml
new file mode 100644
index 0000000..002d4e3
--- /dev/null
+++ b/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/core-site.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+
+<!-- Put site-specific property overrides in this file. -->
+<configuration>
+       <property>
+               <name>fs.default.name</name>
+               <value>hdfs://m1:9001</value>
+       </property>
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/hadoop-hdfs-datanode.service
----------------------------------------------------------------------
diff --git 
a/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/hadoop-hdfs-datanode.service
 
b/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/hadoop-hdfs-datanode.service
new file mode 100644
index 0000000..572e61d
--- /dev/null
+++ 
b/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/hadoop-hdfs-datanode.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Apache Hadoop HDFS Datanode
+After=syslog.target network.target remote-fs.target nss-lookup.target
+
+[Service]
+Environment="JAVA_HOME=/opt/mesosphere/active/java/usr/java"
+Environment="HADOOP_PID_DIR=/var/run/hadoop/hdfs"
+Environment="HADOOP_LOG_DIR=/opt/shared/hadoop/logs/"
+ExecStart=/opt/shared/hadoop/sbin/hadoop-daemon.sh --config 
/opt/shared/hadoop/etc/hadoop start datanode
+User=hdfs
+Group=hadoop
+Type=forking
+Type=forking
+
+[Install]
+WantedBy=multi-user.target

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/hadoop-hdfs-namenode.service
----------------------------------------------------------------------
diff --git 
a/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/hadoop-hdfs-namenode.service
 
b/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/hadoop-hdfs-namenode.service
new file mode 100644
index 0000000..9395ad8
--- /dev/null
+++ 
b/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/hadoop-hdfs-namenode.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Apache Hadoop HDFS Namenode
+After=syslog.target network.target remote-fs.target nss-lookup.target
+
+[Service]
+Environment="JAVA_HOME=/opt/mesosphere/active/java/usr/java"
+Environment="HADOOP_PID_DIR=/var/run/hadoop/hdfs"
+Environment="HADOOP_LOG_DIR=/opt/shared/hadoop/logs/"
+ExecStart=/opt/shared/hadoop/sbin/hadoop-daemon.sh --config 
/opt/shared/hadoop/etc/hadoop start namenode
+User=hdfs
+Group=hadoop
+Type=forking
+
+[Install]
+WantedBy=multi-user.target

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/hdfs-site.xml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/hdfs-site.xml 
b/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/hdfs-site.xml
new file mode 100644
index 0000000..aaa8f64
--- /dev/null
+++ b/vagrant/libvirt/dcos/provisioning/roles/hadoop/files/hdfs-site.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+
+<!-- Put site-specific property overrides in this file. -->
+
+<configuration>
+    <property>
+            <name>dfs.namenode.name.dir</name>
+            <value>/cluster/nn</value>
+    </property>
+
+    <property>
+            <name>dfs.datanode.data.dir</name>
+            <value>/cluster/1/dn,/cluster/2/dn</value>
+    </property>
+
+    <property>
+            <name>dfs.replication</name>
+            <value>3</value>
+    </property>
+</configuration>

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/datanode.yml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/datanode.yml 
b/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/datanode.yml
new file mode 100644
index 0000000..9b8543e
--- /dev/null
+++ b/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/datanode.yml
@@ -0,0 +1,42 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+- name: Set right permissions for data folders
+  file:
+    path: "{{ item }}"
+    state: directory
+    owner: hdfs
+    group: hadoop
+    mode: 0755
+  with_items:
+      - "{{ hadoop_data_root_folder }}/1/dn"
+      - "{{ hadoop_data_root_folder }}/2/dn"
+  tags: hadoop
+
+- name: Copy Systemd DataNode Unit File
+  copy:
+    src: hadoop-hdfs-datanode.service
+    dest: /etc/systemd/system/hadoop-hdfs-datanode.service
+  tags: hadoop
+
+- name: Starting DataNode System Daemon
+  service: name=hadoop-hdfs-datanode state=started enabled=yes
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/download.yml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/download.yml 
b/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/download.yml
new file mode 100644
index 0000000..9491c8d
--- /dev/null
+++ b/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/download.yml
@@ -0,0 +1,51 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+- name: Check that you can connect (GET) to a page and it returns a status 200
+  uri:
+    url: "{{ hadoop_binary_download_url }}"
+  tags: download_hadoop
+
+- name: Download Hadoop binary from Apache releases
+  get_url:
+    url: "{{ hadoop_binary_package }}"
+    dest: "{{ nfs_shared_folder }}"
+  tags: download_hadoop
+
+- name: Check if already moved
+  stat: path="{{ nfs_shared_folder }}/hadoop"
+  register: hadoop_stat
+  tags: download_hadoop
+
+- name: Unarchive a file that is already on the remote machine
+  unarchive:
+    src: "{{ nfs_shared_folder }}/hadoop-{{ hadoop_version }}.tar.gz"
+    dest: "{{ nfs_shared_folder }}"
+    remote_src: yes
+    owner: vagrant
+    group: vagrant
+  when: hadoop_stat.stat.isdir is not defined
+  tags: download_hadoop
+
+- name: Rename folder name
+  command: mv "{{ nfs_shared_folder }}/hadoop-{{ hadoop_version }}" "{{ 
nfs_shared_folder }}/hadoop"
+  when: hadoop_stat.stat.isdir is not defined
+  tags: download_hadoop
+
+

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/main.yml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/main.yml 
b/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/main.yml
new file mode 100644
index 0000000..47bb5ac
--- /dev/null
+++ b/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/main.yml
@@ -0,0 +1,56 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+- include: download.yml
+  when: inventory_hostname == 'bt'
+  tags: hadoop
+
+- name: Create Hadoop group
+  group:
+    name: hadoop
+    state: present
+  tags: hadoop
+
+- name: Create Hadoop users
+  user: 
+    name: "{{ item }}"
+    password: "{{ 'vagrant' | password_hash('sha512') }}"
+    shell: /bin/bash 
+    group: hadoop
+  with_items:
+      - yarn
+      - hdfs
+      - mapred
+  tags: hadoop
+
+- name: Create Hadoop PID file folder
+  file: 
+    path: /var/run/hadoop/hdfs 
+    state: directory
+    mode: 0755
+    owner: hdfs
+    group: hadoop
+
+- include: namenode.yml
+  when: inventory_hostname in groups['dcos-masters']
+  tags: hadoop
+
+- include: datanode.yml
+  when: inventory_hostname in groups['dcos-agents-private'] and 
inventory_hostname != 'a1'
+  tags: hadoop

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/namenode.yml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/namenode.yml 
b/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/namenode.yml
new file mode 100644
index 0000000..7ac742d
--- /dev/null
+++ b/vagrant/libvirt/dcos/provisioning/roles/hadoop/tasks/namenode.yml
@@ -0,0 +1,65 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+- name: Create Hadoop metadata folder
+  file:
+    path: "{{ hadoop_namenode_folder }}"
+    state: directory
+    owner: hdfs
+    group: hadoop
+    mode: 0755
+  tags: hadoop
+
+- name: Create local logs folder for Hadoop daemons
+  file:
+    path: "{{ hadoop_logs_folder }}"
+    state: directory
+    owner: hdfs
+    group: hadoop
+    mode: 0775
+  tags: hadoop
+
+- name: Copy minimal (core,hdfs)-site.xml files
+  copy:
+    src: "{{ item }}"
+    dest: "{{ hadoop_etc_folder }}"
+  with_items:
+    - core-site.xml
+    - hdfs-site.xml
+  tags: hadoop
+
+- name: Format Hadoop filesystem
+  shell : "source /etc/profile.d/java.sh && {{ nfs_shared_folder 
}}/hadoop/bin/hdfs namenode -format && touch .skipformat"
+  become: yes
+  become_user: hdfs
+  args:
+      creates: .skipformat
+  run_once: yes
+  tags: hadoop
+
+- name: Copy Systemd NameNode Unit File
+  copy:
+    src: hadoop-hdfs-namenode.service
+    dest: /etc/systemd/system/hadoop-hdfs-namenode.service
+  tags: hadoop
+
+- name: Starting NameNode System Daemon
+  service: name=hadoop-hdfs-namenode state=started enabled=yes
+
+

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/jbod-disks/tasks/main.yml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/roles/jbod-disks/tasks/main.yml 
b/vagrant/libvirt/dcos/provisioning/roles/jbod-disks/tasks/main.yml
new file mode 100644
index 0000000..e13911e
--- /dev/null
+++ b/vagrant/libvirt/dcos/provisioning/roles/jbod-disks/tasks/main.yml
@@ -0,0 +1,64 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+- name: Create partitions on JBOD disks
+  parted:
+    device: "{{ item }}"
+    number: 1
+    state: present
+  with_items:
+    - /dev/vdb
+    - /dev/vdc
+  tags: disk
+
+- name: Create a xfs filesystems on JBOD disk
+  filesystem:
+    fstype: xfs
+    dev: "{{ item }}"
+  with_items:
+    - /dev/vdb1
+    - /dev/vdc1
+  tags: disk
+
+- name: Create Hadoop data folders
+  file:
+    path: "{{ item }}"
+    state: directory
+    mode: 0755
+  with_items:
+      - "{{ hadoop_data_root_folder }}/1/dn"
+      - "{{ hadoop_data_root_folder }}/2/dn"
+  tags: disk
+
+- name: Mount up JBOD devices 1
+  mount:
+    path: "{{ hadoop_data_root_folder }}/1/dn"
+    src: /dev/vdb1
+    fstype: xfs
+    state: mounted
+  tags: disk
+
+- name: Mount up JBOD devices 2
+  mount:
+    path: "{{ hadoop_data_root_folder }}/2/dn"
+    src: /dev/vdc1
+    fstype: xfs
+    state: mounted
+  tags: disk
+

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/nfs-client/tasks/main.yml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/roles/nfs-client/tasks/main.yml 
b/vagrant/libvirt/dcos/provisioning/roles/nfs-client/tasks/main.yml
new file mode 100644
index 0000000..e571220
--- /dev/null
+++ b/vagrant/libvirt/dcos/provisioning/roles/nfs-client/tasks/main.yml
@@ -0,0 +1,30 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+- name: Create NFS mount point
+  file:
+    path: "{{ nfs_shared_folder }}"
+    state: directory
+
+- name: Mount NFS shared folder
+  mount:
+    path: "{{ nfs_shared_folder }}"
+    src: "bt:{{ nfs_shared_folder }}"
+    fstype: nfs
+    state: mounted

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/nfs/tasks/main.yml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/roles/nfs/tasks/main.yml 
b/vagrant/libvirt/dcos/provisioning/roles/nfs/tasks/main.yml
new file mode 100644
index 0000000..9e8111d
--- /dev/null
+++ b/vagrant/libvirt/dcos/provisioning/roles/nfs/tasks/main.yml
@@ -0,0 +1,41 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+---
+- name: Creates directory
+  file:
+    path: /opt/shared
+    state: directory
+    owner: vagrant
+    group: vagrant
+    mode: 0775
+  when: inventory_hostname != 'a1'
+
+- name: Copy exports file.
+  template:
+    src: exports.j2
+    dest: /etc/exports
+    owner: root
+    group: root
+    mode: 0644
+  when: inventory_hostname == 'bt'
+
+- name: Enable NFS in all nodes
+  service: name={{ item }} state=started enabled=yes
+  with_items:
+    - "{{ nfs_packages }}"

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/roles/nfs/templates/exports.j2
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/roles/nfs/templates/exports.j2 
b/vagrant/libvirt/dcos/provisioning/roles/nfs/templates/exports.j2
new file mode 100644
index 0000000..aa2b5dd
--- /dev/null
+++ b/vagrant/libvirt/dcos/provisioning/roles/nfs/templates/exports.j2
@@ -0,0 +1,34 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# /etc/exports: the access control list for filesystems which may be exported
+#   to NFS clients.  See exports(5).
+#
+# Example for NFSv2 and NFSv3:
+# /srv/homes       hostname1(rw,sync,no_subtree_check) 
hostname2(ro,sync,no_subtree_check)
+#
+# Example for NFSv4:
+# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
+# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
+#
+{# % for item in play_hosts %}
+{{ nfs_shared_folder}} {{ hostvars[item]['ansible_host'] 
}}(rw,sync,no_root_squash)
+{% endfor % #}
+
+{{ nfs_shared_folder }} *(rw,sync,no_root_squash)

http://git-wip-us.apache.org/repos/asf/incubator-myriad/blob/47c7be0d/vagrant/libvirt/dcos/provisioning/site.yml
----------------------------------------------------------------------
diff --git a/vagrant/libvirt/dcos/provisioning/site.yml 
b/vagrant/libvirt/dcos/provisioning/site.yml
index 416aadf..530371d 100644
--- a/vagrant/libvirt/dcos/provisioning/site.yml
+++ b/vagrant/libvirt/dcos/provisioning/site.yml
@@ -27,34 +27,47 @@
 #   non in special order, you cannot control the order
 #   of roles within a play.
 
-# Play 0
+# Play 1
 - hosts: all
   roles:
     - common
     - docker
+    - { role: jbod-disks, 
+        when: "inventory_hostname in groups['dcos-agents-private'] and 
inventory_hostname != 'a1'" }
 
-# Play 1
+# Play 2
 - hosts: bootstrap 
   roles:
     - passwordless
+    - devel
+    - nfs
     - dcos-setup
     - registry
+    - hadoop
 
-# Play 2
+# Play 3
 - hosts: dcos-masters 
   strategy: free
   vars:
     node_type: master
   roles:
     - dcos-install
+    - nfs
+    - nfs-client
+    - hadoop
 
+# Play 4
 - hosts: dcos-agents-private 
   strategy: free
   vars:
     node_type: slave
   roles:
     - dcos-install
+    - nfs
+    - nfs-client
+    - hadoop
 
+# Play 4
 - hosts: dcos-agents-public
   strategy: free
   vars:

Reply via email to