Einführung
Die Konfiguration und Management von mehreren Servern ist eine Zeit intensive Aufgaben in der heutige IT. Das Produkt Ansible adressiert diese Problematik und unterstütz die automatische Administration aus einem zentralen Ort.
Es gibt mehrere Konfiguration und Management (u.a. Chef und Puppet) für Linux Systeme, die aber eine höhere Komplexität mitbringen. Ansible scheint eine alternative mit niedrigerem Overhead und bietet schnelleren Einstieg.
Kommunikation
Ansible führt die gewollten Anpassungen am Zielsystem ausschließlich über ssh. Damit ist kein zusätzlichen Paket / Software / Client am Zielsystem benötigt.
Die Ansible Module können in beliebige Sprache geschrieben werden und die Kommunikation wird über JSON Standardabgewickelt. Die Modul-Konfiguration wird mit YAML definiert.
Ansible kommuniziert mit dem Zielsystem entweder über command line oder über die Playbooks (Konfiguration Skripte).
Installation
(1) Install Ansible PPA
$ sudo apt-get install software-properties-common
Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig software-properties-common is already the newest version (0.96.20). software-properties-common wurde als manuell installiert festgelegt. 0 aktualisiert, 0 neu installiert, 0 zu entfernen und 245 nicht aktualisiert.
$ sudo apt-add-repository ppa:ansible/ansible
Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications— automate in a language that approaches plain English, using SSH, with no agents to install on remote systems. http://ansible.com/ Mehr Informationen: https://launchpad.net/~ansible/+archive/ubuntu/ansible Drücken Sie [ENTER], um fortzufahren oder Strg-c, um das Hinzufügen abzubrechen
Mögliche Fehlermeldung (1)
Traceback (most recent call last): File "/usr/lib/python3.5/urllib/request.py", line 1243, in do_open h.request(req.get_method(), req.selector, req.data, headers) File "/usr/lib/python3.5/http/client.py", line 1106, in request self._send_request(method, url, body, headers) File "/usr/lib/python3.5/http/client.py", line 1151, in _send_request self.endheaders(body) File "/usr/lib/python3.5/http/client.py", line 1102, in endheaders self._send_output(message_body) File "/usr/lib/python3.5/http/client.py", line 934, in _send_output self.send(msg) File "/usr/lib/python3.5/http/client.py", line 877, in send self.connect() File "/usr/lib/python3.5/http/client.py", line 1252, in connect super().connect() File "/usr/lib/python3.5/http/client.py", line 849, in connect (self.host,self.port), self.timeout, self.source_address) File "/usr/lib/python3.5/socket.py", line 693, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): File "/usr/lib/python3.5/socket.py", line 732, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno -2] Der Name oder der Dienst ist nicht bekannt During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 102, in _get_https_content_py3 lp_page = urllib.request.urlopen(request, cafile=LAUNCHPAD_PPA_CERT) File "/usr/lib/python3.5/urllib/request.py", line 162, in urlopen return opener.open(url, data, timeout) File "/usr/lib/python3.5/urllib/request.py", line 465, in open response = self._open(req, data) File "/usr/lib/python3.5/urllib/request.py", line 483, in _open '_open', req) File "/usr/lib/python3.5/urllib/request.py", line 443, in _call_chain result = func(*args) File "/usr/lib/python3.5/urllib/request.py", line 1286, in https_open context=self._context, check_hostname=self._check_hostname) File "/usr/lib/python3.5/urllib/request.py", line 1245, in do_open raise URLError(err) urllib.error.URLError: During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 327, in get_ppa_info ret = get_ppa_info_from_lp(user, ppa) File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 92, in get_ppa_info_from_lp return get_info_from_lp(lp_url) File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 88, in get_info_from_lp return _get_https_content_py3(lp_url) File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 108, in _get_https_content_py3 raise PPAException("Error reading %s: %s" % (lp_url, reason), e) softwareproperties.ppa.PPAException: 'Error reading https://launchpad.net/api/1.0/~ansible/+archive/ubuntu/ansible: [Errno -2] Der Name oder der Dienst ist nicht bekannt' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 393, in shortcut_handler return PPAShortcutHandler(shortcut) File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 356, in __init__ info = get_ppa_info(self.shortcut) File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 339, in get_ppa_info _get_suggested_ppa_message(user, ppa)) softwareproperties.shortcuts.ShortcutException: Cannot add PPA: 'ppa:~ansible/ubuntu/ansible'. ERROR: '~ansible' user or team does not exist. Fehler: »ppa:ansible/ansible« ist ungültig!
Behebung
sudo visudo
und folgende Zeile am Ende hinzufügen
Defaults env_keep="https_proxy"
Mögliche Fehlermeldung (2)
?: keyserver.ubuntu.com: Host not found
gpg: Schlüsselbund `/tmp/tmpx720827l/secring.gpg' erstellt gpg: Schlüsselbund `/tmp/tmpx720827l/pubring.gpg' erstellt gpg: Schlüssel 7BB9C367 von hkp-Server keyserver.ubuntu.com anfordern ?: keyserver.ubuntu.com: Host not found gpgkeys: HTTP fetch error 7: couldn't connect: Success gpg: Keine gültigen OpenPGP-Daten gefunden. gpg: Anzahl insgesamt bearbeiteter Schlüssel: 0 gpg: Schlüsselserver-Datenübertragunsfehler: keyserver unreachable gpg: Schlüsselserver-Datenübertragunsfehler: Öffentlicher Schlüssel nicht gefunden gpg: Empfangen vom Schlüsselserver fehlgeschlagen: Öffentlicher Schlüssel nicht gefunden
Lösung ist in separatem Beitrag (TODO)
(2) Die Systempakete müssen geupdatet werden und Ansible installieren
sudo apt-get update
sudo apt-get install ansible
Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig The following additional packages will be installed: python-crypto python-ecdsa python-httplib2 python-jinja2 python-markupsafe python-paramiko python-pkg-resources python-setuptools python-six python-yaml sshpass Vorgeschlagene Pakete: python-crypto-dbg python-crypto-doc python-jinja2-doc python-setuptools-doc Die folgenden NEUEN Pakete werden installiert: ansible python-crypto python-ecdsa python-httplib2 python-jinja2 python-markupsafe python-paramiko python-pkg-resources python-setuptools python-six python-yaml sshpass 0 aktualisiert, 12 neu installiert, 0 zu entfernen und 245 nicht aktualisiert. Es müssen 2.182 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 13,8 MB Plattenplatz zusätzlich benutzt. Möchten Sie fortfahren? [J/n] J Holen:1 http://de.archive.ubuntu.com/ubuntu xenial/main amd64 python-markupsafe amd64 0.23-2build2 [15,5 kB] ... sshpass (1.05-1) wird eingerichtet ... ansible (2.1.0.0-1ppa~xenial) wird eingerichtet ...
Konfiguration
Die Ansible Installation ist somit abgeschlossen, die Konfiguration wird im separatem Beitrag erwähnt.