Blog

Installation von PEERVPN mit ANSIBLЕ

Bild des ITGix-Teams
ITGix-Team
Passionierte DevOps- und Cloud-Ingenieure
10.01.2018
Lesezeit: 5 Minuten.
Zuletzt aktualisiert am: 08.01.2024

Inhaltsübersicht

Was ist Ansible?

Zusätzlich zu dem Artikel über die PeerVPN-Installation und -Konfiguration zeige ich Ihnen nun eine fortschrittlichere und ziemlich "moderne" Methode, um mehrere Server bereitzustellen und Ihren VPN-Client wirklich schnell zum Laufen zu bringen. Sie haben wahrscheinlich schon von Ansible gehört. Nun, einer seiner Anwendungsfälle ist genau das, was wir hier brauchen: Configuration Manager. Viele von uns haben schon einmal Kopfschmerzen gehabt, wenn wir eine ganze Umgebung installieren, konfigurieren und dann verwalten müssen. Ja, die gleichen Schritte auf Hunderten von Servern zu wiederholen, auf denen unterschiedliche Betriebssysteme, Anwendungsversionen und alle Arten von Abhängigkeiten vorhanden sind, führt sicherlich zu einigen Problemen.

Erfahren Sie mehr über Ansible

Lesen Sie unseren umfassenden Einsteigerleitfaden zu Ansible und lernen Sie alle Grundlagen!

Nun, Ansible ist hier, um Ihnen bei all diesen Dingen zu helfen. Sie können alles auswählen, einstellen und anpassen, was für eine bestimmte Umgebung erforderlich ist und deren Anforderungen entspricht. Beginnen wir also mit einer Einführung in Ansible, seine Struktur und seine Komponenten.
Meiner Meinung nach gibt es zwei Ansätze, wenn man mit Ansible anfängt. Die erste ist, die offizielle Einführung in Ansible zu lesen, in der viel über die Struktur von Ansible erklärt wird, und dann mit einem einfachen Playbook zu beginnen, das man dann zu einer Rolle erweitert. Oder Sie nutzen die Ansible-Galaxie, in der viele von der Community bereitgestellte Rollen zur Verfügung stehen. Nun, nicht jede Rolle ist so skalierbar und flexibel, wie Sie es wünschen, also können Sie einfach beide Ansätze kombinieren, eine bereits erstellte Rolle nehmen und ihre Funktionalitäten erweitern. Wenn Sie das schnell gelernt haben und das alles langweilig ist, können Sie anfangen, Ihre eigenen Ansible-Module zu bauen.

Werfen wir nun einen Blick auf meine PeerVPN-Rolle.

Die Verzeichnisstruktur:

 roles/
    PeerVPN/                       # this hierarchy represents a "role"
        tasks/                         #
            main.yml                 # <-- the main. yml file task file includes install.yml + configure.yml
            install.yml                #
            configure.yml          #
        templates/                
   # <-- files for use with the template resource

            peervpn.service.j2  # <---templates end in .j2, moved in a certain location
            peervpn.conf.j2       #
        defaults/                      #
            main.yml                 # <-- default lower priority variables for this

Aufgaben/main.yml:

- include: install.yml
- include: configure.yml
- service: name=peervpn state=started

Tasks/install.yml (Achten Sie auf die Leerzeichen am Anfang der Zeile):

- name: install dependencies
  yum:
    name: "{{ item }}"
    state: latest
  with_items:
    - gcc
    - openssl-devel
    - openssl 
    - python-urllib3
    - pyOpenSSL
  when: ansible_os_family == "RedHat"
- name: downloading PeerVPN
  unarchive: src=https://www.peervpn.net/files/peervpn-0-044-linux-x86.tar.gz dest=/tmp/ remote_src=yes
- name: moving extracted files [binary + config]
  command: /usr/bin/mv /tmp/peervpn-0-044/peervpn /usr/sbin/peervpn
  when: ansible_os_family == "RedHat"

Tasks/configure.yml (Achten Sie auf die Leerzeichen am Anfang der Zeile):

- name: create configuration directory
  file:
    path: /etc/peervpn
    state: directory
- name: write the peervpn config file
  template: src=../templates/peervpn.conf.j2 dest=/etc/peervpn/peervpn.conf
- name: create peervpn service
  template: src=../templates/peervpn.service.j2 dest=/usr/lib/systemd/system/peervpn.service
  when: ansible_os_family == "RedHat"

Templates/peervpn.service.j2:

[Unit]
Description={{ unit_description }}
{% if vpn_initpeers -%}
Requires={{ unit_requires }}
{% endif -%}
After={{ unit_after }}
ConditionPathExists={{ unit_condition_path }}
[Service]
Type={{ service_type }}
ExecStart={{ service_exec }}
PIDFile={{ service_pidfile }}
[Install]
WantedBy={{ install_wantedby }}

Vorlagen/peervpn.conf.j2:

port {{ peervpn_port }}
networkname {{ peervpn_networkname }}
psk {{ peervpn_password }}
enabletunneling {{ peevpn_enabletunneling }}
interface {{ peervpn_interface }}
ifconfig4 {{ peervpn_ip }}
{% if vpn_initpeers -%}
initpeers {{ vpn_initpeers }}
{% endif -%} 

Defaults/main.yml:

