2017-07-21 18 views
1

Cela peut sembler complètement contre-intuitif, mais s'il vous plaît écoutez-moi. Je suis chef de produit et j'ai déjà vécu l'enfer des scripts d'installation de flocon de neige. J'ai récemment découvert Ansible, et je suis complètement convaincu que c'est la voie à suivre pour installer mon produit. Je travaille déjà avec ansible-container, pour automatiser la construction et déployer mon application dans des conteneurs.Convertir ansible en shell

Mais ... je ne peux pas imposer à mes clients. Certains clients ne veulent pas docker, ne veulent pas d'ansible, ne mettront même pas à jour la version de python sur leurs serveurs. Alors qu'est-ce que je fais? Est-ce que j'écris un script shell super compliqué pour toutes les installations possibles? Beurk !! Est-ce que j'écris un script shell séparé pour chaque installation du client? Double Yuck !! Mon idée est la suivante: conserver une version maîtresse de l'installation dans yaml, afin qu'elle puisse être utilisée par ansible, ansible-conteneur, ou tout autre outillage avancé. Ensuite, créez un utilitaire qui pourrait traduire le yaml, dans un script shell pour une plate-forme donnée, à la volée. Le code de l'utilitaire peut être quelque peu complexe, mais cela signifie que la maintenance du script d'installation réel reste simple.

Est-ce que quelqu'un a déjà vu quelque chose comme ça? Ou quelqu'un a-t-il une meilleure suggestion sur la façon de gérer cela?

+1

Je pense qu'il y a trop de choses à considérer en ce qui concerne votre produit. Ce serait vraiment laissé entièrement à l'opinion. Vous pouvez toujours utiliser l'Ansible pour générer des images en utilisant quelque chose comme Packer. Vous pouvez emballer votre application en fonction de la façon dont vous empaquetez généralement le logiciel écrit sur la pile que vous utilisez et fournissez un guide d'installation. Il y a littéralement des centaines d'options, et ce n'est pas pour cette communauté de déterminer pour vous comme indiqué ici: https://stackoverflow.com/help/on-topic – tsturzl

Répondre

2

Je crois à peine qu'il est possible de convertir Ansible en Shell.

Vous pouvez essayer de conditionner des packages Ansible, requis, des playbooks en tant qu'environnement virtuel et d'envoyer ce "programme d'installation" à vos clients. Jetez également un coup d'oeil à PEX, vous pouvez essayer de conditionner Ansible en exécutable unique avec lui.

+0

Semblable à comment marionnette a son installateur «tout en un», le chef a leur installation 'omnibus', empaquetant toutes vos dépendances dans leur propre répertoire est un moyen de le faire à condition qu'il n'y ait pas de 'ne peut pas installer la version X de python' et que 'nous ne voulons pas mettre à jour la version de base de python sur nos boites car on ne sait pas ce qui va casser ' – Cinderhaze

2

Vous savez que de nombreux produits sont déjà empaquetés à l'aide d'ansible ou de marionnettes (par exemple, des produits Red Hat récents comme Satellite, Ansible Tower, Storage Server)?

Comment définir la nécessité, pour l'installation de votre produit, d'avoir besoin d'une machine virtuelle temporaire («appliance») ou d'exécuter votre programme d'installation à partir d'un CD live personnalisé? Comme ansible est sans agent, il suffit de supprimer le répertoire ~/.ansible du répertoire de base de l'utilisateur de déploiement sur les machines cibles.