blob: ed92190a1d47fb4963c4ef37dbf3e5ea60cf6a57 [file] [log] [blame]
# Copyright 2017-present Open Networking Foundation
#
# 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.
# Note: When the target == "cluster" the installer
# is running to install voltha in the cluster hosts.
# Whe the target == "installer" the installer is being
# created.
- name: A .ssh directory for the voltha user exists
file:
#path: "{{ ansible_env['HOME'] }}/.ssh"
path: "{{ target_voltha_home }}/.ssh"
state: directory
owner: voltha
group: voltha
tags: [cluster_host]
- name: known_hosts file is absent for the voltha user
file:
path: "{{ target_voltha_home }}/.ssh/known_hosts"
state: absent
tags: [cluster_host]
- name: Known host checking is disabled
copy:
src: files/ssh_config
dest: "{{ target_voltha_home }}/.ssh/config"
owner: voltha
group: voltha
mode: 0600
tags: [cluster_host]
- name: Cluster host keys are propagated to all hosts in the cluster
copy:
src: files/.keys
dest: "{{ target_voltha_home }}"
owner: voltha
group: voltha
mode: 0600
tags: [cluster_host]
#- name: Required configuration directories are copied
# copy:
# src: "{{ install_source }}/{{ item }}"
# dest: "{{ target_voltha_home }}"
# owner: voltha
# group: voltha
# with_items:
# - docker-py
# - netifaces
# - deb_files
# when: target == "cluster"
# tags: [cluster_host]
- name: Required configuration directories are copied
synchronize:
src: "{{ install_source }}/{{ item }}"
dest: "{{ target_voltha_home }}"
archive: no
owner: no
perms: no
recursive: yes
links: yes
with_items:
- docker-py
- netifaces
- deb_files
tags: [cluster-host]
- name: Required configuration scripts are copied
synchronize:
src: "{{ install_source }}/{{ item }}"
dest: "{{ target_voltha_home }}"
archive: no
owner: no
perms: no
recursive: no
links: yes
with_items:
- sort_packages.sh
- sort_packages.py
- install_packages.sh
tags: [cluster-host]
- name: The installer scripts are made executable
file:
path: "{{target_voltha_home }}/{{ item }}"
mode: 0744
with_items:
- sort_packages.sh
- sort_packages.py
- install_packages.sh
tags: [installer]
- name: apt lists are up-to-date
synchronize:
src: "/var/lib/apt/lists"
dest: "/var/lib/apt/lists"
archive: no
owner: no
perms: no
rsync_opts:
- "--exclude=lock"
- "--exclude=partial"
recursive: yes
links: yes
tags: [cluster_host]
#- name: upstart barrier filesystem loop mount script is installed
# copy:
# src: "{{ install_source }}/losetup.conf"
# dest: /etc/init
# owner: root
# group: root
# mode: 0644
# when: target == "cluster"
# tags: [cluster_host]
#- name: pre-emptive strike to avoid errors during package installation
# apt:
# name: "{{ item }}"
# state: absent
# with_items:
# - ubuntu-core-launcher
# - snapd
# tags: [cluster_host]
- name: A voltha directory under /var/log for voltha logs exists
file:
path: "/var/log/voltha"
state: directory
tags: [cluster_host]
- name: Dependent software is installed (this can take about 10 Min, DONT'T PANIC, go for coffee instead)
command: "{{ target_voltha_home }}/install_packages.sh"
# command: dpkg -R -i "{{ target_voltha_home }}/deb_files"
when: target == "cluster"
tags: [cluster_host]
#- name: Dependent software is initialized
# command: apt-get -y -f install
# when: target == "cluster"
# tags: [cluster_host]
- name: Python packages are installed
command: pip install {{ item }} --no-index --find-links "file://{{ target_voltha_home }}/{{ item }}"
with_items:
- docker-py
- netifaces
when: target == "cluster"
tags: [cluster_host]
# To debug package installation, comment this out so review temporary interim
# files.
- name: Configuration directories and files are deleted
file:
path: "{{ target_voltha_home }}/{{ item }}"
state: absent
with_items:
- docker-py
- netifaces
- sort_packages.sh
- sort_packages.py
- install_packages.sh
- deb_files1
- deb_files2
when: target == "cluster"
tags: [cluster_host]
- name: Logging barrier file is created
command: "fallocate -l {{ logger_volume_size }}G {{ barrier_fs_dir }}/.logger-barrier-file"
when: target == "cluster"
tags: [cluster_host]
- name: Registry barrier file is created
command: "fallocate -l {{ registry_volume_size }}G {{ barrier_fs_dir }}/.registry-barrier-file"
when: target == "cluster"
tags: [cluster_host]
#- name: Consul barrier file is created
# command: "fallocate -l {{ consul_volume_size }}G {{ barrier_fs_dir }}/.consul-barrier-file"
# when: target == "cluster"
# tags: [cluster_host]
- name: The logging barrier file is set up as a loop device
command: "losetup /dev/loop0 {{ barrier_fs_dir }}/.logger-barrier-file"
when: target == "cluster"
tags: [cluster_host]
- name: The registry barrier file is set up as a loop device
command: "losetup /dev/loop1 {{ barrier_fs_dir }}/.registry-barrier-file"
when: target == "cluster"
tags: [cluster_host]
#- name: The consul barrier file is set up as a loop device
# command: "losetup /dev/loop2 {{ barrier_fs_dir }}/.consul-barrier-file"
# when: target == "cluster"
# tags: [cluster_host]
- name: The xfs filesystem is created on the replicated barrier file systems
filesystem:
fstype: xfs
dev: "{{ item }}"
opts: -i size=512
with_items:
- /dev/loop0
- /dev/loop1
when: target == "cluster"
tags: [cluster_host]
#- name: The ext4 filesystem is created on the consul barrier volume
# filesystem:
# fstype: ext4
# dev: /dev/loop2
# when: target == "cluster"
# tags: [cluster_host]
- name: The loop devices that are no longer needed are removed
command: "losetup -D"
when: target == "cluster"
tags: [cluster_host]
- name: The barrier fileystem files are owned by voltha
file:
path: "{{ barrier_fs_dir }}/{{ item }}"
mode: 0755
owner: voltha
group: voltha
with_items:
- ".registry-barrier-file"
- ".logger-barrier-file"
# - ".consul-barrier-file"
when: target == "cluster"
tags: [cluster_host]
- name: A mountpoint for the glusterfs registry brick is created
file:
path: "{{ barrier_fs_dir }}/reg_brick1"
state: directory
mode: 0755
owner: voltha
group: voltha
when: target == "cluster"
tags: [cluster_host]
- name: A mountpoint for the glusterfs logging brick is created
file:
path: "{{ barrier_fs_dir }}/log_brick1"
state: directory
mode: 0755
owner: voltha
group: voltha
when: target == "cluster"
tags: [cluster_host]
- name: The replicated registry filesystem is mounted on boot
mount:
path: "{{ barrier_fs_dir }}/reg_brick1"
src: "{{ barrier_fs_dir }}/.registry-barrier-file"
fstype: xfs
opts: loop
state: mounted
when: target == "cluster"
tags: [cluster_host]
- name: The replicated logger filesystem is mounted on boot
mount:
path: "{{ barrier_fs_dir }}/log_brick1"
src: "{{ barrier_fs_dir }}/.logger-barrier-file"
fstype: xfs
opts: loop
state: mounted
when: target == "cluster"
tags: [cluster_host]
- name: A directory for the registry glusterfs volume is created
file:
path: "{{ barrier_fs_dir }}/reg_brick1/registry_volume"
state: directory
mode: 0755
owner: voltha
group: voltha
when: target == "cluster"
tags: [cluster_host]
- name: A directory for the logging glusterfs volume is created
file:
path: "{{ barrier_fs_dir }}/log_brick1/logging_volume"
state: directory
mode: 0755
owner: voltha
group: voltha
when: target == "cluster"
tags: [cluster_host]
- name: Directories for voltha processes are created
file:
path: "{{ target_voltha_dir }}/{{ item }}"
state: directory
mode: 0755
owner: voltha
group: voltha
with_items:
- registry_data
- consul/data
- consul/config
when: target == "cluster"
tags: [cluster_host]
#- name: The consul data filesystem is mounted on boot
# mount:
# path: "{{ target_voltha_dir }}/consul/data"
# src: "{{ barrier_fs_dir }}/.consul-barrier-file"
# fstype: ext4
# opts: loop
# state: mounted
# when: target == "cluster"
# tags: [cluster_host]
- name: The glusterfs service is started
service:
name: glusterd
enabled: yes
state: started
when: target == "cluster"
tags: [cluster_host]
- name: The replicated registry filesystem is mounted on boot
mount:
path: "{{ target_voltha_dir }}/registry_data"
src: "{{ inventory_hostname }}:/registry_volume"
fstype: glusterfs
opts: "defaults,_netdev,noauto,x-systemd.automount"
state: present
when: target == "cluster"
tags: [cluster_host]
- name: The replicated logging filesystem is mounted on boot
mount:
path: "/var/log/voltha"
src: "{{ inventory_hostname }}:/logging_volume"
fstype: glusterfs
opts: "defaults,_netdev,noauto,x-systemd.automount"
state: present
when: target == "cluster"
tags: [cluster_host]