opsta.host_preparation

Préparation de l'hôte

Rôle Ansible pour préparer un hôte Ubuntu.

  • Configurer le nom d'hôte (optionnel)
  • Configurer apt-cacher-ng (optionnel)
  • Mettre à jour tous les paquets, y compris le noyau, vers la version la plus récente
  • Installer certains outils (voir Variables du Rôle)
  • Optimiser le système (voir Variables du Rôle)
  • Configurer NTP
  • Configurer un utilisateur pour pouvoir utiliser sudo sans mot de passe
  • Configurer authorized_keys

Vous pouvez voir un exemple sur la création d'un playbook, la configuration et des commandes d'exemple ici : https://github.com/winggundamth/ansible-wing-playbook

Exigences

Avant d'utiliser ce rôle, veuillez préparer votre clé publique pour qu'elle soit dans authorized_keys et configurer host_preparation_authorized_keys_path pour pointer vers vos fichiers authorized_keys.

Variables du Rôle

# Ceci sont des variables par défaut
host_preparation_reboot_timeout: 600
host_preparation_ntp_server: ntp.ubuntu.com
host_preparation_sshd_config: /etc/ssh/sshd_config
host_preparation_sshd_port: 22
host_preparation_group_authorized_keys_path: "{{ playbook_dir }}/files/groups/{{ group_names[-1] }}/authorized_keys"
host_preparation_global_authorized_keys_path: "{{ playbook_dir }}/files/authorized_keys"
host_preparation_base_packages:
  - htop
  - iotop
  - sysstat
  - iftop
host_preparation_is_config_hostname: false
host_preparation_is_tuning: false
host_preparation_sysctl_vars:
  - { regexp: '^fs\.file-max \= ', line: 'fs.file-max = 1000000' }
  - { regexp: '^net\.ipv4\.tcp_max_syn_backlog \= ', line: 'net.ipv4.tcp_max_syn_backlog = 65535' }
  - { regexp: '^net\.ipv4\.tcp_tw_reuse \= ', line: 'net.ipv4.tcp_tw_reuse = 1' }
  - { regexp: '^net\.ipv4\.tcp_tw_recycle \= ', line: 'net.ipv4.tcp_tw_recycle = 1' }
  - { regexp: '^net\.ipv4\.ip_local_port_range \= ', line: 'net.ipv4.ip_local_port_range = 1024 65000' }
  - { regexp: '^net\.ipv4\.tcp_max_tw_buckets \= ', line: 'net.ipv4.tcp_max_tw_buckets = 400000' }
  - { regexp: '^net\.ipv4\.tcp_no_metrics_save \= ', line: 'net.ipv4.tcp_no_metrics_save = 1' }
  - { regexp: '^net\.ipv4\.tcp_rmem \= ', line: 'net.ipv4.tcp_rmem = 4096 87380 16777216' }
  - { regexp: '^net\.ipv4\.tcp_syn_retries \= ', line: 'net.ipv4.tcp_syn_retries = 2' }
  - { regexp: '^net\.ipv4\.tcp_synack_retries \= ', line: 'net.ipv4.tcp_synack_retries = 2' }
  - { regexp: '^net\.ipv4\.tcp_wmem \= ', line: 'net.ipv4.tcp_wmem = 4096 65536 16777216' }
  - { regexp: '^net\.core\.somaxconn \= ', line: 'net.core.somaxconn = 65535' }
  - { regexp: '^net\.core\.netdev_max_backlog \= ', line: 'net.core.netdev_max_backlog = 4096' }
  - { regexp: '^net\.core\.rmem_max \= ', line: 'net.core.rmem_max = 16777216' }
  - { regexp: '^net\.core\.wmem_max \= ', line: 'net.core.wmem_max = 16777216' }
  - { regexp: '^net\.nf_conntrack_max \= ', line: 'net.nf_conntrack_max = 1048576' }
  - { regexp: '^vm\.min_free_kbytes \= ', line: 'vm.min_free_kbytes = 65536' }
  - { regexp: '^vm\.overcommit_memory \= ', line: 'vm.overcommit_memory = 1' }
  - { regexp: '^vm\.swappiness \= ', line: 'vm.swappiness = 0' }
host_preparation_rc_vars:
  - { regexp: '^echo never > /sys/kernel/mm/transparent_hugepage/enabled', line: 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' }
  - { regexp: '^echo never > /sys/kernel/mm/transparent_hugepage/defrag', line: 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' }
  - { regexp: '^ip link set eth0 txqueuelen ', line: 'ip link set eth0 txqueuelen 5000' }
host_preparation_limits_vars:
  - { regexp: '^\* soft nofile ', line: '* soft nofile 1000000' }
  - { regexp: '^\* hard nofile ', line: '* hard nofile 1000000' }
  - { regexp: '^\* soft nproc ', line: '* soft nproc 393216' }
  - { regexp: '^\* hard nproc ', line: '* hard nproc 393216' }

# Ceci sont des variables optionnelles
host_preparation_apt_cacher_ng: http://apt-cacher-ng.example.com:3142

Dépendances

NA

Exemple de Playbook

Puisqu'Ubuntu Xenial ne vient pas avec Python 2 par défaut, le playbook doit d'abord installer Python 2 sans rassembler les faits.

- hosts: all
  gather_facts: no
  become: true
  pre_tasks:
    - name: Installer Python 2 d'abord
      raw: python --version || apt update && apt install -y python
  roles:
    - winggundamth.host_preparation
  vars_files:
    - "{{ host_preparation_vars_file }}"

Liste des tags utiles

Il existe quelques tags utiles que vous pouvez utiliser pour maintenir votre hôte Ubuntu.

  • host-preparation-apt-cacher-ng
  • host-preparation-configure-hostname
  • host-preparation-configure-ntp
  • host-preparation-install-base-packages
  • host-preparation-update-packages
  • host-preparation-tuning
  • host-preparation-configure-authorized_keys
  • host-preparation-configure-user
  • host-preparation-reboot (cela nécessite de configurer la variable host_preparation_need_reboot à true)

Vous pouvez spécifier un tag en utilisant --tag. Par exemple, si vous souhaitez uniquement configurer authorized_keys et limiter à seulement au groupe de serveurs de production et de base de données. Vous pouvez exécuter la commande suivante :

ansible-playbook -i inventories/host_preparation --limit production:database \
--tag host-preparation-configure-authorized_keys host-preparation.yml

Licence

MIT

Informations sur l'auteur

Vous pouvez voir mes travaux sur https://github.com/winggundamth

À propos du projet

Ansible role to prepare Ubuntu host.

Installer
ansible-galaxy install opsta.host_preparation
Licence
mit
Téléchargements
710
Propriétaire
We build scale