Supposons que j'aie un hôte qui soit, entre autres, un serveur web, où le rôle Ansible correspondant installe nginx
effectue une configuration essentielle dans /etc/nginx
et ouvre les ports 80 et 443 dans le pare-feu.
À un moment donné, je veux que cet hôte particulier ne soit plus un serveur web, parce que pour une raison quelconque, j'ai déplacé ce service ailleurs. Il suffit de retirer le serveur de [webservers]
dans l'inventaire laisserait des déchets dans le serveur. Idéalement, je voudrais désinstaller nginx
retirer le /etc/nginx
(et quelques autres répertoires), et fermez les ports 80 et 443 dans le pare-feu.
Dans Puppet, je peux le faire. Un hôte qui est un serveur web aura quelque chose comme ceci dans sa configuration :
class { 'nginx':
ensure => present,
}
et tout ce que j'ai à faire est de remplacer "présent" par "absent". Si le nginx
est bien écrite, elle annulera les modifications qu'elle a apportées. (Typiquement, un administrateur remplacera "présent" par "absent", et plus tard, quand il sera certain que tous les hôtes affectés ont annulé la configuration, il supprimera l'élément du manifeste).
De plus, je pense que le module pare-feu de Puppet supprime automatiquement les règles de pare-feu qui ne peuvent plus être trouvées dans le manifeste ; donc je pense que, pour le pare-feu, vous n'avez même pas besoin de faire cette chose "absente" ci-dessus, le pare-feu se fermera automatiquement de toute façon.
Comment puis-je réaliser ces choses avec Ansible ?
1 votes
Je pense que les questions hypothétiques n'ont pas vraiment leur place ici, même si votre question n'est pas dénuée de fondement. Au lieu de "Faisons comme si..." reformuler et dire par exemple "Dans Puppet, je peux changer le rôle d'un serveur et désinstaller nginx qui a été installé précédemment en changeant
ensure => present
aensure => absent
qui sera également... Comment faire la même chose avec ansible" etc. Idéalement avec un exemple de ce que vous avez déjà essayé.2 votes
Je dirais qu'Ansible n'est pas vraiment conçu pour ce genre de choses. Il est destiné aux serveurs reproductibles et jetables. Si vous ne voulez plus qu'une machine soit un serveur web, il vous suffit de l'effacer (ou d'y mettre fin s'il s'agit d'une instance en nuage) plutôt que de la réaffecter.
0 votes
@ceejayoz Je n'ai jamais rien lu de plus sur les Ansibles que dans le livre d'Orson Scott Card. Le jeu d'Ender & séquentiels mais ce que vous dites a beaucoup de sens dans l'orchestration du nuage.
0 votes
@ceejayoz : Pour l'instant, je n'utilise pas Ansible pour l'installation de plusieurs serveurs, mais pour configurer de petits serveurs autonomes. Je pense que c'est une utilisation valable. Ainsi, un serveur peut avoir nginx+django+PostgreSQL. Si plus tard je décide de mettre nginx ou nginx+django ailleurs, effacer tout le serveur et avoir besoin de ramener PostgreSQL à partir de la sauvegarde semblerait sous-optimal (sans parler du temps d'arrêt).