[PYTHON] Gleichheitsgarantie mit dem Deployment Tool Fabric + Cuisine

Einführung

Pythons Deployment Tool Fabric macht Shell-Skripte bequem in Python zu verwenden und kann problemlos ein Chef-Solo-ähnliches Konfigurationsmanagement durchführen. Obwohl es sich um Gleichheit handelt, die eines der Hauptmerkmale von Chef ist, kann dies durch die Verwendung der Küche garantiert werden, bei der es sich um eine Stoffhülle handelt.

Es ist sehr einfach, die Lernkosten sind im Vergleich zu Chef usw. niedrig und es kann einfach installiert werden, da es nur auf dem Zielcomputer installiert werden muss. Dieses Mal habe ich ein kleines Skript geschrieben, um Dotfiles mit Stoff in Vagabunden zu platzieren.

Installation

Es kann mit einem Befehl unten installiert werden.

$ pip install fabric cuisine

Wie benutzt man

Geben Sie den Host des Zielcomputers in env.hosts an, schließen Sie den Befehl in run () ein und führen Sie ihn aus. Wenn Sie mit sudo ausführen möchten, fügen Sie es in sudo () ein. Dies ist die einzige Grundvoraussetzung.

sample.py


# -*- encoding:utf-8 -*-

from fabric.api import env
from fabric.decorators import task
from cuisine import run

env.hosts = ['192.168.33.10']

@task
def A():
  run('echo A')

@task
def B():
  sudo('echo B')

@task
def main():
  A()
  B()

Wenn Sie> main ausführen, können Sie sehen, dass es wie folgt auf dem Zielcomputer ausgeführt werden kann.

$ fab main
[192.168.33.10] run: echo A
[192.168.33.10] out: A
[192.168.33.10] run: echo B
[192.168.33.10] out: B

Done.
Disconnecting from 192.168.33.10... done.

Durch die Verwendung der Methode _ensure () wie package_ensure () und der Methode _exisits () wie dir_exists () kann die Äquivalenz garantiert werden.

package_ensure('vim') #Nur installieren, wenn vim nicht installiert ist

vagabundierende Zusammenarbeit

Führen Sie den folgenden Befehl aus, um eine Verknüpfung mit Vagrant herzustellen.

$ vagrant plugin install vagrant-fabric 

Beschreiben Sie anschließend die folgenden Einstellungen in der Vagrant-Datei.

...
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
...
  config.vm.provision :fabric do |fabric|
    fabric.fabfile_path = './fabfile.py'
    fabric.tasks = ['set_env'] #Aufgabe, die Sie ausführen möchten
  end
end

Dieses Mal habe ich eine Datei geschrieben, um die folgende Punktdatei zu platzieren.

fabfile.py


# -*- encoding:utf-8 -*-

from fabric.api import env, settings
from fabric.decorators import task
from cuisine import mode_sudo, select_package, run, package_ensure, dir_exists, cd

select_package('apt')

@task
def set_env():
  setup_packages()
  fetch_dotfiles()
  set_symlinks()

@task
def setup_packages():
  with settings(mode_sudo()):
    package_ensure('unzip')

@task
def fetch_dotfiles():
  if not dir_exists('dotfiles'):
    run('git clone --recursive [email protected]:pika-shi/dotfiles.git')

@task
def set_symlinks():
  path_pair_list = [
    ('dotfiles/_zshrc', '.zshrc'), ('dotfiles/_tmux.conf', '.tmux.conf'),
    ('dotfiles/_vimrc', '.vimrc'), ('dotfiles/_vim', '.vim')
    ]
  with cd('~/'):
    for path_set in path_pair_list:
      run('ln -s {} {}'.format(*path_set))

Wenn Sie den folgenden Befehl mit vagrant up ausführen, wird die Aufgabe ausgeführt und der entsprechenden symbolischen Verknüpfung zur Punktdatei hinzugefügt.

$ vagrant provision

abschließend

Auf diese Weise kann ein wenig Konfigurationsmanagement sehr einfach durchgeführt werden. Probieren Sie es aus und erkennen Sie die Benutzerfreundlichkeit.

Recommended Posts

Gleichheitsgarantie mit dem Deployment Tool Fabric + Cuisine
First Fabric (Python-Bereitstellungstool)
Geben Sie Stoff gleich mit Küche
Einfache Bereitstellungsumgebung mit Gaffer + Fabric
Warum wir Fabric als Bereitstellungstool ausgewählt haben
Erstellen Sie ein Bereitstellungsskript mit Stoff und Küche und verwenden Sie es erneut
[Linux] Schreiben Sie ein Bereitstellungstool mit rsync und einem Shell-Skript