peervpn_port: 7000
peervpn_networkname: MyPeerVPN
peervpn_password: VqmWsJje18/qqIOEN2+pLHugDtAcN5So03J0TL9wIQomAkQwcNR23SzM+m7cuJyCeyXXuHDLoKbzVbk176eDVLPS8wLNoWSiwPF2yQn57Q4vjRz3qjI51nhE3yEyKmHZgotQga4Uz0vyvTGjJRxtPJqZ/igDN0YmI25nwhsYsyi34c6pIcqPCOHYlILndCUh8AYk3hGNPc0lSnkxW/sY+Uo+5BU0K6nB1LYcMlXA9Ij0deU+eyRTfoVggKnpXdl5FikrELbAOyoo71F0PEjL73k5fmyGmsoEE1f4yvgUXOKOzsPUaf567SP4Hm+h/EpqkWMR7JGc5jBDsOlY52LTp5XaZNn+l+VEInCsFQiKgTW3zvzSmUcrPB3GqQ1KXknwfHmtCJe4SRiRZLKtSeTiPdPvXC0HBMk+KK9TNk45dDUi3/ougCIwavMPEedH7Gh5fvG5iNXjZ24tAAOTle2oBHVgO2Wq7llh2VwKkrzyYATuchusVLbHa98D0YR2wA==
peevpn_enabletunneling: "yes"
peervpn_interface: pvpn0
peervpn_ip: 0.0.0.0
vpn_initpeers: false
unit_description: PeerVPN
unit_requires: network.target
unit_after: syslog.target network.target
unit_condition_path: /etc/peervpn/peervpn.conf
service_type: simple
service_exec: /usr/sbin/peervpn {{ unit_condition_path }}
service_pidfile: /var/run/peervpn/peervpn.pid
install_wantedby: multi-user.target

So, jetzt haben wir die Rolle. Es fehlen nur noch das Playbook und die Inventardatei. Die Inventarisierungsdatei kann übersprungen werden (Sie können die Hosts als Argumente parsen, wenn Sie den Befehl ausführen) oder Ihre Zielhosts können in der Standard-Ansible-Inventarisierungsdatei in /etc/ansible/hosts abgelegt werden. Hier ist ein Beispiel für ein Playbook, das 2 Hosts provisioniert:

playbook.yml:

- name: Configuring and installing PeerVPN init peer
  hosts: VPN_init_peer 
  remote_user: root
  vars:
    peervpn_ip: 10.1.0.1/24
  roles:
    - PeerVPN
- name: Configuring and installing PeerVPN other peers
  hosts: Host_1
  remote_user: root
  vars:
    peervpn_ip: 10.1.0.2/24
    vpn_initpeers: "{{ groups.VPN_init_peer[0] }} {{ peervpn_port }}"
  roles:
    - PeerVPN

 Beachten Sie, dass ich eine Inventardatei für die Speicherung der Hosts verwende:

Inventory.yml:

[VPN_init_peer]
165.165.165.165
[Host_1]
170.170.170.170
To provision more hosts you need to simply add [Host_<2/3/4..etc>] and an IP in your inventory file and add accordingly paragraph(s) to the playbook file, with different peervpn_ip and hosts.
Um das obige Beispiel auszuführen, müssen Sie Ihre öffentlichen Schlüssel auf den Zielhosts verteilt haben, da Ansible standardmäßig über SSH arbeitet. Führen Sie nun einfach den folgenden Befehl in dem Verzeichnis aus, in dem sich Ihr Playbook befindet: 
$ ansible-playbook playbook.yml -i inventory.yml

Eine Antwort hinterlassen

Newsletter für Tech-Experten

Signal, kein Rauschen –

direkt in Ihren Posteingang.

Schließen Sie sich mehr als 12.000 Ingenieuren und Führungskräften aus der Wirtschaft an, die Praxisberichte zu SRE, DevOps und Cloud-nativer Zuverlässigkeit erhalten.

Tech-Blogs mit tiefgehenden Einblicken und Fallstudien
Neue Technologien, sorgfältig ausgewählt

Ihre geschäftliche E-Mail-Adresse

Wir gehen respektvoll mit Ihrem Posteingang um. Lesen Sie unsere Datenschutzerklärung.

Mehr Beiträge

Jeder Anbieter von Observability-Lösungen hat mittlerweile etwas im Angebot, das als „AI SRE“ bezeichnet wird. Cloud-Anbieter haben eines. Plattformen für das Incident-Management haben eines. Ihr Monitoring-Tool hat wahrscheinlich im letzten Quartal eines hinzugefügt. Die Frage für die meisten...
Lesen
AI SRE Agent: Die ersten 20 Minuten eines Vorfalls automatisieren Es ist 3 Uhr morgens. Ein Alarm wird ausgelöst. Sie klappen Ihren Laptop auf, und die nächsten zwanzig Minuten verlaufen wie immer...
Lesen
Kontakt aufnehmen
ITGix bietet Ihnen fachkundige Beratung und maßgeschneiderte DevOps-Services, um Ihr Unternehmenswachstum zu beschleunigen.
Newsletter für
Technik-Experten
Schließen Sie sich 12.000+ Geschäftsführern und Ingenieuren an, die Blogs, e-Books und Fallstudien Fallstudien über neue Technologie erhalten.