Tl; dr | Funktionen | Benutzerdefinierte Profile | Testen Sie Ihr Profil | Optionen | Anforderungen | Stabilität | Andere Betriebssysteme | Lizenz
![]()
![]()
Gut getestet und anpassbares Ansible- Setup zur Bereitstellung Ihrer Workstation mit Debian.
Holen Sie sich Ihr System wieder unter Kontrolle. Pakete verwalten, die nicht standardmäßig bereitgestellt werden, und verfolgen Sie die Repositorys sowie die installierte Software. Jedes gebündeltes Paket bietet die Möglichkeit, sie voll zu verwalten. Er stellen Sie sicher, dass sie installiert oder entfernt werden. Natürlich können Sie sie auch einfach ignorieren, falls Sie sie selbst verwalten möchten.
Es ist ein generisches Buildfiles (im Gegensatz zu Dotfiles ) Manager. Sie können so viele Profile hinzufügen, wie Sie möchten (z. B. für verschiedene Hardware in verschiedenen Notebooks) und die Wahl haben, es lokal oder über das Netzwerk vorzubereiten.
Stellen Sie sicher, dass Ihr System die Anforderungen erfüllt, bevor Sie beginnen.
Verwenden Sie dies, um Ihr System von Grund auf neu vorzulegen, wenn Sie Ihr Profil bereits vorgelagert haben. Die einzigen Anforderungen sind bash und sudo , alles andere wird automatisch installiert.
# Provision default profile
curl https://raw.githubusercontent.com/cytopia/ansible-debian/master/bootstrap | bash
# Provision profile 'generic-all'
curl https://raw.githubusercontent.com/cytopia/ansible-debian/master/bootstrap | bash -s generic-allVerwenden Sie dies, um Ihr System von Grund auf neu vorzulegen, wenn Sie noch kein Profil in Upstream eingereicht haben.
# 1. Clone this project
git clone https://github.com/cytopia/ansible-debian
cd ansible-debian
# 2. Add your profile 'bob' (See 'Create custom profiles' section of this README)
# 3. Provision your system (with profile 'bob')
# Note when to use sudo and when not
sudo make deploy-init
make deploy-apt-sources PROFILE=bob
sudo make deploy-dist-upgrade
make deploy-tools PROFILE=bob # Dry-run everything for profile 'generic-all'
make diff-tools PROFILE=generic-all
# Dry-run everything for profile 'generic-all' without role 'systemd'
make diff-tools PROFILE=generic-all IGNORE=systemd
# Dry-run a specific role 'i3-gaps'
make diff-tools PROFILE=generic-all ROLE=i3-gapsMit diesem ansiblen Repository können Sie Ihre Debian-Maschinen bereitstellen und auf dem neuesten Stand halten. Sie können verschiedene Profile für verschiedene Maschinen erstellen und Pakete anbieten, die von keinem Debian -Repository verfügbar sind.
Dies ist eine Basis -Idempotent -Bereitstellung mit vernünftigen Standardeinstellungen, die leicht eingestellt werden können. Es ist nur als buildfiles Bootstrap gedacht. Um die Anwendungen selbst anzupassen, müssen Sie Ihre persönlichen Punktfiles weiterhin anwenden.
| Werkzeug | Beschreibung |
|---|---|
| Autorunner | Konfigurierbare und Benachrichtigung bewusst autostart helfer für minimalistische Fenstermanager wie i3, Openbox und andere |
| Chrom | Richtet Chrom, zusätzliche Pakete sowie bestimmte Erweiterungen von Chrome Webstore ein |
| ClipMenu | Zwischenablage Manager mit dmenu oder rofi -Integration |
| dbeaver | Universal SQL Client |
| Diff-Highlight | Werkzeug für fantastische git diff -Ausgabe |
| Docker | Docker Repo und Paket und sicherstellen, dass der Benutzer zur docker Group hinzugefügt wird |
| Docker-Compose | Laden Sie die neueste docker-compose -Binärin herunter |
| ffscreencast | FFMPEG-Wrapper für Desktop-Aufnahme mit Video-Overlay und Multi-Monitor-Unterstützung |
| Firefox | Firefox Quantum |
| FZF | Befehlszeile Fuzzy Finder |
| Gimp | GIMP mit Photoshop -Thema und Schlüsselbindungen |
| i3 | i3wm |
| i3-Gaps | i3wm auf Steroiden |
| i3-utils-bin | Werkzeuge für i3wm |
| i3-utils-systemd | Systemdateien für i3wm |
| i3blocks-modules | Tolle i3blocks Module |
| Kops | Kubernetes Operations Command Line Tool |
| Kubectl | Kubernetes -Befehlszeilenwerkzeug |
| libreoffice | LibreOffice 6 mit MSOffice 2013 Icon -Thema |
| LXDM | Leight-Weight Login Manager |
| Neovim | Vim auf Steroiden |
| Netzwerkmanager | Gnomes LAN- und WiFi -Netzwerkmanager mit optionalem Systemfach |
| oh-my-zsh | Ein entzückender Community-gesteuerter Framework für die Verwaltung Ihrer ZSH-Konfiguration. |
| Packer | Hashicorps Packer zum Bau automatisierter Maschinen |
| Pinta | Open Source Paint.net / Mspaint Clone. |
| Ranger | Befehlszeilen -Dateimanager mit Inline -Bildvorschau (kann auch als VIM -Dateimanager verwendet werden) |
| Skype | Skype Repo und Paket |
| sublimieren | Erhabenes Repo und Paket |
| SXIV | Klein, schnell und abhängig von Abhängigkeiten mit VIM-Bindung |
| systemd | Verwalten Sie aktivierte, deaktivierte und maskierte Systemdienste |
| Telegramm | Telegramm -Desktop -Repo und Paket |
| Terraform | Hashicorps Infrastruktur als Code -Provisionierer |
| Thunar | Thunar und seine Anforderungen an externe Scheiben sowie verschlüsselte Scheiben |
| Thunar-Kunden | Thunar -Sonderaktionen |
| Thunderbird | Thunderbird und global definierte Add-Ons |
| Timemachine | OSX mögen Timemachine für die Befehlszeile |
| urxvt | Kleiner, schneller und leightgewicht 256 Farbe Unicode Terminal Emulator |
| Virtualbox | VirtualBox Upstream Repository und Pakete |
| Xbacklight | Moderner Cross-GPU Xbacklight Ersatz |
| xdg-mime-meta | Definiert Standardanwendungen für XDG-Open |
| xorg | Xorg und seine Abhängigkeiten sowie GPU- und Touchpad -Konfigurationen |
| Zathura | Kleine, schnelle und abhängige Abhängigkeit PDF-Viewer mit VIM-Bindungen |
| Werkzeug | Beschreibung |
|---|---|
| Font-Ent-Entfassungs-Sans-Mono | Droidsansmono Nerdfont mit vielen Glyphen und Unicode -Symbolen |
| Schriftart | FontaWesome als Systemschrift |
| Font-san-Francisco | OSX Yosemite San Francisco Schriftart |
| Schriftart | Terminus nerdfont mit vielen Glyphen und Unicode -Symbolen |
| Font-Ubuntu | Ubuntus offizielle Schriftart |
| Icon-Moka | Moka -Ikon -Themen (für Thunar oder Nautilus) |
| Themen-Arc | ARC -Thema für GTK2, GTK3, Chrome und andere |
Siehe Rollen/ Verzeichnis für alle verfügbaren Pakete. Wenn Ihnen eins fehlt, öffnen Sie ein Problem oder eine Pull -Anfrage.
Zusätzlich können Sie Folgendes verwalten (müssen aber nicht) verwalten:
Um Ihre Workstation oder Debian -Infrastruktur anzupassen, können Sie Profile für jede Ihrer Maschinen erstellen. Dies kann aufgrund unterschiedlicher Hardware- oder Softwarepräferenzen erforderlich sein. Jeder Hostname (real oder erfunden) in der Bestandsdatei repräsentiert automatisch ein Profil .
Auf die Art und Weise, wie Ansible funktioniert, erbt jedes Profil alle Einstellungen von Group_vars/All.yml. Diese Datei enthält eine vernünftige Standardeinstellung, die Ihnen alle verfügbaren Optionen und alle nicht verwalteten Pakete zeigt.
Um Ihr Profil tatsächlich anzupassen , müssen Sie eine Datei in Host_vars/ gleichname erstellen, die Sie im Inventar angegeben haben. Sie können gruppen_vars/all.yml direkt kopieren oder ein bereits vorhandenes Profil aus host_vars wie Host_vars/generic-All.yml verwenden.
Um besser zu verstehen, wie es funktioniert, können Sie diesem Schritt-für-Schritt-Beispiel folgen, um ein neues Profil zu erstellen:
Nehmen wir aus diesem Beispiel an, Ihr Profil heißt dell-xps-i3wm .
Fügen Sie die folgende Zeile zum Ende des Inventars hinzu:
dell-xps-i3wm ansible_connection=local ansible_connection=local definiert, dass Ihr Profil auf Ihren lokalen Computer angewendet werden sollte. Wenn Sie ein Profil für einen Remote -Computer erstellen möchten, muss Ihr Profilname ein Hostname oder eine IP -Adresse sein, mit der der Remote -Computer über das Netzwerk erreichbar ist.
Wie bereits erwähnt, können Sie gruppen_vars/all.yml oder eine bereits vorhandene host_vars -Datei kopieren.
Verwenden Sie Group_vars/All.yml als Standardvorlage:
cp group_vars/all.yml host_vars/dell-xps-i3wm.ymlVerwenden Sie eine bereits vorhandene Host_vars -Datei als Standardvorlage:
cp host_vars/generic-all.yml host_vars/dell-xps-i3wm.yml Bearbeiten Sie einfach host_vars/dell-xps-i3wm.yml und passen Sie die Werte an Ihre Anforderungen an. Wenn Sie eine bereits vorhandene Datei kopiert haben, enthält sie Kommentare für alle möglichen Konfigurationsoptionen, mit denen Sie schnell sehen können, was und wie Sie sich ändern.
Wenn Sie Ihr Profil in einem Docker -Container testen möchten, das früher tatsächlich Ihr eigenes System bereitstellt, gehen Sie zum nächsten Abschnitt aus, andernfalls führen Sie einfach die folgenden Befehle aus.
Führen Sie den folgenden Befehl aus, um zu sehen, was passieren würde:
ansible-playbook -i inventory playbook.yml --diff --limit dell-xps-i3wm --ask-become-pass --checkFühren Sie den folgenden Befehl aus, um Ihr Profil tatsächlich anzuwenden:
ansible-playbook -i inventory playbook.yml --diff --limit dell-xps-i3wm --ask-become-passBevor Sie tatsächlich ein neues Profil in Ihrem eigenen System ausführen, können Sie dies im Voraus testen. Dies kann in einem Docker -Container oder in einer Vagrant -Box erfolgen, um festzustellen, ob alles wie erwartet funktioniert. Dies kann auch sehr praktisch sein, falls Sie eine neue Rolle erstellen und sehen möchten, ob es funktioniert.
Hinweis: Das Docker-Bild wird immer automatisch bauen, bevor die Tests ausgeführt werden.
Vor dem Laufen sollten Sie einige Argumente bewusst sein, die auf die make -Befehle angewendet werden können. Siehe die Tabelle unten:
| Variable | Erforderlich | Beschreibung |
|---|---|---|
PROFILE | Ja | Der Inventar -Hostname (Ihr Profil) |
VERBOSE | NEIN | Ansible -Ausführlichkeit. Gültige Werte: 0 , 1 , 2 oder 3 |
ROLE | NEIN | Führen Sie dieses spezielle Tag (Rollenname) nur aus |
Führen Sie einen vollständigen Test von Profile generic-all aus:
make test-docker-full PROFILE=generic-all Führen Sie einen vollständigen Test von Profile generic-all in einer zufälligen Reihenfolge aus:
make test-docker-random PROFILE=generic-all Führen Sie nur die Rolle i3-gaps im generic-all aus
make test-docker-single PROFILE=generic-all ROLE=i3-gapsWenn Sie den Tests in Docker nicht vertrauen und die Endergebnisse grafisch in einem VM sehen möchten, können Sie auch Vagrant verwenden, um dasselbe zu tun.
make test-vagrant PROFILE=generic-all Suchen Sie nach dem Paketabschnitt und setzen Sie sie auf einen gewünschten Zustand. install oder remove oder einen anderen Wert, um sie zu ignorieren.
$ vi host_vars/ < name > .yml...
i3-gaps : ' install '
font_ubuntu : ' install '
diff_highlight : ' install '
docker : ' remove '
docker_compose : ' remove '
skype : ' ignore '
sublime : ' ignore '
...Viele Pakete haben auch Optionen, die Sie optimieren können. Sie können beispielsweise die Python -Version definieren, die Ihr System angeben sollte:
$ vi host_vars/ < name > .yml...
python_2 : yes
python_3 : yes
...Eine andere Anpassung kann das Standardprogramm sein, das beim Öffnen von Speificif -Dateitypen verwendet werden soll:
$ vi host_vars/ < name > .yml...
xdg_mime_defaults :
- desktop_file : chromium.desktop
mime_types :
- text/html
- text/xml
- application/xhtml_xml
- application/x-mimearchive
- x-scheme-handler/http
- x-scheme-handler/https
... Oder um Ihre DPI und andere Optionen für lxdm festzulegen
$ vi host_vars/ < name > .yml...
lxdm_dpi : 132
lxdm_gtk_theme : Arc-Darker
lxdm_show_user_list : no
...Wählen Sie Ihren GPU- und Touchpad -Treiber:
$ vi host_vars/ < name > .yml # Supported values: 'amdgpu' 'ati' 'intel' 'modesetting' 'nouveau' 'nvidia' 'radeon'
xorg_gpu : modesetting
# Enable VDPAU_DRIVER=va_gl systemwide
xorg_gpu_vdpau_va_gl_enable : yes
# 'libinput' or 'synaptics'
xorg_touchpad_enable : yes
xorg_touchpad_driver : ' synaptics '
...Bevor Sie beginnen können, sind einige Tools erforderlich, die im System vorhanden sein müssen. Kopieren Sie diese Befehle einfach als Root in Ihr Terminal.
apt-get update
apt-get install --no-install-recommends --no-install-suggests -y
make
sudo
Stellen Sie sicher, dass Ihr Benutzer sudo ausführen darf
usermod -aG sudo <username>
Um die bestmögliche Stabilität dieses Setups zu gewährleisten, wurden umfangreiche Travis-CI-Schecks definiert, die automatisch jeden Abend ausgeführt werden. Diese Tests werden in einem Docker -Container durchgeführt. Die folgenden Testfälle wurden definiert:
Wenn Sie ein anderes Betriebssystem ausführen und Ihr System dennoch mit Ansible bereitstellen möchten, sehen Sie sich die folgenden ähnlichen Projekte an:
Bitte zögern Sie nicht, wie gewünscht neue Rollen hinzuzufügen. Schauen Sie sich einen Blick auf den beitragen.md für die erforderlichen Best-Practices an.
MIT -Lizenz
Copyright (C) 2017 Cytopia