Ansible Galaxy

Ansible Galaxy is de plek waar iedereen role-packages kan toevoegen die dan weer gebruikt kunnen worden zodat je het niet zelf hoeft te schrijven. Er zijn ontzettend veel packages beschikbaar dus we gaan eens kijken of we hier wat van kunnen gebruiken.

Website: https://galaxy.ansible.com/

MOTD

Hiervan zijn er meerdere beschikbaar en we kiezen degene die de meeste platforms ondersteund, dus Debian, CentOS, Ubuntu, etc.. en we komen uit bij ‘mrlesmithjr.motd’

Downloaden hiervan gaat via het commando:

ansible-galaxy install mrlesmithjr.motd

De role wordt standaard geïnstalleerd in /etc/ansible/roles/ en om deze te gebruiken in je playbook volstaat het om de naam toe te voegen aan je reeds bestaande roles voor de servers waarbij je dit wilt instellen. Bijvoorbeeld voor alle nodes in common:

- name: apply common configuration to all nodes
 hosts: all
 remote_user: root

roles:
 - common
 - role: mrlesmithjr.motd

Met de standaard instellingen wordt al een informatieve motd gegenereerd en we gaan dus de playbook runnen:

ansible-playbook -i musicplayers site.yml

Het resultaat zien we als we opnieuw inloggen:

SUDOERS

Een andere role is die van gebruikers die mogen sudo-en. Daarvoor zijn er uiteraard ook weer veel van te vinden in Ansible Galaxy en we kiezen (vrij willekeurig) voor die van ‘salamachinas’, dus:

ansible-galaxy install salamachinas.sudoers

We passen nu het playbook aan zodat er een aanpassing wordt gedaan in de /etc/sudoers.d/ op de nodes die in de [core] group staan:

- name: configure and deploy the core servers
  hosts: core
  become: true
  roles:
     - { role: 'salamachinas.sudoers', tags: 'sudoers' }
  vars:
     promoted:
        - {name: ansible, promote: ALL, nopasswd: true}

Nadat het playbook is uitgevoerd is er op de nodes in group [core], een bestand aangemaakt in de directory /etc/sudoers.d/ genaamd ‘ansible’ met de volgende inhoud:

ansible ALL=(ALL) NOPASSWD: ALL

De gebruiker ‘ansible’ kan hierdoor nu sudo gebruiken zonder wachtwoord in te hoeven geven.Als we dan ook nog ervoor zorgen dat de gebruiker ‘ansible’ aanwezig is en de juiste publieke sleutel gebruikt gaat worden dan kunnen we dit account gebruiken voor de ansible-deployments.

ADDUSER

Via Ansible Galaxy vinden we de adduser role-package van ‘juju4’ en die installeren we met:

ansible-galaxy install juju4.adduser

Het playbook gaat er alsvolgt uit zien om een gebruiker aan te maken met de naam ‘ansible’:

- name: configure and deploy the core servers
 hosts: core
 become: true
 roles:
    - juju4.adduser
 vars:
    adduser_user_name: ansible
    adduser_sudoroot: false
    adduser_password: ansible

De variable ‘adduser_sudoroot’ zetten we op false omdat deze anders een sudo-regel toevoegt in de sudoers terwijl we dit met een andere role al beheren.

Met deze role-package kan tevens een publieke sleutel meegegeven worden om in de authorized_keys van de nieuwe gebruiker te plaatsen. Gebruik hiervoor dan de variabele met de key-file vanuit /etc/ansible/roles/juju4.adduser/files/

adduser_public_keys:
- publieke_sleutel.pub

Nadat de playbook is uitgerold is de gebruiker toegevoegd en kan gebruikt worden voor bv. Ansible deployments.

.