Türchen #22: Kleiner Blick hinter die Kulissen


Ein Blick in unseren Werkzeugkasten

Die Kommandozeile (auch “cli - command line interface” genannt) benötigen wir ständig: Hier sind alle wichtigen Werkzeuge installiert und konfiguriert. Neben Klassikern wie Git, make oder Docker benötigen wir aber noch jede Menge andere Programme und Helferlein. Unter Mac OSX hat sich Homebrew bewährt - der fehlende Paketmanager, wenn man zuvor viel mit Linux zu tun hatte.

Wie können wir nun sicherstellen, dass alle im Team und gerade neue Kollegen auch mit den gleichen Tools arbeiten können? Sicherlich: eine gute Wiki Seite mit Anleitungen und Programmlisten ist schon mal ein guter Anfang. Unser Ansatz ist darüberhinaus programmatisch und findet sich in einem Ansible Playbook wieder.

Was wir benötigen

Unsere Macbooks sind mit Homebrew, RubyGems, NodeJS/npm und Python/PIP ausgestattet. Damit können wir Software und Tools unterschiedlicher Quellen beziehen und bereitstellen. Die Bandbreite reicht da von Serverless (via: NPM) über aws-cli (Python/PIP) bis hin zu InSpec (Ruby/Gems). So sieht z. B. eine Ansible Tasks Datei aus:


---
- import_tasks: pip3.yml
  tags: [pip]

- include_tasks: npm.yml
  tags: [npm]

- include_tasks: zsh.yml
  tags: [zsh]

- include_tasks: gem.yml
  tags: [gem]

- include_tasks: local-fs.yml
  tags: [local-fs]

Ihr seht auch, dass wir uns um die zshell und einige lokale Dinge im Dateisystem kümmern. Die Liste von benötigten PIP Packages etwa hinterlegen wir in der Ansible Rolle unterhalb von vars/main.yml:

---

pip3_packages:
  - aws-shell
  - awscli
  - awslimitchecker
  - PyYAML
  - requests
  - virtualenv
  - virtualenvwrapper
  - yamllint

Direkt im Ansible Playbook selbst pflegen wir unsere Liste an zu installierenden Homebrew Packages und rufen dann die nötigen Ansible Rollen auf:

---
- hosts: localhost
  vars:
    MY_HOME_DIR: "{{ lookup('env','HOME') }}"
    homebrew_taps:
      - homebrew/cask
      - homebrew/cask-drivers
      - homebrew/cask-fonts
      - homebrew/cask-versions
      - homebrew/core
      - liamg/tfsec
      - wata727/tflint
      - weaveworks/tap

    homebrew_installed_packages:
      - bats-core
      - duck
      - git-crypt
      - gnu-tar
      - graphviz
      - hugo
      - jenv
      - jq
      - kubernetes-cli
      - kubernetes-helm
      - liamg/tfsec/tfsec
      - { name: make, install_options: "with-default-names" }
      - node
      - packer
      - pcre2
      - pre-commit
      - python
      - rbenv
      - remind101/formulae/assume-role
      - serverless
      - shellcheck
      - terraform
      - tflint
      - weaveworks/tap/eksctl
      - wget
      - yadm
      - yq
      - zlib
      - zsh

    homebrew_uninstalled_packages:
      - terraform_landscape

    homebrew_cask_apps:
      - 1password-cli
      - aws-vault
      - gpg-suite

  roles:
    - ansible-cc-macbook
    - geerlingguy.homebrew

Zusammenfassung

Ansible ist nicht nur für Linux-Server sinnvoll, wir nutzen es auch zum Betanken unserer Macbooks. Dabei greifen wir auf Standard-Ansible-Rollen wie etwa Homebrew zurück und legen einfach in Listen und Hashes fest, was wir installieren wollen. Darüberhinaus konfigurieren wir auch unsere Standard-Shell. Alles, was man braucht, ist im Grunde Python 3 und Ansible!

Happy Coding!

Zurück zu den Blogbeiträgen

Trainings und Workshops

Vom Kurs für Einsteiger bis hin zu Experten-Workshops mit Tiefgang können wir Euch mit technischen Trainings unterstützen. Darüber hinaus bieten wir auch Workshops mit Fokus auf Cloud-Strategie oder für die Vertriebsmannschaft an.

Mehr...