add the required dependency and rewrite the tasks using YAML syntax

parent eb8a7178
...@@ -11,4 +11,5 @@ ...@@ -11,4 +11,5 @@
# Role includes for role hadoop_common # Role includes for role hadoop_common
dependencies: dependencies:
- common_vars
- oraclejdk - oraclejdk
\ No newline at end of file
...@@ -22,69 +22,87 @@ ...@@ -22,69 +22,87 @@
# oraclejdk: Not strictly required, but we tend to trust it more than openjdk. # oraclejdk: Not strictly required, but we tend to trust it more than openjdk.
# #
- name: install system packages - name: Install system packages
apt: > apt:
pkg={{ item }} name: "{{ item }}"
state=present state: present
with_items: hadoop_common_debian_pkgs update_cache: yes
with_items: "{{ hadoop_common_debian_pkgs }}"
- name: ensure group exists
group: name={{ hadoop_common_group }} system=yes state=present - name: Ensure group exists
group:
- name: ensure user exists name: "{{ hadoop_common_group }}"
user: > system: yes
name={{ hadoop_common_user }} state: present
group={{ hadoop_common_group }}
home={{ HADOOP_COMMON_USER_HOME }} createhome=yes - name: Ensure user exists
shell=/bin/bash system=yes generate_ssh_key=yes user:
state=present name: "{{ hadoop_common_user }}"
group: "{{ hadoop_common_group }}"
- name: own key authorized home: "{{ HADOOP_COMMON_USER_HOME }}"
file: > createhome: yes
src={{ HADOOP_COMMON_USER_HOME }}/.ssh/id_rsa.pub shell: /bin/bash
dest={{ HADOOP_COMMON_USER_HOME }}/.ssh/authorized_keys system: yes
owner={{ hadoop_common_user }} group={{ hadoop_common_group }} state=link generate_ssh_key: yes
state: present
- name: ssh configured
template: > - name: Own key authorized
src=hadoop_user_ssh_config.j2 file:
dest={{ HADOOP_COMMON_USER_HOME }}/.ssh/config src: "{{ HADOOP_COMMON_USER_HOME }}/.ssh/id_rsa.pub"
mode=0600 owner={{ hadoop_common_user }} group={{ hadoop_common_group }} dest: "{{ HADOOP_COMMON_USER_HOME }}/.ssh/authorized_keys"
owner: "{{ hadoop_common_user }}"
- name: ensure user is in sudoers group: "{{ hadoop_common_group }}"
lineinfile: > state: link
dest=/etc/sudoers state=present
regexp='^%hadoop ALL\=' line='%hadoop ALL=(ALL) NOPASSWD:ALL' - name: SSH configured
validate='visudo -cf %s' template:
src: "hadoop_user_ssh_config.j2"
- name: check if downloaded and extracted dest: "{{ HADOOP_COMMON_USER_HOME }}/.ssh/config"
stat: path={{ HADOOP_COMMON_HOME }} mode: "0600"
owner: "{{ hadoop_common_user }}"
group: "{{ hadoop_common_group }}"
- name: Ensure user is in sudoers
lineinfile:
dest: /etc/sudoers
state: present
regexp: '^%hadoop ALL\='
line: '%hadoop ALL=(ALL) NOPASSWD:ALL'
validate: 'visudo -cf %s'
- name: Check if downloaded and extracted
stat:
path: "{{ HADOOP_COMMON_HOME }}"
register: extracted_hadoop_dir register: extracted_hadoop_dir
- name: distribution downloaded - name: Distribution downloaded
get_url: > get_url:
url={{ hadoop_common_dist.url }} url: "{{ hadoop_common_dist.url }}"
sha256sum={{ hadoop_common_dist.sha256sum }} sha256sum: "{{ hadoop_common_dist.sha256sum }}"
dest={{ hadoop_common_temporary_dir }} dest: "{{ hadoop_common_temporary_dir }}"
when: not extracted_hadoop_dir.stat.exists when: not extracted_hadoop_dir.stat.exists
- name: distribution extracted - name: distribution extracted
shell: > shell: "tar -xzf {{ hadoop_common_temporary_dir }}/{{ hadoop_common_dist.filename }} && chown -R {{ hadoop_common_user }}:{{ hadoop_common_group }} hadoop-{{ HADOOP_COMMON_VERSION }}"
chdir={{ HADOOP_COMMON_USER_HOME }} args:
tar -xzf {{ hadoop_common_temporary_dir }}/{{ hadoop_common_dist.filename }} && chown -R {{ hadoop_common_user }}:{{ hadoop_common_group }} hadoop-{{ HADOOP_COMMON_VERSION }} chdir: "{{ HADOOP_COMMON_USER_HOME }}"
when: not extracted_hadoop_dir.stat.exists when: not extracted_hadoop_dir.stat.exists
- name: versioned directory symlink created - name: Versioned directory symlink created
file: > file:
src={{ HADOOP_COMMON_USER_HOME }}/hadoop-{{ HADOOP_COMMON_VERSION }} src: "{{ HADOOP_COMMON_USER_HOME }}/hadoop-{{ HADOOP_COMMON_VERSION }}"
dest={{ HADOOP_COMMON_HOME }} dest: "{{ HADOOP_COMMON_HOME }}"
owner={{ hadoop_common_user }} group={{ hadoop_common_group }} state=link owner: "{{ hadoop_common_user }}"
group: "{{ hadoop_common_group }}"
- name: configuration installed state: link
template: >
src={{ item }}.j2 - name: Configuration installed
dest={{ HADOOP_COMMON_CONF_DIR }}/{{ item }} template:
mode=0640 owner={{ hadoop_common_user }} group={{ hadoop_common_group }} src: "{{ item }}.j2"
dest: "{{ HADOOP_COMMON_CONF_DIR }}/{{ item }}"
mode: "0640"
owner: "{{ hadoop_common_user }}"
group: "{{ hadoop_common_group }}"
with_items: with_items:
- hadoop-env.sh - hadoop-env.sh
- mapred-site.xml - mapred-site.xml
...@@ -92,104 +110,114 @@ ...@@ -92,104 +110,114 @@
- hdfs-site.xml - hdfs-site.xml
- yarn-site.xml - yarn-site.xml
- name: upstart scripts installed - name: Upstart scripts installed
template: > template:
src={{ item }}.j2 src: "{{ item }}.j2"
dest=/etc/init/{{ item }} dest: "/etc/init/{{ item }}"
mode=0640 owner=root group=root mode: "0640"
owner: root
group: root
with_items: with_items:
- hdfs.conf - hdfs.conf
- yarn.conf - yarn.conf
- name: hadoop env file exists - name: Hadoop env file exists
file: > file:
path={{ hadoop_common_env }} state=touch path: "{{ hadoop_common_env }}"
owner={{ hadoop_common_user }} group={{ hadoop_common_group }} state: touch
owner: "{{ hadoop_common_user }}"
- name: env vars sourced in bashrc group: "{{ hadoop_common_group }}"
lineinfile: >
dest={{ HADOOP_COMMON_USER_HOME }}/.bashrc - name: Env vars sourced in bashrc
state=present lineinfile:
regexp="^. {{ hadoop_common_env }}" dest: "{{ HADOOP_COMMON_USER_HOME }}/.bashrc"
line=". {{ hadoop_common_env }}" state: present
insertbefore=BOF regexp: "^. {{ hadoop_common_env }}"
line: ". {{ hadoop_common_env }}"
- name: env vars sourced in hadoop env insertbefore: "BOF"
lineinfile: >
dest={{ hadoop_common_env }} state=present - name: Env vars sourced in hadoop env
regexp="^. {{ HADOOP_COMMON_CONF_DIR }}/hadoop-env.sh" line=". {{ HADOOP_COMMON_CONF_DIR }}/hadoop-env.sh" lineinfile:
dest: "{{ hadoop_common_env }}"
- name: check if native libraries need to be built state: present
stat: path={{ HADOOP_COMMON_USER_HOME }}/.native_libs_built regexp: "^. {{ HADOOP_COMMON_CONF_DIR }}/hadoop-env.sh"
line: ". {{ HADOOP_COMMON_CONF_DIR }}/hadoop-env.sh"
- name: Check if native libraries need to be built
stat:
path: "{{ HADOOP_COMMON_USER_HOME }}/.native_libs_built"
register: native_libs_built register: native_libs_built
- name: protobuf downloaded - name: Protobuf downloaded
get_url: > get_url:
url={{ hadoop_common_protobuf_dist.url }} url: "{{ hadoop_common_protobuf_dist.url }}"
sha256sum={{ hadoop_common_protobuf_dist.sha256sum }} sha256sum: "{{ hadoop_common_protobuf_dist.sha256sum }}"
dest={{ hadoop_common_temporary_dir }} dest: "{{ hadoop_common_temporary_dir }}"
when: not native_libs_built.stat.exists when: not native_libs_built.stat.exists
- name: protobuf extracted - name: Protobuf extracted
shell: > shell: "tar -xzf {{ hadoop_common_protobuf_dist.filename }}"
chdir={{ hadoop_common_temporary_dir }} args:
tar -xzf {{ hadoop_common_protobuf_dist.filename }} chdir: "{{ hadoop_common_temporary_dir }}"
when: not native_libs_built.stat.exists when: not native_libs_built.stat.exists
- name: protobuf installed - name: Protobuf installed
shell: > shell: "./configure --prefix=/usr/local && make && make install"
chdir={{ hadoop_common_temporary_dir }}/protobuf-{{ HADOOP_COMMON_PROTOBUF_VERSION }} args:
./configure --prefix=/usr/local && make && make install chdir: "{{ hadoop_common_temporary_dir }}/protobuf-{{ HADOOP_COMMON_PROTOBUF_VERSION }}"
when: not native_libs_built.stat.exists when: not native_libs_built.stat.exists
- name: native lib source downloaded - name: Native lib source downloaded
get_url: > get_url:
url={{ hadoop_common_native_dist.url }} url: "{{ hadoop_common_native_dist.url }}"
sha256sum={{ hadoop_common_native_dist.sha256sum }} sha256sum: "{{ hadoop_common_native_dist.sha256sum }}"
dest={{ hadoop_common_temporary_dir }}/{{ hadoop_common_native_dist.filename }} dest: "{{ hadoop_common_temporary_dir }}/{{ hadoop_common_native_dist.filename }}"
when: not native_libs_built.stat.exists when: not native_libs_built.stat.exists
- name: native lib source extracted - name: native lib source extracted
shell: > shell: "tar -xzf {{ hadoop_common_native_dist.filename }}"
chdir={{ hadoop_common_temporary_dir }} args:
tar -xzf {{ hadoop_common_native_dist.filename }} chdir: "{{ hadoop_common_temporary_dir }}"
when: not native_libs_built.stat.exists when: not native_libs_built.stat.exists
- name: native lib built - name: Native lib built
shell: > shell: "mvn package -X -Pnative -DskipTests"
chdir={{ hadoop_common_temporary_dir }}/hadoop-common-release-{{ HADOOP_COMMON_VERSION }}/hadoop-common-project args:
mvn package -X -Pnative -DskipTests chdir: "{{ hadoop_common_temporary_dir }}/hadoop-common-release-{{ HADOOP_COMMON_VERSION }}/hadoop-common-project"
environment: environment:
LD_LIBRARY_PATH: /usr/local/lib LD_LIBRARY_PATH: /usr/local/lib
when: not native_libs_built.stat.exists when: not native_libs_built.stat.exists
- name: old native libs renamed - name: Old native libs renamed
shell: > shell: "mv {{ HADOOP_COMMON_HOME }}/lib/native/{{ item.name }} {{ HADOOP_COMMON_HOME }}/lib/native/{{ item.new_name }}"
mv {{ HADOOP_COMMON_HOME }}/lib/native/{{ item.name }} {{ HADOOP_COMMON_HOME }}/lib/native/{{ item.new_name }}
with_items: with_items:
- { name: libhadoop.a, new_name: libhadoop32.a } - { name: 'libhadoop.a', new_name: 'libhadoop32.a' }
- { name: libhadoop.so, new_name: libhadoop32.so } - { name: 'libhadoop.so', new_name: 'libhadoop32.so' }
- { name: libhadoop.so.1.0.0, new_name: libhadoop32.so.1.0.0 } - { name: 'libhadoop.so.1.0.0', new_name: 'libhadoop32.so.1.0.0' }
when: not native_libs_built.stat.exists when: not native_libs_built.stat.exists
- name: new native libs installed - name: new native libs installed
shell: > shell: "chown {{ hadoop_common_user }}:{{ hadoop_common_group }} {{ item }} && cp {{ item }} {{ HADOOP_COMMON_HOME }}/lib/native/{{ item }}"
chdir={{ hadoop_common_temporary_dir }}/hadoop-common-release-{{ HADOOP_COMMON_VERSION }}/hadoop-common-project/hadoop-common/target/native/target/usr/local/lib args:
chown {{ hadoop_common_user }}:{{ hadoop_common_group }} {{ item }} && cp {{ item }} {{ HADOOP_COMMON_HOME }}/lib/native/{{ item }} chdir: "{{ hadoop_common_temporary_dir }}/hadoop-common-release-{{ HADOOP_COMMON_VERSION }}/hadoop-common-project/hadoop-common/target/native/target/usr/local/lib"
with_items: with_items:
- libhadoop.a - 'libhadoop.a'
- libhadoop.so - 'libhadoop.so'
- libhadoop.so.1.0.0 - 'libhadoop.so.1.0.0'
when: not native_libs_built.stat.exists when: not native_libs_built.stat.exists
- name: native lib marker touched - name: Native lib marker touched
file: > file:
path={{ HADOOP_COMMON_USER_HOME }}/.native_libs_built path: "{{ HADOOP_COMMON_USER_HOME }}/.native_libs_built"
owner={{ hadoop_common_user }} group={{ hadoop_common_group }} state=touch owner: "{{ hadoop_common_user }}"
group: "{{ hadoop_common_group }}"
state: touch
when: not native_libs_built.stat.exists when: not native_libs_built.stat.exists
- name: service directory exists - name: Service directory exists
file: > file:
path={{ HADOOP_COMMON_SERVICES_DIR }} path: "{{ HADOOP_COMMON_SERVICES_DIR }}"
mode=0750 owner={{ hadoop_common_user }} group={{ hadoop_common_group }} mode: "0750"
state=directory owner: "{{ hadoop_common_user }}"
group: "{{ hadoop_common_group }}"
state: directory
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment