Esta lección está en elaboración
Esta lección es una recopilación de playbooks para realizar diferentes tareas de administración.
Para la administración de cuentas de usuario, Ansible dispone del módulo user.
Este playbook cambia la contraseña de un usuario:
---
- hosts: 'clients'
vars:
user_name: 'barto'
new_password: 'barto'
tasks:
- name: 'Change user password'
become: true
user:
name: '{{ user_name }}'
password: '{{ new_password | password_hash("sha512") }}'
update_password: 'always'
Notas:
El nombre del ordenador se encuentra en dos ficheros, /etc/hostname y /etc/hosts [Documentación de Debian]
Para la administración del nombre del ordenador en /etc/hostname, Ansible dispone del módulo hostname.
Para la administración del nombre del ordenador en /etc/hosts, Ansible no dispone actualmente (mayo de 2018) de un módulo específico, pero podemos recurrir al módulo replace para cambiar el nombre.
Este playbook cambia el nombre del ordenador:
---
- hosts: 'clients'
vars:
new_computer_name: 'hal'
tasks:
- name: 'Change computer name (1)'
become: true
replace:
path: '/etc/hosts'
regexp: '{{ ansible_hostname }}'
replace: '{{ new_computer_name }}'
backup: 'yes'
- name: 'Change computer name (2)'
become: true
hostname:
name: '{{ new_computer_name }}'
Notas:
Las opciones regionales se especifican mediante varias variables de entorno [Documentación de Ubuntu - Documentación de Debian
Para generar el fichero con las variables de entornos de localización, Ansible dispone del módulo locale_gen.
Para esperar hasta que el nodo cliente esté en marcha, Ansible dispone del módulo wait_for_connection.
Para enviar comandos individuales, Ansible dispone de los módulos command y shell.
Este playbook cambia los códigos regionales
---
- hosts: 'clients'
vars:
new_locale: 'es_ES.UTF-8'
new_lc_messages: 'es_ES.UTF-8'
tasks:
- name: 'Generate locale'
become: true
locale_gen:
name: '{{ new_locale }}'
state: 'present'
- name: 'Reboot'
become: true
shell: 'sleep 5 && /sbin/shutdown -r now'
async: true
poll: false
- name: 'Wait for reboot'
wait_for_connection:
- name: 'Change locale'
become: true
command: 'update-locale LANG={{ new_locale }} LC_MESSAGES={{ new_lc_messages }}'