memory - particion - memoria swap android
AƱadir memoria de intercambio con ansible (3)
Aquí está el libro de jugabilidad con intercambio de ansible que utilizo para instalar 4GB (o lo que sea que configure group_vars
para dd_bs_size_mb
* swap_count
) de espacio de intercambio en nuevos servidores:
https://github.com/tribou/ansible-swap
También agregué una función en mi ~/.bash_profile
para ayudar con la tarea:
# Path to where you clone the repo
ANSIBLE_SWAP_PLAYBOOK=$HOME/dev/ansible-swap
install-swap ()
{
usage=''Usage: install-swap HOST'';
if [ $# -ne 1 ]; then
echo "$usage";
return 1;
fi;
ansible-playbook $ANSIBLE_SWAP_PLAYBOOK/ansible-swap/site.yml --extra-vars "target=$1"
}
Solo asegúrese de agregar su HOST
a su inventario disponible primero.
Entonces es solo install-swap HOST
.
Estoy trabajando en un proyecto en el que es necesario tener memoria de intercambio en mis servidores para evitar que algunos procesos de Python que se ejecutan durante mucho tiempo se queden sin memoria y, por primera vez, me di cuenta de que mis cajas de vagrant de Ubuntu y las instancias de Ubuntu de AWS no tenían una. preparar.
En https://github.com/ansible/ansible/issues/5241 se discutió una posible solución integrada, pero nunca se implementó, así que supongo que esta debería ser una tarea bastante común para automatizar.
¿Cómo configurar una memoria de intercambio basada en archivos con ansible de una manera idempotente? ¿Qué módulos o variables proporciona ayuda ansible con esta configuración (como la variable ansible_swaptotal_mb
)?
Esta es mi solución actual:
- name: Create swap file
command: dd if=/dev/zero of={{ swap_file_path }} bs=1024 count={{ swap_file_size_mb }}k
creates="{{ swap_file_path }}"
tags:
- swap.file.create
- name: Change swap file permissions
file: path="{{ swap_file_path }}"
owner=root
group=root
mode=0600
tags:
- swap.file.permissions
- name: "Check swap file type"
command: file {{ swap_file_path }}
register: swapfile
tags:
- swap.file.mkswap
- name: Make swap file
command: "sudo mkswap {{ swap_file_path }}"
when: swapfile.stdout.find(''swap file'') == -1
tags:
- swap.file.mkswap
- name: Write swap entry in fstab
mount: name=none
src={{ swap_file_path }}
fstype=swap
opts=sw
passno=0
dump=0
state=present
tags:
- swap.fstab
- name: Mount swap
command: "swapon {{ swap_file_path }}"
when: ansible_swaptotal_mb < 1
tags:
- swap.file.swapon
Intenté la respuesta anterior, pero "Check swap file type"
siempre regresó como changed
y, por lo tanto, no es idempotent que se recomienda como una mejor práctica al escribir tareas Ansible.
La función que se muestra a continuación se ha probado en Ubuntu 14.04 Trusty y no requiere que se habilite gather_facts
de datos.
- name: Set swap_file variable
set_fact:
swap_file: "{{swap_file_path}}"
tags:
- swap.set.file.path
- name: Check if swap file exists
stat:
path: "{{swap_file}}"
register: swap_file_check
tags:
- swap.file.check
- name: Create swap file
command: fallocate -l {{swap_file_size}} {{swap_file}}
when: not swap_file_check.stat.exists
tags:
- swap.file.create
- name: Change swap file permissions
file: path="{{swap_file}}"
owner=root
group=root
mode=0600
tags:
- swap.file.permissions
- name: Format swap file
sudo: yes
command: "mkswap {{swap_file}}"
when: not swap_file_check.stat.exists
tags:
- swap.file.mkswap
- name: Write swap entry in fstab
mount: name=none
src={{swap_file}}
fstype=swap
opts=sw
passno=0
dump=0
state=present
tags:
- swap.fstab
- name: Turn on swap
sudo: yes
command: swapon -a
when: not swap_file_check.stat.exists
tags:
- swap.turn.on
- name: Set swappiness
sudo: yes
sysctl:
name: vm.swappiness
value: "{{swappiness}}"
tags:
- swap.set.swappiness
Vars requeridos:
swap_file_path: /swapfile
# Use any of the following suffixes
# c=1
# w=2
# b=512
# kB=1000
# K=1024
# MB=1000*1000
# M=1024*1024
# xM=M
# GB=1000*1000*1000
# G=1024*1024*1024
swap_file_size: 4G
swappiness: 1