Installation

Like with any other role, before you can use this role in your playbooks you’ll need to install it in the system where the playbooks are going to be run:

$ ansible-galaxy install Akrog.storage

Once installed, you can use it in your playbooks. Usage of the role is covered in the Usage section.

The role has been tested with Ansible >= 2.4.1, but other versions may also work.

Requirements

Ansible Storage Role providers have specific requirements to manage and connect to the storage.

The Ansible Storage Role will try to automatically handle all the requirements for the nodes based on the selected provider and type of node. This means that using the storage role on nodes will install packages in order to perform the node’s tasks (manage storage, or consume storage).

Attention

Right now requirements management has only been included for Fedora, CentOS, and RHEL.

Each storage provider has its own requirements, and they are usually different for the controller and the consumer nodes. Being lighter on the consumer nodes. Refer to the providers section for information on the requirements of each provider.

Consumer requirements

At the time of this writing the consumer role can’t auto detect dependencies based on the connection type of the backends. Though we expect this to change in the future, at the moment any connection specific packages to connect volumes, need to be already installed in the system or added via tasks in the playbook.

Below are some of the packages required to use:

Other connection types will have different requirements. Please report an issue for any missing connection types and we’ll add them.

Multipathing

Block storage multipathing requires package device-mapper-multipath to be installed, configured, and running. We can do this with a task or in the command line:

# yum install device-mapper-multipath
# mpathconf --enable --with_multipathd y \
> --user_friendly_names n \
> --find_multipaths y
# systemctl enable --now multipathd

Or as Ansible tasks:

- name: Install multipath package
  package:
    name: device-mapper-multipath
    state: present
 become: yes

- name: Create configuration
  command: mpathconf --enable --with_multipathd y --user_friendly_names n --find_multipaths y
  args:
      creates: /etc/multipath.conf
 become: yes

- name: Start and enable on boot the multipath daemon
  service:
      name: multipathd
      state: started
      enabled: yes
 become: yes

iSCSI

To use iSCSI we need to install, configure, and run the iscsi-initiator-utils package if it’s not already there:

# yum install iscsi-initiator-utils
# [ ! -e /etc/iscsi/initiatorname.iscsi ] \
> && echo InitiatorName=`iscsi-iname` > /etc/iscsi/initiatorname.iscsi
# systemctl enable --now iscsid

Or as Ansible tasks:

- name: Install iSCSI package
  package:
    name: iscsi-initiator-utils
    state: present
 become: yes

- name: Create initiator name
  shell: echo InitiatorName=`iscsi-iname` > /etc/iscsi/initiatorname.iscsi
  args:
      creates: /etc/iscsi/initiatorname.iscsi
 become: yes

- name: Start and enable on boot the iSCSI initiator
  service:
      name: iscsid
      state: started
      enabled: yes
 become: yes

Ceph/RBD

For Ceph/RBD connections we need to install the ceph-common package.