188 lines
5.4 KiB
YAML
188 lines
5.4 KiB
YAML
- name: 'Install Python PIP'
|
|
package: >
|
|
name=py3-pip
|
|
state=present
|
|
when: ansible_os_family|lower == "alpine"
|
|
become: yes
|
|
|
|
- name: 'Install Python PIP'
|
|
package: >
|
|
name=python-pip
|
|
state=present
|
|
when: ansible_os_family|lower != "alpine"
|
|
become: yes
|
|
|
|
- name: 'Install python-pathlib'
|
|
pip: >
|
|
name=pathlib
|
|
state=present
|
|
become: yes
|
|
|
|
- name: "Discover NVMe EBS"
|
|
disks_ebs_config:
|
|
config: "{{ disks_additional_disks }}"
|
|
register: __disks_ebs_config
|
|
when: disks_discover_aws_nvme_ebs | default(True) | bool
|
|
become: yes
|
|
|
|
- set_fact:
|
|
disks_additional_disks: "{{ disks_additional_disks|defaut([]) + __disks_ebs_config['ansible_facts']['config'] }}"
|
|
when: __disks_ebs_config is defined and 'ansible_facts' in __disks_ebs_config
|
|
|
|
- name: "Install parted"
|
|
package:
|
|
name: parted
|
|
state: present
|
|
use: '{{ disks_package_use }}'
|
|
when: disks_additional_disks
|
|
tags: ['disks', 'pkgs']
|
|
become: yes
|
|
|
|
- name: "Install additional fs progs"
|
|
package:
|
|
name: "{{ item }}"
|
|
state: present
|
|
with_items: "{{ disks_additional_packages|default([]) }}"
|
|
when: disks_additional_packages is defined
|
|
tags: ['disks', 'pkgs']
|
|
become: yes
|
|
|
|
- name: disks - start additional services
|
|
service:
|
|
name: "{{item}}"
|
|
enabled: yes
|
|
state: started
|
|
with_items: "{{ disks_additional_services|default([]) }}"
|
|
tags: ['disks', 'pkgs']
|
|
become: yes
|
|
|
|
- name: "Get disk alignment for disks"
|
|
shell: |
|
|
if
|
|
[[ -e /sys/block/{{ item.disk | basename }}/queue/optimal_io_size && -e /sys/block/{{ item.disk | basename }}/alignment_offset && -e /sys/block/{{ item.disk | basename }}/queue/physical_block_size ]];
|
|
then
|
|
echo $[$(( ($(cat /sys/block/{{ item.disk | basename }}/queue/optimal_io_size) + $(cat /sys/block/{{ item.disk | basename }}/alignment_offset)) / $(cat /sys/block/{{ item.disk | basename }}/queue/physical_block_size) )) | 2048];
|
|
else
|
|
echo 2048;
|
|
fi
|
|
args:
|
|
creates: '{{ item.part | default(item.disk + "1") }}'
|
|
executable: '/bin/bash'
|
|
with_items: '{{ disks_additional_disks }}'
|
|
register: disks_offset
|
|
tags: ['disks']
|
|
|
|
- name: "Ensure the disk exists"
|
|
stat:
|
|
path: '{{ item.disk }}'
|
|
with_items: '{{ disks_additional_disks }}'
|
|
register: disks_stat
|
|
changed_when: False
|
|
tags: ['disks']
|
|
|
|
- name: "Partition additional disks"
|
|
shell: |
|
|
if
|
|
[ -b {{ item.disk }} ]
|
|
then
|
|
[ -b {{ item.part | default(item.disk + "1") }} ] || parted -a optimal --script "{{ item.disk }}" mklabel gpt mkpart primary {{ disks_offset.stdout|default("2048") }}s 100% && sleep 5 && partprobe {{ item.disk }}; sleep 5
|
|
fi
|
|
args:
|
|
creates: '{{ item.part | default(item.disk + "1") }}'
|
|
executable: '/bin/bash'
|
|
with_items: '{{ disks_additional_disks }}'
|
|
tags: ['disks']
|
|
become: yes
|
|
|
|
- name: "Create filesystem on the first partition"
|
|
filesystem:
|
|
dev: '{{ item.0.part | default(item.0.disk + "1") }}'
|
|
force: '{{ item.0.force|d(omit) }}'
|
|
fstype: '{{ item.0.fstype }}'
|
|
opts: '{{ item.0.fsopts|d(omit) }}'
|
|
with_together:
|
|
- '{{ disks_additional_disks }}'
|
|
- '{{ disks_stat.results }}'
|
|
when: item.1.stat.exists
|
|
tags: ['disks']
|
|
become: yes
|
|
|
|
- name: "Disable periodic fsck and reserved space on ext3 or ext4 formatted disks"
|
|
environment:
|
|
PATH: "{{ ansible_env.PATH }}:/usr/sbin:/sbin"
|
|
shell: tune2fs -c0 -i0 -m0 {{ item.0.part | default(item.0.disk + "1") }}
|
|
with_together:
|
|
- '{{ disks_additional_disks }}'
|
|
- '{{ disks_stat.results }}'
|
|
when: "disks_additional_disks and ( item.0.fstype == 'ext4' or item.0.fstype == 'ext3' ) and item.0.disable_periodic_fsck|default(false)|bool and item.1.stat.exists"
|
|
tags: ['disks']
|
|
become: yes
|
|
|
|
- name: "Ensure the mount directory exists"
|
|
file:
|
|
path: '{{ item.mount }}'
|
|
state: directory
|
|
with_items: '{{ disks_additional_disks }}'
|
|
tags: ['disks']
|
|
become: yes
|
|
|
|
- name: "Get UUID for partition"
|
|
environment:
|
|
PATH: "{{ ansible_env.PATH }}:/usr/sbin:/sbin"
|
|
command: blkid -s UUID -o value {{ item.0.part | default(item.0.disk + "1") }}
|
|
check_mode: no
|
|
register: disks_blkid
|
|
with_together:
|
|
- '{{ disks_additional_disks }}'
|
|
- '{{ disks_stat.results }}'
|
|
changed_when: False
|
|
when: item.1.stat.exists
|
|
tags: ['disks']
|
|
|
|
- name: "Mount additional disks"
|
|
mount:
|
|
name: '{{ item.0.mount }}'
|
|
fstype: '{{ item.0.fstype }}'
|
|
opts: '{{ item.0.mount_options|d(omit) }}'
|
|
passno: '0'
|
|
src: 'UUID={{ item.1.stdout }}'
|
|
state: '{{ item.0.mount_state|d("mounted") }}'
|
|
with_together:
|
|
- '{{ disks_additional_disks }}'
|
|
- '{{ disks_blkid.results }}'
|
|
- '{{ disks_stat.results }}'
|
|
when: item.2.stat.exists
|
|
tags: ['disks']
|
|
register: disks_additional_disks_handler_notify
|
|
notify:
|
|
- restart services
|
|
become: yes
|
|
|
|
- name: "Mount additional disks - nfs"
|
|
mount:
|
|
name: '{{ item.mount }}'
|
|
fstype: '{{ item.fstype }}'
|
|
opts: '{{ item.mount_options|d(omit) }}'
|
|
src: '{{ item.disk }}'
|
|
state: '{{ item.mount_state|d("mounted") }}'
|
|
when: item.fstype == 'nfs'
|
|
with_items: '{{ disks_additional_disks }}'
|
|
tags: ['disks']
|
|
register: disks_additional_disks_nfs_handler_notify
|
|
notify:
|
|
- restart services - nfs
|
|
become: yes
|
|
|
|
- name: "Ensure the permissions are set correctly"
|
|
file:
|
|
path: '{{ item.mount }}'
|
|
owner: '{{ item.user | default("root") }}'
|
|
group: '{{ item.group | default("root") }}'
|
|
state: directory
|
|
with_items: '{{ disks_additional_disks }}'
|
|
when: item.user is defined or item.group is defined
|
|
tags: ['disks']
|
|
become: yes
|
|
|
|
- meta: flush_handlers
|