[PYTHON] Aufbau einer Mac-Entwicklungsumgebung (Ansible + Serverspec + Travis CI)

Überblick

Ich habe versucht, den Aufbau der Mac-Entwicklungsumgebung mit Ansible zu automatisieren. Notieren Sie sich also, was ich getan und was ich untersucht habe.

Ich wollte so etwas wie Boxen mit Ansible machen. Also habe ich zwei vorbereitet, eine wie our-boxen (Vorlage) und die andere, die ich kopiert und angepasst habe.

--https: //github.com/tell-k/blister-pack .... Grundlegende Setup-Inhalte --https: //github.com/tell-k/blister-pack-mine ... Ihr persönliches Setup

Informationen zur Verwendung von Blister-Pack finden Sie unter README.rst.

Ich habe die folgenden Dinge getan.

Umweltbau mit Ansible

[localhost]
127.0.0.1

[localhost:vars]
ansible_connection=local

Rollenverwaltung

├── Makefile
├── README.rst
├── Rakefile
├── callback_plugins
├── hosts
├── playbook.yml
├── roles
│   ├── common   # <-Häufig verwendete Rollengruppe
│   ├── people   # <-Rollengruppe für jeden Einzelnen
│   └── projects # <-Rollengruppe für jedes Projekt
└── spec
    ├── common
    ├── people
    ├── projects
    └── spec_helper.rb

Getestet mit Serverspec

--Ermöglicht das Testen des Build-Inhalts in Ansible mit Serverspec.

Erstellen / Testen mit Travis CI

