J'ai essayé d'automatiser la construction de l'environnement de développement Mac avec Ansible, alors notez ce que j'ai fait et ce que j'ai étudié.
Je voulais faire quelque chose comme Boxen avec ansible. J'en ai donc préparé deux, un comme our-boxen (template) et l'autre que j'ai copié et personnalisé.
--https: //github.com/tell-k/blister-pack .... Contenu de la configuration de base --https: //github.com/tell-k/blister-pack-mine ... Votre configuration personnelle
Veuillez vous référer à README.rst pour savoir comment utiliser blister-pack.
J'ai fait les choses suivantes.
--Construction automatique de l'environnement de développement Mac OSX avec ansible. Installez les packages requis principalement avec hombrew + homebrew-cask --Comme Boxen, gérez le contenu de la construction (rôle) en divisant en parties communes, individus et projets. --Test avec Serverspec. --Exécuter la construction / tester avec Travis CI
--Mainly ansible's module hombrew et hombrew-cask module A pu être installé.
[localhost]
127.0.0.1
[localhost:vars]
ansible_connection=local
--Comme Boxen, le contenu de la construction est géré séparément pour chaque partie commune / individu / projet.
├── Makefile
├── README.rst
├── Rakefile
├── callback_plugins
├── hosts
├── playbook.yml
├── roles
│ ├── common # <-Groupe de rôles couramment utilisé
│ ├── people # <-Groupe de rôle pour chaque individu
│ └── projects # <-Groupe de rôles pour chaque projet
└── spec
├── common
├── people
├── projects
└── spec_helper.rb
--Travis CI fournit un environnement OS X comme environnement de construction (http://docs.travis-ci.com/user/osx-ci-environment) --Construire / tester en l'utilisant
language: objective-c
os:
- osx
before_install:
- brew update
- brew install python
- brew install ansible
- ansible-playbook -vv playbook.yml -i hosts
script:
- make test
TIPS
[localhost]
127.0.0.1
[localhost:vars]
homebrew_update=yes #Oui pour toujours mettre à jour. Réglez sur non si vous vous sentez lent
homebrew_upgrade_all=no #Oui si tous les packages doivent être mis à jour
Il passe juste au module homebrew
- name: Update homebrew
homebrew: update_homebrew={{ homebrew_update }} upgrade_all={{ homebrew_upgrade_all }}
--Pour homebrew etc., vous pouvez obtenir le chemin avec "hombrew --prefix" "homebrew --cellar" etc. ――Comment transmettre cela à ansible et serverspec.
[localhost]
127.0.0.1
[localhost:vars]
home_path={{ lookup('env','HOME') }}
homebrew_prefix={{ lookup('pipe','echo `brew --prefix`') }}
homebrew_cellar={{ lookup('pipe','echo `brew --cellar`') }}
Utilisez ceci dans le rôle comme suit
- name: Copy dnsmaq.conf
copy: src=roles/common/dnsmasq/files/dnsmasq.conf dest="{{ homebrew_prefix }}/etc/dnsmasq.conf" backup=yes
Dans le cas de Serverspec, je l'ai défini dans spec_helper.rb sans penser à rien.
require 'serverspec'
set :backend, :exec
def home_path
home_path = `echo ~/`
home_path.chomp
end
def homebrew_prefix
prefix = `brew --prefix`
prefix.chomp
end
def homebrew_cellar
cellar_path = `brew --cellar`
cellar_path.chomp
end
--Le script est ici
Travis mettra fin de force à la construction dans les conditions suivantes.
-Forciblement terminé si la construction prend plus de 50 minutes
Pour le moment, Travis ignore ceux qui prennent beaucoup de temps à installer.
――La sensation de tomber est incroyable, alors cherchez une meilleure méthode.
--Ansible a une option pour faire --syntax-check par défaut --Il existe également une bibliothèque appelée ansible-lint. -> J'ai eu une erreur avec tarvis + Je ne l'utilise pas maintenant car il ne vérifie pas beaucoup
--Par exemple, le groupe role / spec d'un projet privé est défini sur gitignore sous le répertoire "private". --Préparez YAML (private.yml) pour un usage privé et [Merge] playbook.yml et private.yml chaque fois que vous exécutez ansible (https://github.com/tell-k/blister-pack-mine/) blob / master / Makefile # L9-L11).
Exemple:Le dépôt du module git est une URL qui commence par https.
- name: Git clone tell-k/sphinxjp.themes.basicstrap
git: repo=https://github.com/tell-k/sphinxjp.themes.basicstrap.git dest=~/Work/python/sphinxjp.themes.basicstrap update=no
Il existe plusieurs autres idées / outils pour créer un environnement Mac OS X à l'aide d'Ansible.
Au départ, j'ai essayé d'utiliser ces outils, mais je me suis arrêté pour les raisons suivantes.
«Il semblait difficile d'apprendre quelque chose de spécifique à des outils autres qu'Ansible. --Il existe des commandes wrapper comme Boxen, mais le mécanisme de plug-in d'Ansible semble fonctionner comme un substitut.
Recommended Posts