2017-09-29 6 views
0

Je souhaite créer des déploiements complexes en tant que compositions de référentiels plus petits. Par exemple, je pourrais vouloir déployer et inventorier le serveur de gestion sous forme d'une installation Oracle UIM, que je voudrais construire sur les rôles qui configurent le serveur, installent le jdk, installent weblogic, configurent un domaine de base, puis drop UIM sur cette pile.Existe-t-il une méthode standard de l'industrie pour la composition des configurations déployables utilisant des sous-modules git par rôle?

Je peux créer des rôles qui font nos configurations standards, qui installent le jdk, qui installent les binaires weblogic, qui installent une configuration de domaine standardisée, etc., mais certaines choses vont toujours avoir besoin de peaufinage et d'abstraction.

Existe-t-il un standard pour la définition de variables communes à utiliser entre elles, telles que {{install_user}} ou {{DB_URL}}? Si ce n'est pas le cas, est-ce que quelqu'un a de bonnes suggestions pour aider à garder le design sur la bonne voie en l'absence d'un chef de projet?

Répondre

1

je configuration vraiment complexe d'environ 10 microservices et ils utilisent des tonnes de variables communes et pour lesquelles j'ai créé un rôle distinct avec le nom common_vars et il a seulement deux dossiers à l'intérieur defaults et tasks, où defaults contient toutes les les variables communes et tasks ont main.yml vide et j'importe ce rôle en tant que méta-dépendance pour tous mes autres rôles de déploiement de services pour partager les variables communes.

-- common_vars 
| |-- defaults 
| | `-- main.yml 
| `-- tasks 
|  `-- main.yml 

Mon defaults/main.yml ressembler à ceci (exemple minimal, en réalité, il est vraiment grand):

--- 
ENVIRONMENT: "dev" 

COMMON_BASE_DIR: "/mydir" 
COMMON_WEB_DIR: "{{ COMMON_BASE_DIR }}/www" 

COMMON_LOG_DIR: "/var/log" 

COMMON_WEB_USER: "www-data" 
COMMON_WEB_GROUP: "www-data" 


common_ubuntu_packages: 
    - git 
    - vim 
    - screen 

Dans mes autres rôles meta/main.yml ajouter comme la dépendance comme ceci:

--- 
dependencies: 
    - common_vars 
+0

Il Est-ce que. Permettez-moi de cogiter un peu et je pourrais offrir une réponse de ma part pour la critique publique et la contribution. –

+0

Est-ce que cela laisse d'autres rôles accéder à ces valeurs? –

+1

Oui, si vous l'ajoutez dans 'meta/main.yml' comme' dependency' comme je l'ai mentionné dans ma réponse –