--Travis CI bietet eine OS X-Umgebung als Build-Umgebung (http://docs.travis-ci.com/user/osx-ci-environment).

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

Homebrew Update / Upgrade

--Homebrew Update aktualisiert Formel und Homebrew selbst. --upgrade erstellt / installiert das Zielpaket neu.

[localhost]
127.0.0.1

[localhost:vars]
homebrew_update=yes     #Ja, um immer zu aktualisieren. Stellen Sie no ein, wenn Sie sich langsam fühlen
homebrew_upgrade_all=no #Ja, wenn alle Pakete aktualisiert werden müssen

Es geht nur zum Homebrew-Modul

- name: Update homebrew
  homebrew: update_homebrew={{ homebrew_update }} upgrade_all={{ homebrew_upgrade_all }}

Verweis auf Umgebungsvariablen und Pfade

[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`') }}

Verwenden Sie dies in der folgenden Rolle

- name: Copy dnsmaq.conf
  copy: src=roles/common/dnsmasq/files/dnsmasq.conf dest="{{ homebrew_prefix }}/etc/dnsmasq.conf" backup=yes

Im Fall von Serverspec habe ich es in spec_helper.rb definiert, ohne an irgendetwas zu denken.

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

Abschlussbenachrichtigung durch das Callback-Plug-In von Ansible

Unterstützung für Travis Build-Zeitlimit

Travis wird den Build unter den folgenden Bedingungen zwangsweise beenden.

Derzeit überspringt Travis Elemente, deren Installation lange dauert.

  1. Bereiten Sie eine Umgebungsvariable mit dem Namen TRAVIS_BUILD_SKIP vor
  2. [Überprüfen Sie diese Umgebungsvariable in Rolle / Spezifikation und führen Sie sie nicht aus](https://github.com/tell-k/blister-pack-mine/blob/master/roles/people/tell_k/tasks /homebrew.yml#L68-L72)

――Das Gefühl, umzufallen, ist erstaunlich. Suchen Sie nach einer besseren Methode.

fusseliger Scheck

--Ansible hat standardmäßig die Option --syntax-check

Private Builds verwalten

Handhabung des Github-Repository

--Privatschlüssel erforderlich, um das Github-Repository über SSH mit dem Git-Modul von ansible auf Travis CI zu klonen

Beispiel:Das Repo des Git-Moduls ist eine URL, die mit https beginnt.
- 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

Beiseite

Alternative

Es gibt verschiedene andere Ideen / Tools zum Erstellen einer Mac OS X-Umgebung mit Ansible.

Anfangs habe ich versucht, diese Tools zu verwenden, aber aus folgenden Gründen aufgehört.

――Es schien mühsam zu sein, etwas Spezielles für andere Tools als Ansible zu lernen.

Referenz

Bücher

Ansible verwandt

Boxen verwandt

Homebrew-Fass verwandt

Serverspezifiziert

Recommended Posts

Aufbau einer Mac-Entwicklungsumgebung (Ansible + Serverspec + Travis CI)
Ansible Umgebungskonstruktion Für Mac
Mac OS X Mavericks 10.9.5 Aufbau einer Entwicklungsumgebung
Mac OS X Yosemite 10.10 Aufbau einer Entwicklungsumgebung
Konstruktionsnotiz für die Mac OS X-Entwicklungsumgebung
Aufbau einer Anaconda-4.2.0-Python3-Umgebung (Mac)
Aufbau einer Python-Entwicklungsumgebung
python2.7 Konstruktion der Entwicklungsumgebung
Mac OS X Mountain Lion 10.8.5 Aufbau einer Entwicklungsumgebung
Pyxel-Umgebungskonstruktion (Mac)
Django Entwicklungsumgebung Bau Memo
CI-Umgebungskonstruktion ~ Python Edition ~
Aufbau einer Python-Umgebung für Mac
[MEMO] [Entwicklung der Entwicklungsumgebung] Python
Django Projekt Entwicklungsumgebung Bau
[MEMO] [Entwicklungsumgebung Bau] Wein
Aufbau einer Anaconda-Umgebung auf einem Mac (Version 2018)
Ich habe die Konstruktion der Mac Python-Umgebung überprüft
[Für Anfänger] Django -Entwicklungsumgebung Bau-
Konstruktionsnotiz für die Python-Umgebung auf dem Mac
[Python3] Aufbau der Entwicklungsumgebung << Windows Edition >>
Aufbau einer Python-Entwicklungsumgebung unter macOS
[MEMO] [Aufbau der Entwicklungsumgebung] Jupyter Notebook
Erstellen einer Umgebung für Python3.8 auf einem Mac
Python3 TensorFlow für Mac-Umgebungskonstruktion
Konstruktionsnotiz für die Emacs Python-Entwicklungsumgebung
Konstruktionsnotiz für die Ubuntu Desktop 20.04-Entwicklungsumgebung
Konstruktion der Entwicklungsumgebung (Version 2020, WSL2 + VcXsrv)
Konstruktionsverfahren für die Python (Anaconda) -Entwicklungsumgebung (SpringToolsSuites) _2020.4
WEB-Anwendungsentwicklung mit Django-Development Environment Construction-
So bereiten Sie die Python-Entwicklungsumgebung vor [Mac]
Aufbau der Python3 + venv + VSCode + macOS-Entwicklungsumgebung
Bereiten Sie die Entwicklungsumgebung für keyhac für Mac vor
Bau einer Entwicklungsumgebung für die Choreonoid-Werkstatt
Erstellen einer Python-Entwicklungsumgebung für Windows + gVim + Poetry
Aufbau der Python3 TensorFlow-Umgebung (Mac und pyenv virtualenv)
Aufbau einer explosiven Python-Umgebung ab Null (Mac)
Konstruktions- und Installationsverfahren für Kotlin / Native Development Environment & Tutorial
Erstellen Sie eine Python-Entwicklungsumgebung auf Ihrem Mac
Von 0 bis Django Entwicklungsumgebung Konstruktion bis Grundbetrieb
[Hinweis] So erstellen Sie eine Mac-Entwicklungsumgebung
Django Umweltbau
DeepIE3D-Umgebungskonstruktion
Emacs-basierte Umgebungskonstruktion
Aufbau einer Linux-Umgebung
Umgebungskonstruktion (Python)
Django Umweltbau
CodeIgniter-Umgebungskonstruktion
Python-Umgebungskonstruktion
Python - Umgebungskonstruktion
Aufbau einer Python-Umgebung
Golang Umweltbau
Umgebungskonstruktion von word2vec
Erstellen einer Django-Entwicklungsumgebung mit pyenv-virtualenv auf einem Mac
Erstellen Sie eine lokale Entwicklungsumgebung für Laravel6.X auf Ihrem Mac
Erstellen Sie eine Python-Entwicklungsumgebung mit Vagrant + Ansible + Fabric
Konstruktionsverfahren für die Google App Engine / Python-Entwicklungsumgebung (Ende 2014)
Erstellen Sie eine Python-Entwicklungsumgebung unter Mac OS X.