[PYTHON] Construction de l'environnement de développement Mac (Ansible + Serverspec + Travis CI)

Aperçu

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

Construction d'environnement avec Ansible

--Mainly ansible's module hombrew et hombrew-cask module A pu être installé.

[localhost]
127.0.0.1

[localhost:vars]
ansible_connection=local

Gestion des rôles

--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

Testé avec Serverspec

Construire / tester avec Travis CI

--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

mise à jour / mise à niveau homebrew

[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 }}

Référence aux variables d'environnement et aux chemins

--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

Notification de fin par le plug-in Callbacks d'Ansible

--Le script est ici

Prise en charge de la limite de temps de construction de Travis

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.

  1. Préparez une variable d'environnement appelée TRAVIS_BUILD_SKIP
  2. [Vérifiez cette variable d'environnement dans role / spec et ne l'exécutez pas](https://github.com/tell-k/blister-pack-mine/blob/master/roles/people/tell_k/tasks /homebrew.yml#L68-L72)

――La sensation de tomber est incroyable, alors cherchez une meilleure méthode.

chèque pelucheux

--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

Gérer les builds privés

--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).

Gestion du référentiel github

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

De côté

Alternative

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.

référence

Livres

Lié à Ansible

Liés à Boxen

Lié à la maison

Lié à Serverspec

Recommended Posts

Construction de l'environnement de développement Mac (Ansible + Serverspec + Travis CI)
Construction de l'environnement Ansible pour Mac
Construction de l'environnement de développement Mac OS X Mavericks 10.9.5
Construction de l'environnement de développement Mac OS X Yosemite 10.10
Mémo de construction de l'environnement de développement Mac OS X
Construction de l'environnement Anaconda-4.2.0-python3 (Mac)
Construction de l'environnement de développement Python
Construction de l'environnement de développement python2.7
Construction de l'environnement de développement Mac OS X Mountain Lion 10.8.5
Construction de l'environnement Pyxel (Mac)
Mémo de construction de l'environnement de développement Django
Construction de l'environnement CI ~ Édition Python ~
Construction de l'environnement Python pour Mac
[MEMO] [Construction de l'environnement de développement] Python
construction de l'environnement de développement de projet django
[MEMO] [Construction de l'environnement de développement] wine
Construction de l'environnement Anaconda sur Mac (version 2018)
J'ai vérifié la construction de l'environnement Mac Python
[Pour les débutants] Django -Construction d'environnement de développement-
Mémo de construction de l'environnement Python sur Mac
[Python3] Construction de l'environnement de développement << Édition Windows >>
Construction de l'environnement de développement Python sur macOS
[MEMO] [Construction de l'environnement de développement] Jupyter Notebook
Construire un environnement pour python3.8 sur Mac
Construction de l'environnement Python3 TensorFlow pour Mac
Mémo de construction de l'environnement de développement Emacs Python
Mémo de construction de l'environnement de développement Ubuntu Desktop 20.04
Construction de l'environnement de développement (version 2020, WSL2 + VcXsrv)
Procédure de construction de l'environnement de développement Python (anaconda) (SpringToolsSuites) _2020.4
Développement d'applications WEB à l'aide de django-Construction d'environnement de développement-
Comment préparer l'environnement de développement Python [Mac]
Construction de l'environnement de développement Python3 + venv + VSCode + macOS
Préparer l'environnement de développement pour keyhac pour Mac
Construction d'un environnement de développement pour l'atelier Choreonoid
Création d'un environnement de développement Python pour Windows + gVim + Poetry
Construction de l'environnement Python3 TensorFlow (Mac et pyenv virtualenv)
Construction d'environnement explosif Python à partir de zéro (Mac)
Kotlin / Procédure de construction et d'installation de l'environnement de développement natif et tutoriel
Créez un environnement de développement Python sur votre Mac
De 0 à la construction de l'environnement de développement Django à l'exploitation de base
[Note] Comment créer un environnement de développement Mac
Construction de l'environnement Django
Construction de l'environnement DeepIE3D
Construction d'environnement basée sur Emacs
Construction de l'environnement Linux
Construction d'environnement (python)
construction d'environnement django
Construction de l'environnement CodeIgniter
construction d'environnement python
Python - Construction de l'environnement
Construction de l'environnement Python
Construction de l'environnement Golang
Construction de l'environnement de word2vec
Créer un environnement de développement Django à l'aide de pyenv-virtualenv sur Mac
Créez un environnement de développement local pour Laravel6.X sur votre Mac
Créez un environnement de développement python avec vagrant + ansible + fabric
Procédure de construction de l'environnement de développement Google App Engine / Python (fin 2014)
Créer un environnement de développement Python sur Mac OS X