Ansible et crontabs
Je suis très débutant avec ansible. J'ai écrit quelques tablettes playbook et bien, c'est génial. Cependant, je suis coincé avec un très simple admin tâche que chaque administrateur doit apprendre à gérer. Le scénario est très commun, beaucoup de serveurs: ubuntu, centos, les serveurs de nos différents clients, etc
Ma question est comment je dois organiser mon ansible structure pour gérer les crontabs des différents serveurs?
J'ai écrit tablettes playbook qui peut être appliqué à la plupart des serveurs avec quelques tâches d'administration: apt-get udpate, installer les serveurs ntp et de les synchroniser, mais je ne trouve pas la bonne façon de faire un ansible structure de fichiers (principale.yml, host_vars, des fichiers,des modèles,des rôles,etc) pour gérer tous les cron de chaque serveur.
Avez-vous un exemple ou un conseil?
Merci!!!
OriginalL'auteur Rubendob | 2014-02-14
Vous devez vous connecter pour publier un commentaire.
Je sais que je ne suis pas un expert mais Si certains ansible débutant a le même problème que moi peut-être que cela peut vous aider.
Comme je l'ai écrit il ya quelques jours, vous êtes l'apprentissage ansible, vous avez beaucoup de serveurs, vous pouvez même installer nginx, php-fpm, mysql, etc dans un tout nouveau ubuntu/centos zone en quelques minutes. Ce que je veux dire? Pas une, mais des serveurs dans le même temps, le rêve. Mais, oh oh maintenant, vous devez installer les différentes tâches cron dans lemp serveur 1 et lemp serveur 2.
Ensuite, vous avez à jouer avec ansible variables. Lorsque vous êtes débutant dans l'ansible monde les variables peuvent être un peu délicat.
Je ne dis pas que c'est la meilleure approche, mais, au moins, vous n'avez pas à maintenir l'individu fichiers cron pour chaque serveur.
D'abord, je vérifie la ansible_hostname de lemp serveur 1
comme vous le voyez, le nom d'hôte renvoyé par ansible est ns227962. Ensuite, j'ai un ansible structure comme:
-- principal.yml
|_ rôles
|_cron
|_tasks
|_main.yml
dans le principal de cron rôle, je suis
Avis c'est lors de la déclaration et ansible_hostname fera l'affaire.
Puis-je appliquer le principal.yml et c'est tout
Il a travaillé! 🙂
Dans d'autres situations, lorsque vous avez le même fichier de config, mais il y a des parties qui sont légèrement différents à l'aide de modèles qui vous seront utiles.
Maintenant, pour moi c'est ok, maintenant, je peux centraliser la gestion de la crons des serveurs avec un seul rôle.
Grâce
Êtes-vous de mettre chaque tâche cron à la même place? Pensez à la taille de ce playbook et la confusion qu'il peut être le maintenir.
OriginalL'auteur Rubendob
Il y a peut être un couple de façons de la peau, ce chat. Celui qui vient en premier à l'esprit est que vous pouvez attribuer tous les serveurs à un ou plusieurs rôles, et ont crons associés à vos rôles.
OriginalL'auteur user2956626
Je ne pense pas que ansible est l'outil idéal pour cette tâche. Ce que vous voulez, c'est un emploi gestionnaire de planification et non pas un gestionnaire de configuration.
Chronos peut être un outil adapté à la tâche.
OriginalL'auteur Alexander Jardim
La seule solution est de garder les tâches cron spécifiques à une application avec le code de l'application elle-même dans un fichier nommé "crontab.txt'. Facultatif, mais si elle existe, Ansible, vous les copiez dans crontab automatiquement.
Cela va créer un nouveau fichier crontab.
PROBLÈME POTENTIEL: Si vous avez plusieurs instances de la même application, puis en fonction de la Crontab de tâches, qui pourraient être en interaction avec une base de données centrale, vous courez le risque de duplication des tâches (faire la même tâche Cron x le nombre d'instances de l'application en cours d'exécution). Des Solutions pourrait être d'inclure une vérification du nom d'hôte/adresse ip afin que la tâche pour installer le crontab est de ne fonctionner que sur un exemple.
OriginalL'auteur Carson Cole