From 059697abeef6f97dd32532794e2da38fb0e4fb77 Mon Sep 17 00:00:00 2001 From: kraeml Date: Sat, 15 Oct 2016 22:19:31 +0200 Subject: [PATCH 1/7] First Commit --- .gitignore | 5 + 01_Playbooks.ipynb | 375 +++++++ 02_Rollen.ipynb | 598 +++++++++++ Erste Schritte mit ansible.ipynb | 1577 ++++++++++++++++++++++++++++++ 4 files changed, 2555 insertions(+) create mode 100644 .gitignore create mode 100644 01_Playbooks.ipynb create mode 100644 02_Rollen.ipynb create mode 100644 Erste Schritte mit ansible.ipynb diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d4b9f0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.ipynb_checkpoints/ +passwort +Kap2_Rollen/ +simple_playbook.yml +ssh-add-passphrase.sh diff --git a/01_Playbooks.ipynb b/01_Playbooks.ipynb new file mode 100644 index 0000000..605475c --- /dev/null +++ b/01_Playbooks.ipynb @@ -0,0 +1,375 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "# YAML Dateien\n", + "\n", + "\n", + "* Die erste Zeile eines Playbooks sollte mit \"---\" beginnen (drei Bindestriche), diese zeigt den Beginn des YAML-Dokuments an.\n", + "* Listen in YAML werden mit einem Bindestrich \"-\" dargestellt, gefolgt von einem Leerraum.\n", + "* Ein Playbook enthält eine Liste von Spielanweisungen; Sie werden mit \"-\" dargestellt. Jedes Spiel ist ein assoziatives Array, ein Dictonary oder eine Map in Form von Schlüssel/Wert-Paaren.\n", + "* Einrückungen sind wichtig. Alle Mitglieder einer Liste sollten gleich sein Eingerückt sein.\n", + "* Jede Spielanwiesung kann Schlüssel-Wert-Paare enthalten, getrennt durch \":\", um Hosts, Variablen, Rollen, Aufgaben und so weiter.\n", + "\n", + "simple_playbook.yml\n", + "\n", + "```yaml\n", + "---\n", + "- hosts: all\n", + " remote_user: vagrant\n", + " become: yes\n", + " tasks:\n", + " - group: name=devops state=present\n", + " - name: create devops user with admin previleges\n", + " user: name=devops comment=\"Devops User\" uid=2001 group=devops\n", + " - name: install htop package\n", + " apt: name=htop state=present update_cache=yes\n", + "\n", + "- hosts: www\n", + " user: vagrant\n", + " become: yes\n", + " tasks:\n", + " - name: add official nginx repository\n", + " apt_repository: repo='ppa:nginx/stable'\n", + " - name: install nginx web server and ensure its at the latest version\n", + " apt: name=nginx state=latest\n", + " - name:\n", + " service: name=nginx state=started\n", + "```\n", + "\n", + "Alternativ\n", + "\n", + "```yaml\n", + "---\n", + "- hosts: all\n", + " remote_user: vagrant\n", + " become: yes\n", + " tasks:\n", + " - group:\n", + " name: devops\n", + " state: present\n", + " - name: create devops user with admin previleges\n", + " user:\n", + " name: devops\n", + " comment: \"Devops User\"\n", + " uid: 2001\n", + " group: devops\n", + " - name: install htop package\n", + " apt:\n", + " name: htop\n", + " state: present\n", + " update_cache: yes\n", + "\n", + "- hosts: www\n", + " user: vagrant\n", + " become: yes\n", + " tasks:\n", + " - name: add official nginx repository\n", + " apt_repository:\n", + " repo: 'ppa:nginx/stable'\n", + " - name: install nginx web server and ensure its at the latest version\n", + " apt:\n", + " name: nginx\n", + " state: latest\n", + " - name:\n", + " service:\n", + " name: nginx\n", + " state: started\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [] + } + ], + "source": [ + "cp /vagrant/simple_playbook.yml ./" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "spawn ssh-add /home/vagrant/.ssh/id_rsa\r", + "\r", + "\r\n", + "Enter passphrase for /home/vagrant/.ssh/id_rsa: \r\n", + "Identity added: /home/vagrant/.ssh/id_rsa (/home/vagrant/.ssh/id_rsa)\r\n" + ] + } + ], + "source": [ + "eval `ssh-agent -s` > /dev/null\n", + "./ssh-add-passphrase.sh" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r\n", + "PLAY [all] *********************************************************************\r\n", + "\r\n", + "TASK [setup] *******************************************************************\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.22]\r\n", + "ok: [192.168.60.2]\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.21]\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [localhost]\r\n", + "\r\n", + "TASK [group] *******************************************************************\r\n", + "changed: [192.168.60.22]\r\n", + "changed: [192.168.60.11]\r\n", + "changed: [192.168.60.21]\r\n", + "changed: [192.168.60.12]\r\n", + "changed: [192.168.60.2]\r\n", + "changed: [192.168.60.13]\r\n", + "changed: [localhost]\r\n", + "\r\n", + "TASK [create devops user with admin previleges] ********************************\r\n", + "changed: [192.168.60.21]\r\n", + "changed: [192.168.60.12]\r\n", + "changed: [192.168.60.2]\r\n", + "changed: [192.168.60.22]\r\n", + "changed: [192.168.60.11]\r\n", + "changed: [192.168.60.13]\r\n", + "changed: [localhost]\r\n", + "\r\n", + "TASK [install htop package] ****************************************************\r\n", + "ok: [192.168.60.22]\r\n", + "ok: [192.168.60.2]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.21]\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [localhost]\r\n", + "ok: [192.168.60.13]\r\n", + "\r\n", + "PLAY [www] *********************************************************************\r\n", + "\r\n", + "TASK [setup] *******************************************************************\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.11]\r\n", + "\r\n", + "TASK [add official nginx repository] *******************************************\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.12]\r\n", + "\r\n", + "TASK [install nginx web server and ensure its at the latest version] ***********\r\n", + "changed: [192.168.60.13]\r\n", + "changed: [192.168.60.12]\r\n", + "changed: [192.168.60.11]\r\n", + "\r\n", + "TASK [service] *****************************************************************\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.11]\r\n", + "\r\n", + "PLAY RECAP *********************************************************************\r\n", + "192.168.60.11 : ok=8 changed=3 unreachable=0 failed=0 \r\n", + "192.168.60.12 : ok=8 changed=3 unreachable=0 failed=0 \r\n", + "192.168.60.13 : ok=8 changed=3 unreachable=0 failed=0 \r\n", + "192.168.60.2 : ok=4 changed=2 unreachable=0 failed=0 \r\n", + "192.168.60.21 : ok=4 changed=2 unreachable=0 failed=0 \r\n", + "192.168.60.22 : ok=4 changed=2 unreachable=0 failed=0 \r\n", + "localhost : ok=4 changed=2 unreachable=0 failed=0 \r\n", + "\r\n" + ] + } + ], + "source": [ + "ansible-playbook simple_playbook.yml" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Playbooks\n", + "\n", + "Wichtige Abschnitte der obigen Playbooks sind:\n", + "\n", + "1. Wer soll wie konfiguriert werden (hosts). \n", + "2. Was soll ablaufen (tasks). \n", + "\n", + "## Pattern für hosts\n", + "\n", + "Im vorherigen Playbook bestimmen die folgenden Zeilen, welche Hosts für einen Play/Spiel ausgewählt werden sollen. \n", + "Eine bestimmte Spielanweisung für:\n", + "\n", + "* hosts: all\n", + "* hosts: www\n", + "\n", + "Der erste Block wird mit allen Hosts ausgeführt. Der zweite Abschnitt/Play wird mit der www-Gruppe durchgeführt.\n", + "\n", + "Die Pattern können eine der folgenden Liste, oder ihre Kobinationen, sein:\n", + "\n", + " Pattern Beispiele\n", + " Gruppenname Name_des_Rechner (ansible inventory)\n", + " Spiel alle all oder *\n", + " Range Name_des_Rechner[0:100]\n", + " Hostnamen globs *.example.com, host01.example.com\n", + " Ausnahmen Name_der_Rechner:!diesen_nicht\n", + " Überschneidung Name_der_Rechner:&weitere_Namen\n", + " Reguläre Ausdrücke ~(nn|zk).*\\.example\\.org\n", + "\n", + "## Der Block Tasks\n", + "\n", + "Die Aufgaben für eine Gruppe (hosts). Aufgaben sind eine Folge von Aktionen, die gegen eine Gruppe von Hosts ausgeführt werden. Jedes Play enthält in der Regel mehrere Tasks, die seriell auf jeder Maschine ausgeführt werden, die dem Muster entspricht.\n", + "\n", + "Jede Aktion in einer Aufgabenliste kann deklariert werden, indem Folgendes angegeben wird:\n", + "\n", + "* Der Name des Moduls\n", + "* Optional der Zustand der verwalteten Systemkomponente\n", + "* Die optionalen Parameter\n", + "\n", + "## Module\n", + "\n", + "Module sind die gekapselten Prozeduren, die spezifischen Systemkomponenten für bestimmten Plattformen verwalten z. B. apt, user oder service.\n", + "\n", + "http://docs.ansible.com/ansible/list_of_all_modules.html\n", + "\n", + "Nichts gefunden? Dann selber schreiben:\n", + "\n", + "http://docs.ansible.com/ansible/developing_modules.html\n", + "\n", + "## Module und Idempotence\n", + "\n", + "Aus der Wikipedia (10/2016) \"Analog dazu wird in der Informatik ein Stück Programmcode, das mehrfach hintereinander ausgeführt das gleiche Ergebnis wie bei einer einzigen Ausführung liefert, als idempotent bezeichnet.\"" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r\n", + "PLAY [all] *********************************************************************\r\n", + "\r\n", + "TASK [setup] *******************************************************************\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.22]\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.21]\r\n", + "ok: [192.168.60.2]\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [localhost]\r\n", + "\r\n", + "TASK [group] *******************************************************************\r\n", + "ok: [192.168.60.22]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.2]\r\n", + "ok: [192.168.60.21]\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [localhost]\r\n", + "ok: [192.168.60.13]\r\n", + "\r\n", + "TASK [create devops user with admin previleges] ********************************\r\n", + "ok: [192.168.60.22]\r\n", + "ok: [192.168.60.2]\r\n", + "ok: [192.168.60.21]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [localhost]\r\n", + "ok: [192.168.60.13]\r\n", + "\r\n", + "TASK [install htop package] ****************************************************\r\n", + "ok: [192.168.60.21]\r\n", + "ok: [192.168.60.22]\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.2]\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [localhost]\r\n", + "\r\n", + "PLAY [www] *********************************************************************\r\n", + "\r\n", + "TASK [setup] *******************************************************************\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.11]\r\n", + "\r\n", + "TASK [add official nginx repository] *******************************************\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.12]\r\n", + "\r\n", + "TASK [install nginx web server and ensure its at the latest version] ***********\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.12]\r\n", + "\r\n", + "TASK [service] *****************************************************************\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.12]\r\n", + "\r\n", + "PLAY RECAP *********************************************************************\r\n", + "192.168.60.11 : ok=8 changed=0 unreachable=0 failed=0 \r\n", + "192.168.60.12 : ok=8 changed=0 unreachable=0 failed=0 \r\n", + "192.168.60.13 : ok=8 changed=0 unreachable=0 failed=0 \r\n", + "192.168.60.2 : ok=4 changed=0 unreachable=0 failed=0 \r\n", + "192.168.60.21 : ok=4 changed=0 unreachable=0 failed=0 \r\n", + "192.168.60.22 : ok=4 changed=0 unreachable=0 failed=0 \r\n", + "localhost : ok=4 changed=0 unreachable=0 failed=0 \r\n", + "\r\n" + ] + } + ], + "source": [ + "ansible-playbook simple_playbook.yml" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Bash", + "language": "bash", + "name": "bash" + }, + "language_info": { + "codemirror_mode": "shell", + "file_extension": ".sh", + "mimetype": "text/x-sh", + "name": "bash" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/02_Rollen.ipynb b/02_Rollen.ipynb new file mode 100644 index 0000000..2ffcb47 --- /dev/null +++ b/02_Rollen.ipynb @@ -0,0 +1,598 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Modular mit Ansible Rollen\n", + "\n", + "Würde man seine Infrastruktur mit Webservern, Datenbanken, Loadbalancer, Queues und so weiter in einem Playbook verwalten, würde dies zu einer riesigen Abfolge von Aktionen führen.\n", + "\n", + "Darüber hinaus kann man eine Teil z.B. Datenbanken nicht in anderen Projekten wieter verwenden.\n", + "\n", + "Hier kommen Rollen ins Spiel." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "spawn ssh-add /home/vagrant/.ssh/id_rsa\r", + "\r", + "\r\n", + "Enter passphrase for /home/vagrant/.ssh/id_rsa: \r\n", + "Identity added: /home/vagrant/.ssh/id_rsa (/home/vagrant/.ssh/id_rsa)\r\n" + ] + } + ], + "source": [ + "eval `ssh-agent -s` > /dev/null\n", + "./ssh-add-passphrase.sh" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [] + } + ], + "source": [ + "cp -R /vagrant/Kap2_Rollen ./" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "01_Playbooks.ipynb Kap2_Rollen ssh-add-passphrase.sh\r\n", + "02_Rollen.ipynb passwort\r\n", + "Erste Schritte mit ansible.ipynb simple_playbook.yml\r\n" + ] + } + ], + "source": [ + "ls" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [] + } + ], + "source": [ + "cd Kap2_Rollen" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/home/vagrant/projects/Kap2_Rollen\r\n" + ] + } + ], + "source": [ + "pwd" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + ".\r\n", + "├── customhosts\r\n", + "├── Kap2_Rollen\r\n", + "│   ├── customhosts\r\n", + "│   ├── roles\r\n", + "│   │   ├── base\r\n", + "│   │   │   └── tasks\r\n", + "│   │   │   └── main.yml\r\n", + "│   │   └── nginx\r\n", + "│   │   ├── files\r\n", + "│   │   │   ├── default.conf\r\n", + "│   │   │   └── index.html\r\n", + "│   │   ├── handlers\r\n", + "│   │   │   └── main.yml\r\n", + "│   │   ├── meta\r\n", + "│   │   │   └── main.yml\r\n", + "│   │   └── tasks\r\n", + "│   │   ├── configure.yml\r\n", + "│   │   ├── install.yml\r\n", + "│   │   ├── main.yml\r\n", + "│   │   └── service.yml\r\n", + "│   ├── site.yml\r\n", + "│   └── www.yml\r\n", + "├── roles\r\n", + "│   ├── base\r\n", + "│   │   └── tasks\r\n", + "│   │   └── main.yml\r\n", + "│   └── nginx\r\n", + "│   ├── files\r\n", + "│   │   ├── default.conf\r\n", + "│   │   └── index.html\r\n", + "│   ├── handlers\r\n", + "│   │   └── main.yml\r\n", + "│   ├── meta\r\n", + "│   │   └── main.yml\r\n", + "│   └── tasks\r\n", + "│   ├── configure.yml\r\n", + "│   ├── install.yml\r\n", + "│   ├── main.yml\r\n", + "│   └── service.yml\r\n", + "├── site.yml\r\n", + "└── www.yml\r\n", + "\r\n", + "17 directories, 24 files\r\n" + ] + } + ], + "source": [ + "tree" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---\r\n", + "# This is a sitewide playbook\r\n", + "- include: www.yml\r\n" + ] + } + ], + "source": [ + "cat site.yml" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---\r\n", + "- hosts: www\r\n", + " remote_user: vagrant\r\n", + " become: yes\r\n", + " pre_tasks:\r\n", + " - debug: \r\n", + " msg: 'I\":\" Beginning to configure web server..'\r\n", + "\r\n", + " roles:\r\n", + " - nginx\r\n", + "\r\n", + " post_tasks:\r\n", + " - debug:\r\n", + " msg: 'I\":\" Done configuring nginx web server...'\r\n" + ] + } + ], + "source": [ + "cat www.yml" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---\r\n", + "dependencies:\r\n", + " - { role: base}\r\n", + "\r\n" + ] + } + ], + "source": [ + "cat roles/nginx/meta/main.yml" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---\r\n", + "# essential tasks. should run on all nodes\r\n", + " - name: creating devops group \r\n", + " group: name=devops state=present\r\n", + " - name: create devops user with admin previleges\r\n", + " user: name=devops comment=\"Devops User\" uid=2001 group=devops\r\n", + " - name: install htop package\r\n", + " action: apt name=htop state=present update_cache=yes\r\n" + ] + } + ], + "source": [ + "cat roles/base/tasks/main.yml" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---\r\n", + "# This is main tasks file for nginx role\r\n", + " - include: install.yml\r\n", + " - include: configure.yml\r\n", + " - include: service.yml\r\n", + "\r\n", + " \r\n", + "---\r\n", + " - name: add official nginx repository\r\n", + " apt_repository: repo='deb http://nginx.org/packages/ubuntu/ lucid nginx'\r\n", + " - name: install nginx web server and ensure its at the latest version\r\n", + " apt: name=nginx state=latest force=yes\r\n", + "---\r\n", + " - name: create default site configurations \r\n", + " copy: src=default.conf dest=/etc/nginx/conf.d/default.conf mode=0644\r\n", + " notify: \r\n", + " - restart nginx service\r\n", + " - name: create home page for default site\r\n", + " copy: src=index.html dest=/usr/share/nginx/html/index.html\r\n", + "\r\n", + "---\r\n", + " - name: start nginx service\r\n", + " service: name=nginx state=started\r\n" + ] + } + ], + "source": [ + "cat roles/nginx/tasks/main.yml roles/nginx/tasks/install.yml roles/nginx/tasks/configure.yml roles/nginx/tasks/service.yml" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "server {\r\n", + " listen 80;\r\n", + " server_name localhost;\r\n", + "\r\n", + " location / {\r\n", + " root /usr/share/nginx/html;\r\n", + " index index.html;\r\n", + " }\r\n", + "}\r\n" + ] + } + ], + "source": [ + "cat roles/nginx/files/default.conf" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r\n", + " \r\n", + "

Ole Ole Ole

\r\n", + "

Welcome to FIFA World Cup News Portal

\r\n", + " \r\n", + "\r\n" + ] + } + ], + "source": [ + "cat roles/nginx/files/index.html" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---\r\n", + "- name: restart nginx service\r\n", + " service: name=nginx state=restarted\r\n", + "\r\n" + ] + } + ], + "source": [ + "cat roles/nginx/handlers/main.yml" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[local]\r\n", + "localhost ansible_connection=local\r\n", + "\r\n", + "[www]\r\n", + "192.168.60.11 ansible_ssh_user=vagrant\r\n", + "192.168.60.12 ansible_ssh_user=vagrant\r\n", + "192.168.60.13 ansible_ssh_user=vagrant\r\n", + "\r\n", + "[lb]\r\n", + "192.168.60.2 ansible_ssh_user=vagrant\r\n", + "\r\n", + "[db]\r\n", + "192.168.60.21 ansible_ssh_user=vagrant\r\n", + "192.168.60.22 ansible_ssh_user=vagrant\r\n" + ] + } + ], + "source": [ + "cat customhosts" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "statically included: /home/vagrant/projects/Kap2_Rollen/roles/nginx/tasks/install.yml\r\n", + "statically included: /home/vagrant/projects/Kap2_Rollen/roles/nginx/tasks/configure.yml\r\n", + "statically included: /home/vagrant/projects/Kap2_Rollen/roles/nginx/tasks/service.yml\r\n", + "\r\n", + "PLAY [www] *********************************************************************\r\n", + "\r\n", + "TASK [setup] *******************************************************************\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.11]\r\n", + "\r\n", + "TASK [debug] *******************************************************************\r\n", + "ok: [192.168.60.12] => {\r\n", + " \"msg\": \"I\\\":\\\" Beginning to configure web server..\"\r\n", + "}\r\n", + "ok: [192.168.60.11] => {\r\n", + " \"msg\": \"I\\\":\\\" Beginning to configure web server..\"\r\n", + "}\r\n", + "ok: [192.168.60.13] => {\r\n", + " \"msg\": \"I\\\":\\\" Beginning to configure web server..\"\r\n", + "}\r\n", + "\r\n", + "TASK [base : creating devops group] ********************************************\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.13]\r\n", + "\r\n", + "TASK [base : create devops user with admin previleges] *************************\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.13]\r\n", + "\r\n", + "TASK [base : install htop package] *********************************************\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.11]\r\n", + "\r\n", + "TASK [nginx : add official nginx repository] ***********************************\r\n", + "changed: [192.168.60.12]\r\n", + "changed: [192.168.60.13]\r\n", + "changed: [192.168.60.11]\r\n", + "\r\n", + "TASK [nginx : install nginx web server and ensure its at the latest version] ***\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.13]\r\n", + "\r\n", + "TASK [nginx : create default site configurations] ******************************\r\n", + "changed: [192.168.60.13]\r\n", + "changed: [192.168.60.11]\r\n", + "changed: [192.168.60.12]\r\n", + "\r\n", + "TASK [nginx : create home page for default site] *******************************\r\n", + "changed: [192.168.60.11]\r\n", + "changed: [192.168.60.13]\r\n", + "changed: [192.168.60.12]\r\n", + "\r\n", + "TASK [nginx : start nginx service] *********************************************\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.13]\r\n", + "\r\n", + "RUNNING HANDLER [nginx : restart nginx service] ********************************\r\n", + "changed: [192.168.60.13]\r\n", + "changed: [192.168.60.11]\r\n", + "changed: [192.168.60.12]\r\n", + "\r\n", + "TASK [debug] *******************************************************************\r\n", + "ok: [192.168.60.12] => {\r\n", + " \"msg\": \"I\\\":\\\" Done configuring nginx web server...\"\r\n", + "}\r\n", + "ok: [192.168.60.11] => {\r\n", + " \"msg\": \"I\\\":\\\" Done configuring nginx web server...\"\r\n", + "}\r\n", + "ok: [192.168.60.13] => {\r\n", + " \"msg\": \"I\\\":\\\" Done configuring nginx web server...\"\r\n", + "}\r\n", + "\r\n", + "PLAY RECAP *********************************************************************\r\n", + "192.168.60.11 : ok=12 changed=4 unreachable=0 failed=0 \r\n", + "192.168.60.12 : ok=12 changed=4 unreachable=0 failed=0 \r\n", + "192.168.60.13 : ok=12 changed=4 unreachable=0 failed=0 \r\n", + "\r\n" + ] + } + ], + "source": [ + "ansible-playbook -i customhosts site.yml" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "phpMyAdmin
\r\n", + "
\r\n", + " \"phpMyAdmin\"\r\n", + "

Welcome to phpMyAdmin

\r\n", + "
Language
\r\n", + "
\r\n", + " \r\n", + "
\r\n", + "
\r\n", + " Log in\"Documentation\"
\r\n", + " \r\n", + " \r\n", + "
\r\n", + "
\r\n", + " \r\n", + " \r\n", + "
\r\n", + " \r\n", + "
\r\n", + "
\r\n", + "
\r\n", + "
" + ] + } + ], + "source": [ + "curl 192.168.60.11" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Bash", + "language": "bash", + "name": "bash" + }, + "language_info": { + "codemirror_mode": "shell", + "file_extension": ".sh", + "mimetype": "text/x-sh", + "name": "bash" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/Erste Schritte mit ansible.ipynb b/Erste Schritte mit ansible.ipynb new file mode 100644 index 0000000..8c1277a --- /dev/null +++ b/Erste Schritte mit ansible.ipynb @@ -0,0 +1,1577 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Ansible Adhoc Kommandos\n", + "\n", + "Zunächst muss Ansible auf einem Host installiert sein.\n", + "\n", + "http://docs.ansible.com/ansible/intro_installation.html\n", + "\n", + "Danch können einfache Adhoc Kommandos ausgeführt werden.\n", + "\n", + "http://docs.ansible.com/ansible/intro_getting_started.html" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [] + } + ], + "source": [ + "history -c" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ansible 2.1.1.0\r\n", + " config file = \r\n", + " configured module search path = Default w/o overrides\r\n" + ] + } + ], + "source": [ + "ansible --version" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Update ansible via pip.\n", + "\n", + "Wegen pip siehe: https://docs.python.org/2/installing/" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mThe directory '/home/vagrant/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.\u001b[0m\r\n", + "\u001b[33mThe directory '/home/vagrant/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.\u001b[0m\r\n", + "Collecting ansible\r\n", + " Downloading ansible-2.1.2.0.tar.gz (1.9MB)\r\n", + "\u001b[?25l\r", + "\u001b[K 0% |▏ | 10kB 1.3MB/s eta 0:00:02\r", + "\u001b[K 1% |▍ | 20kB 1.5MB/s eta 0:00:02\r", + "\u001b[K 1% |▌ | 30kB 1.6MB/s eta 0:00:02\r", + "\u001b[K 2% |▊ | 40kB 1.5MB/s eta 0:00:02\r", + "\u001b[K 2% |▉ | 51kB 1.4MB/s eta 0:00:02\r", + "\u001b[K 3% |█ | 61kB 1.6MB/s eta 0:00:02\r", + "\u001b[K 3% |█▏ | 71kB 1.6MB/s eta 0:00:02\r", + "\u001b[K 4% |█▍ | 81kB 1.5MB/s eta 0:00:02\r", + "\u001b[K 4% |█▋ | 92kB 1.7MB/s eta 0:00:02\r", + "\u001b[K 5% |█▊ | 102kB 1.6MB/s eta 0:00:02\r", + "\u001b[K 5% |██ | 112kB 1.8MB/s eta 0:00:01\r", + "\u001b[K 6% |██ | 122kB 1.7MB/s eta 0:00:02\r", + "\u001b[K 7% |██▎ | 133kB 1.6MB/s eta 0:00:02\r", + "\u001b[K 7% |██▍ | 143kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 8% |██▋ | 153kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 8% |██▉ | 163kB 1.7MB/s eta 0:00:02\r", + "\u001b[K 9% |███ | 174kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 9% |███▏ | 184kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 10% |███▎ | 194kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 10% |███▌ | 204kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 11% |███▋ | 215kB 1.7MB/s eta 0:00:02\r", + "\u001b[K 11% |███▉ | 225kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 12% |████ | 235kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 13% |████▏ | 245kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 13% |████▍ | 256kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 14% |████▌ | 266kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 14% |████▊ | 276kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 15% |████▉ | 286kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 15% |█████ | 296kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 16% |█████▎ | 307kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 16% |█████▍ | 317kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 17% |█████▋ | 327kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 17% |█████▊ | 337kB 1.8MB/s eta 0:00:01\r", + "\u001b[K 18% |██████ | 348kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 19% |██████ | 358kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 19% |██████▎ | 368kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 20% |██████▌ | 378kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 20% |██████▋ | 389kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 21% |██████▉ | 399kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 21% |███████ | 409kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 22% |███████▏ | 419kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 22% |███████▎ | 430kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 23% |███████▌ | 440kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 23% |███████▋ | 450kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 24% |███████▉ | 460kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 25% |████████ | 471kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 25% |████████▏ | 481kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 26% |████████▍ | 491kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 26% |████████▌ | 501kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 27% |████████▊ | 512kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 27% |████████▉ | 522kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 28% |█████████ | 532kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 28% |█████████▎ | 542kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 29% |█████████▍ | 552kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 29% |█████████▋ | 563kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 30% |█████████▊ | 573kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 31% |██████████ | 583kB 1.8MB/s eta 0:00:01\r", + "\u001b[K 31% |██████████ | 593kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 32% |██████████▎ | 604kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 32% |██████████▌ | 614kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 33% |██████████▋ | 624kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 33% |██████████▉ | 634kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 34% |███████████ | 645kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 34% |███████████▏ | 655kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 35% |███████████▎ | 665kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 35% |███████████▌ | 675kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 36% |███████████▊ | 686kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 37% |███████████▉ | 696kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 37% |████████████ | 706kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 38% |████████████▏ | 716kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 38% |████████████▍ | 727kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 39% |████████████▌ | 737kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 39% |████████████▊ | 747kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 40% |█████████████ | 757kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 40% |█████████████ | 768kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 41% |█████████████▎ | 778kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 41% |█████████████▍ | 788kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 42% |█████████████▋ | 798kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 43% |█████████████▊ | 808kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 43% |██████████████ | 819kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 44% |██████████████ | 829kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 44% |██████████████▎ | 839kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 45% |██████████████▌ | 849kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 45% |██████████████▋ | 860kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 46% |██████████████▉ | 870kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 46% |███████████████ | 880kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 47% |███████████████▏ | 890kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 47% |███████████████▎ | 901kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 48% |███████████████▌ | 911kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 48% |███████████████▊ | 921kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 49% |███████████████▉ | 931kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 50% |████████████████ | 942kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 50% |████████████████▏ | 952kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 51% |████████████████▍ | 962kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 51% |████████████████▌ | 972kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 52% |████████████████▊ | 983kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 52% |█████████████████ | 993kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 53% |█████████████████ | 1.0MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 53% |█████████████████▎ | 1.0MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 54% |█████████████████▍ | 1.0MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 54% |█████████████████▋ | 1.0MB 1.6MB/s eta 0:00:01\r", + "\u001b[K 55% |█████████████████▊ | 1.0MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 56% |██████████████████ | 1.1MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 56% |██████████████████▏ | 1.1MB 1.6MB/s eta 0:00:01\r", + "\u001b[K 57% |██████████████████▎ | 1.1MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 57% |██████████████████▌ | 1.1MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 58% |██████████████████▋ | 1.1MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 58% |██████████████████▉ | 1.1MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 59% |███████████████████ | 1.1MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 59% |███████████████████▏ | 1.1MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 60% |███████████████████▍ | 1.1MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 60% |███████████████████▌ | 1.1MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 61% |███████████████████▊ | 1.2MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 62% |███████████████████▉ | 1.2MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 62% |████████████████████ | 1.2MB 1.8MB/s eta 0:00:01\r", + "\u001b[K 63% |████████████████████▏ | 1.2MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 63% |████████████████████▍ | 1.2MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 64% |████████████████████▌ | 1.2MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 64% |████████████████████▊ | 1.2MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 65% |█████████████████████ | 1.2MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 65% |█████████████████████ | 1.2MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 66% |█████████████████████▎ | 1.2MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 66% |█████████████████████▍ | 1.3MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 67% |█████████████████████▋ | 1.3MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 68% |█████████████████████▊ | 1.3MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 68% |██████████████████████ | 1.3MB 2.0MB/s eta 0:00:01\r", + "\u001b[K 69% |██████████████████████▏ | 1.3MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 69% |██████████████████████▎ | 1.3MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 70% |██████████████████████▌ | 1.3MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 70% |██████████████████████▋ | 1.3MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 71% |██████████████████████▉ | 1.3MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 71% |███████████████████████ | 1.4MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 72% |███████████████████████▏ | 1.4MB 1.6MB/s eta 0:00:01\r", + "\u001b[K 72% |███████████████████████▍ | 1.4MB 1.8MB/s eta 0:00:01\r", + "\u001b[K 73% |███████████████████████▌ | 1.4MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 74% |███████████████████████▊ | 1.4MB 1.6MB/s eta 0:00:01\r", + "\u001b[K 74% |███████████████████████▉ | 1.4MB 1.8MB/s eta 0:00:01\r", + "\u001b[K 75% |████████████████████████ | 1.4MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 75% |████████████████████████▏ | 1.4MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 76% |████████████████████████▍ | 1.4MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 76% |████████████████████████▋ | 1.4MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 77% |████████████████████████▊ | 1.5MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 77% |█████████████████████████ | 1.5MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 78% |█████████████████████████ | 1.5MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 78% |█████████████████████████▎ | 1.5MB 2.0MB/s eta 0:00:01\r", + "\u001b[K 79% |█████████████████████████▍ | 1.5MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 80% |█████████████████████████▋ | 1.5MB 1.8MB/s eta 0:00:01\r", + "\u001b[K 80% |█████████████████████████▉ | 1.5MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 81% |██████████████████████████ | 1.5MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 81% |██████████████████████████▏ | 1.5MB 1.8MB/s eta 0:00:01\r", + "\u001b[K 82% |██████████████████████████▎ | 1.5MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 82% |██████████████████████████▌ | 1.6MB 1.6MB/s eta 0:00:01\r", + "\u001b[K 83% |██████████████████████████▋ | 1.6MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 83% |██████████████████████████▉ | 1.6MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 84% |███████████████████████████ | 1.6MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 84% |███████████████████████████▏ | 1.6MB 2.0MB/s eta 0:00:01\r", + "\u001b[K 85% |███████████████████████████▍ | 1.6MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 86% |███████████████████████████▌ | 1.6MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 86% |███████████████████████████▊ | 1.6MB 1.8MB/s eta 0:00:01\r", + "\u001b[K 87% |███████████████████████████▉ | 1.6MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 87% |████████████████████████████ | 1.6MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 88% |████████████████████████████▏ | 1.7MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 88% |████████████████████████████▍ | 1.7MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 89% |████████████████████████████▋ | 1.7MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 89% |████████████████████████████▊ | 1.7MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 90% |█████████████████████████████ | 1.7MB 2.0MB/s eta 0:00:01\r", + "\u001b[K 90% |█████████████████████████████ | 1.7MB 2.0MB/s eta 0:00:01\r", + "\u001b[K 91% |█████████████████████████████▎ | 1.7MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 91% |█████████████████████████████▍ | 1.7MB 2.0MB/s eta 0:00:01\r", + "\u001b[K 92% |█████████████████████████████▋ | 1.7MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 93% |█████████████████████████████▉ | 1.8MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 93% |██████████████████████████████ | 1.8MB 2.0MB/s eta 0:00:01\r", + "\u001b[K 94% |██████████████████████████████▏ | 1.8MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 94% |██████████████████████████████▎ | 1.8MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 95% |██████████████████████████████▌ | 1.8MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 95% |██████████████████████████████▋ | 1.8MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 96% |██████████████████████████████▉ | 1.8MB 1.8MB/s eta 0:00:01\r", + "\u001b[K 96% |███████████████████████████████ | 1.8MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 97% |███████████████████████████████▏| 1.8MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 97% |███████████████████████████████▍| 1.8MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 98% |███████████████████████████████▌| 1.9MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 99% |███████████████████████████████▊| 1.9MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 99% |███████████████████████████████▉| 1.9MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 100% |████████████████████████████████| 1.9MB 175kB/s \r\n", + "\u001b[?25hRequirement already up-to-date: paramiko in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", + "Requirement already up-to-date: jinja2 in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", + "Requirement already up-to-date: PyYAML in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", + "Collecting setuptools (from ansible)\r\n", + " Downloading setuptools-28.5.0-py2.py3-none-any.whl (471kB)\r\n", + "\u001b[?25l\r", + "\u001b[K 2% |▊ | 10kB 17.5MB/s eta 0:00:01\r", + "\u001b[K 4% |█▍ | 20kB 16.0MB/s eta 0:00:01\r", + "\u001b[K 6% |██ | 30kB 18.9MB/s eta 0:00:01\r", + "\u001b[K 8% |██▉ | 40kB 20.6MB/s eta 0:00:01\r", + "\u001b[K 10% |███▌ | 51kB 18.3MB/s eta 0:00:01\r", + "\u001b[K 13% |████▏ | 61kB 18.2MB/s eta 0:00:01\r", + "\u001b[K 15% |████▉ | 71kB 16.8MB/s eta 0:00:01\r", + "\u001b[K 17% |█████▋ | 81kB 6.1MB/s eta 0:00:01\r", + "\u001b[K 19% |██████▎ | 92kB 6.1MB/s eta 0:00:01\r", + "\u001b[K 21% |███████ | 102kB 4.9MB/s eta 0:00:01\r", + "\u001b[K 23% |███████▋ | 112kB 4.4MB/s eta 0:00:01\r", + "\u001b[K 26% |████████▍ | 122kB 3.6MB/s eta 0:00:01\r", + "\u001b[K 28% |█████████ | 133kB 2.8MB/s eta 0:00:01\r", + "\u001b[K 30% |█████████▊ | 143kB 2.7MB/s eta 0:00:01\r", + "\u001b[K 32% |██████████▍ | 153kB 2.3MB/s eta 0:00:01\r", + "\u001b[K 34% |███████████▏ | 163kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 36% |███████████▉ | 174kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 39% |████████████▌ | 184kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 41% |█████████████▏ | 194kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 43% |██████████████ | 204kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 45% |██████████████▋ | 215kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 47% |███████████████▎ | 225kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 49% |████████████████ | 235kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 52% |████████████████▊ | 245kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 54% |█████████████████▍ | 256kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 56% |██████████████████ | 266kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 58% |██████████████████▊ | 276kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 60% |███████████████████▌ | 286kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 62% |████████████████████▏ | 296kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 65% |████████████████████▉ | 307kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 67% |█████████████████████▌ | 317kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 69% |██████████████████████▎ | 327kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 71% |███████████████████████ | 337kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 73% |███████████████████████▋ | 348kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 75% |████████████████████████▎ | 358kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 78% |█████████████████████████ | 368kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 80% |█████████████████████████▊ | 378kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 82% |██████████████████████████▍ | 389kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 84% |███████████████████████████ | 399kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 86% |███████████████████████████▉ | 409kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 88% |████████████████████████████▌ | 419kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 91% |█████████████████████████████▏ | 430kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 93% |█████████████████████████████▉ | 440kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 95% |██████████████████████████████▋ | 450kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 97% |███████████████████████████████▎| 460kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 99% |████████████████████████████████| 471kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 100% |████████████████████████████████| 481kB 719kB/s \r\n", + "\u001b[?25hRequirement already up-to-date: pycrypto>=2.6 in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", + "Requirement already up-to-date: pyasn1>=0.1.7 in /usr/local/lib/python2.7/dist-packages (from paramiko->ansible)\r\n", + "Collecting cryptography>=1.1 (from paramiko->ansible)\r\n", + " Downloading cryptography-1.5.2.tar.gz (400kB)\r\n", + "\u001b[?25l\r", + "\u001b[K 2% |▉ | 10kB 22.2MB/s eta 0:00:01\r", + "\u001b[K 5% |█▋ | 20kB 3.1MB/s eta 0:00:01\r", + "\u001b[K 7% |██▌ | 30kB 4.3MB/s eta 0:00:01\r", + "\u001b[K 10% |███▎ | 40kB 2.7MB/s eta 0:00:01\r", + "\u001b[K 12% |████ | 51kB 2.1MB/s eta 0:00:01\r", + "\u001b[K 15% |█████ | 61kB 2.5MB/s eta 0:00:01\r", + "\u001b[K 17% |█████▊ | 71kB 2.2MB/s eta 0:00:01\r", + "\u001b[K 20% |██████▌ | 81kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 23% |███████▍ | 92kB 2.2MB/s eta 0:00:01\r", + "\u001b[K 25% |████████▏ | 102kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 28% |█████████ | 112kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 30% |█████████▉ | 122kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 33% |██████████▋ | 133kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 35% |███████████▌ | 143kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 38% |████████████▎ | 153kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 40% |█████████████ | 163kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 43% |██████████████ | 174kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 46% |██████████████▊ | 184kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 48% |███████████████▌ | 194kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 51% |████████████████▍ | 204kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 53% |█████████████████▏ | 215kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 56% |██████████████████ | 225kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 58% |██████████████████▉ | 235kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 61% |███████████████████▋ | 245kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 63% |████████████████████▌ | 256kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 66% |█████████████████████▎ | 266kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 69% |██████████████████████ | 276kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 71% |███████████████████████ | 286kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 74% |███████████████████████▊ | 296kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 76% |████████████████████████▌ | 307kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 79% |█████████████████████████▍ | 317kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 81% |██████████████████████████▏ | 327kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 84% |███████████████████████████ | 337kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 86% |███████████████████████████▉ | 348kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 89% |████████████████████████████▋ | 358kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 92% |█████████████████████████████▍ | 368kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 94% |██████████████████████████████▎ | 378kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 97% |███████████████████████████████ | 389kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 99% |████████████████████████████████| 399kB 2.1MB/s eta 0:00:01\r", + "\u001b[K 100% |████████████████████████████████| 409kB 1.0MB/s \r\n", + "\u001b[?25hRequirement already up-to-date: MarkupSafe in /usr/local/lib/python2.7/dist-packages (from jinja2->ansible)\r\n", + "Requirement already up-to-date: idna>=2.0 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", + "Requirement already up-to-date: six>=1.4.1 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", + "Requirement already up-to-date: enum34 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", + "Requirement already up-to-date: ipaddress in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", + "Requirement already up-to-date: cffi>=1.4.1 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", + "Requirement already up-to-date: pycparser in /usr/local/lib/python2.7/dist-packages (from cffi>=1.4.1->cryptography>=1.1->paramiko->ansible)\r\n", + "Installing collected packages: setuptools, ansible, cryptography\r\n", + " Found existing installation: setuptools 28.0.0\r\n", + " Uninstalling setuptools-28.0.0:\r\n", + " Successfully uninstalled setuptools-28.0.0\r\n", + " Found existing installation: ansible 2.1.1.0\r\n", + " Uninstalling ansible-2.1.1.0:\r\n", + " Successfully uninstalled ansible-2.1.1.0\r\n", + " Running setup.py install for ansible ... \u001b[?25l-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \bdone\r\n", + "\u001b[?25h Found existing installation: cryptography 1.5\r\n", + " Uninstalling cryptography-1.5:\r\n", + " Successfully uninstalled cryptography-1.5\r\n", + " Running setup.py install for cryptography ... \u001b[?25l-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \bdone\r\n", + "\u001b[?25hSuccessfully installed ansible-2.1.2.0 cryptography-1.5.2 setuptools-28.5.0\r\n" + ] + } + ], + "source": [ + "sudo pip install --upgrade ansible" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ansible 2.1.2.0\r\n", + " config file = \r\n", + " configured module search path = Default w/o overrides\r\n" + ] + } + ], + "source": [ + "ansible --version" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Einrichten einer Inventorydatei.\n", + "\n", + "http://docs.ansible.com/ansible/intro_inventory.html" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "insgesamt 12K\r\n", + "525129 drwxr-xr-x 3 root root 4,0K Sep 21 17:17 .\r\n", + "262145 drwxr-xr-x 115 root root 4,0K Okt 15 21:36 ..\r\n", + "525175 drwxr-xr-x 10 root root 4,0K Sep 29 15:11 roles\r\n" + ] + } + ], + "source": [ + "ls -lachi /etc/ansible/" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [] + } + ], + "source": [ + "sudo cp /vagrant/hosts /etc/ansible" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[local]\r\n", + "localhost ansible_connection=local\r\n", + "\r\n", + "[www]\r\n", + "192.168.60.11 ansible_ssh_user=vagrant\r\n", + "192.168.60.12 ansible_ssh_user=vagrant\r\n", + "192.168.60.13 ansible_ssh_user=vagrant\r\n", + "\r\n", + "[lb]\r\n", + "192.168.60.2 ansible_ssh_user=vagrant\r\n", + "\r\n", + "[db]\r\n", + "192.168.60.21 ansible_ssh_user=vagrant\r\n", + "192.168.60.22 ansible_ssh_user=vagrant\r\n" + ] + } + ], + "source": [ + "cat /etc/ansible/hosts" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "localhost | SUCCESS => {\r\n", + " \"changed\": false, \r\n", + " \"ping\": \"pong\"\r\n", + "}\r\n" + ] + } + ], + "source": [ + "ansible local -m ping" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Erstellen eines ssh-key ohne Nachfrage. Ein evtl. existierender Schlüssel wird gelöscht.\n", + "\n", + "ACHTUNG: Nicht für produktiv Systeme. Hier besser mit Variablen arbeiten.\n", + "\n", + "Wegen ENV Siehe auch: https://12factor.net/de/\n", + "\n", + "ToDO. Hier mit ENV zeigen.\n", + "\n", + "SSH_PASSPHRASE=geheim" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Generating public/private rsa key pair.\r\n", + "Your identification has been saved in /home/vagrant/.ssh/id_rsa.\r\n", + "Your public key has been saved in /home/vagrant/.ssh/id_rsa.pub.\r\n", + "The key fingerprint is:\r\n", + "SHA256:Ycn+Ezz9avfYnhbmGjVGAJdLszSMz1IG6jAv/V52EYk vagrant@ctl\r\n", + "The key's randomart image is:\r\n", + "+---[RSA 2048]----+\r\n", + "| o=o. |\r\n", + "| . ....Xo .|\r\n", + "| o=. BE=+ |\r\n", + "| o*o o =. .|\r\n", + "| .S++ o = |\r\n", + "| ...o .ooo|\r\n", + "| o. ++..|\r\n", + "| ..+.+=.|\r\n", + "| o.o+++|\r\n", + "+----[SHA256]-----+\r\n" + ] + } + ], + "source": [ + "if [ -f ~/.ssh/id_rsa ]; then rm ~/.ssh/id_rsa*; fi && ssh-keygen -t rsa -f ~/.ssh/id_rsa -N geheim" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Automatisches verteilen mit ssh-cop-id\n", + "\n", + "http://serverfault.com/questions/306541/automating-ssh-copy-id" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Den Rechner mit der IP 192.168.60.2 in der Datei `known_hosts` löschen." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "do_known_hosts: hostkeys_foreach failed: No such file or directory\r", + "\r\n" + ] + } + ], + "source": [ + "ssh-keygen -R 192.168.60.2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Can I automatically add a new host to known_hosts?\n", + "\n", + "http://serverfault.com/questions/132970/can-i-automatically-add-a-new-host-to-known-hosts\n", + "\n", + "Nur etwas, wenn dem Netz vetraut wird. NICHT FÜR PRODUKTIV SYSTEME!" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# 192.168.60.2:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "# 192.168.60.2:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "# 192.168.60.2:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n" + ] + } + ], + "source": [ + "ssh-keyscan -H 192.168.60.2 >> ~/.ssh/known_hosts" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "|1|P8I6Mt2vBKHT66gtERqcBHD96kk=|bT9TxJc0dTgcr/HsnW03UHO3pzQ= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOUj8l+Ejj53rTy5+9bMcbINLRZ6UFxaK6fRE6uklH7YvPh08DepyspTONUWuwwYSwJuHBldP8Joafx5jNuW2sI=\r\n", + "|1|VcU7J3x6HDTTWMaDnZV8VC8udP4=|ZyfzS78SrSOktj/pMU7t4PNmYxQ= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU171qwSgbEtEal2fCozSU7wsNRzA2H/DuUaLku6xRazRkfQZnFHcDn5pFk/GhHLTCwDRXz7nnnbBFFJK3jr03AsOr6rtqJuojQEIh1Yz1wKI4Dvvawteb8UnveKcef7OGs6a2nphGC+ZYX8txu+gdSF9HNVxGbUyFtbNeKRpAPCRgAkHfh1stxwPK8BQiaPQbEHSWzPer1G38Qsq1QzbKXWrizU057i5pw38cdRQ8CaVYe9u+rUnNEOfGjpESh06lb1vdZDEmily7D0jWDW7+Tw7hbr3uw+wUiJaVEGrBbQQotIqcrWTz6AqrwXKdZpklJZkcPx5JGS3Ym13AUBDB\r\n", + "|1|yT+jo2acKu/kz3SadsT5S3GmMjw=|Z99P6GkKWwrjctj27r1aET2TYDE= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAc42trNYnv58q3PiJSJ+lLhkHY9NOX4kVrrJdC8fJLf\r\n" + ] + } + ], + "source": [ + "cat ~/.ssh/known_hosts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "SSH Schlüssel verteilen ohne Passwortabfrage." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "0% [Wird verarbeitet]\r", + " \r", + "Holen:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [94,5 kB]\r\n", + "\r", + "0% [Warten auf Kopfzeilen] [1 InRelease 14,0 kB/94,5 kB 15%] [Warten auf Kopfze\r", + " \r", + "OK:2 http://de.archive.ubuntu.com/ubuntu xenial InRelease\r\n", + "\r", + "0% [Warten auf Kopfzeilen] [1 InRelease 34,0 kB/94,5 kB 36%] [Warten auf Kopfze\r", + " \r", + "OK:3 http://ppa.launchpad.net/chronitis/jupyter/ubuntu xenial InRelease\r\n", + "\r", + "0% [Warten auf Kopfzeilen] [1 InRelease 34,0 kB/94,5 kB 36%] [Warten auf Kopfze\r", + "0% [2 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [1 InRelease 39,7 kB/94,5 \r", + " \r", + "OK:4 http://de.archive.ubuntu.com/ubuntu xenial-updates InRelease\r\n", + "\r", + " \r", + "OK:5 http://ppa.launchpad.net/nginx/stable/ubuntu xenial InRelease\r\n", + "\r", + "0% [2 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [1 InRelease 45,4 kB/94,5 \r", + " \r", + "Ign:6 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 InRelease\r\n", + "\r", + "0% [2 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [1 InRelease 46,8 kB/94,5 \r", + " \r", + "OK:7 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 Release\r\n", + "\r", + "0% [2 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [1 InRelease 92,5 kB/94,5 \r", + " \r", + "OK:8 http://ppa.launchpad.net/nijel/phpmyadmin/ubuntu xenial InRelease\r\n", + "\r", + "0% [2 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [1 InRelease 94,5 kB/94,5 \r", + " \r", + "0% [2 InRelease gpgv 247 kB] [Warten auf Kopfzeilen]\r", + " \r", + "OK:9 http://de.archive.ubuntu.com/ubuntu xenial-backports InRelease\r\n", + "\r", + " \r", + "0% [2 InRelease gpgv 247 kB]\r", + " \r", + "0% [Wird verarbeitet]\r", + "0% [3 InRelease gpgv 18,1 kB]\r", + " \r", + "0% [Wird verarbeitet]\r", + "0% [4 InRelease gpgv 95,7 kB]\r", + " \r", + "OK:10 https://apt.dockerproject.org/repo ubuntu-xenial InRelease\r\n", + "\r", + "0% [4 InRelease gpgv 95,7 kB]\r", + " \r", + "OK:11 https://deb.nodesource.com/node_4.x xenial InRelease\r\n", + "\r", + "0% [4 InRelease gpgv 95,7 kB]\r", + " \r", + "0% [Wird verarbeitet]\r", + "0% [5 InRelease gpgv 17,5 kB]\r", + " \r", + "0% [Wird verarbeitet]\r", + "0% [Release.gpg gpgv 3.462 B]\r", + " \r", + "0% [Wird verarbeitet]\r", + "0% [8 InRelease gpgv 17,5 kB]\r", + " \r", + "0% [Wird verarbeitet]\r", + "0% [1 InRelease gpgv 94,5 kB]\r", + " \r", + "0% [Wird verarbeitet]\r", + "0% [9 InRelease gpgv 92,2 kB]\r", + " \r", + "0% [Wird verarbeitet]\r", + "0% [10 InRelease gpgv 30,2 kB]\r", + " \r", + "0% [Wird verarbeitet]\r", + "0% [11 InRelease gpgv 3.914 B]\r", + " \r", + "100% [Wird verarbeitet]\r", + " \r", + "Es wurden 94,5 kB in 1 s geholt (50,3 kB/s).\r\n", + "\r", + "Paketlisten werden gelesen... 0%\r", + "\r", + "Paketlisten werden gelesen... 0%\r", + "\r", + "Paketlisten werden gelesen... 1%\r", + "\r", + "Paketlisten werden gelesen... 4%\r", + "\r", + "Paketlisten werden gelesen... 4%\r", + "\r", + "Paketlisten werden gelesen... 9%\r", + "\r", + "Paketlisten werden gelesen... 9%\r", + "\r", + "Paketlisten werden gelesen... 11%\r", + "\r", + "Paketlisten werden gelesen... 11%\r", + "\r", + "Paketlisten werden gelesen... 13%\r", + "\r", + "Paketlisten werden gelesen... 13%\r", + "\r", + "Paketlisten werden gelesen... 13%\r", + "\r", + "Paketlisten werden gelesen... 13%\r", + "\r", + "Paketlisten werden gelesen... 13%\r", + "\r", + "Paketlisten werden gelesen... 13%\r", + "\r", + "Paketlisten werden gelesen... 13%\r", + "\r", + "Paketlisten werden gelesen... 13%\r", + "\r", + "Paketlisten werden gelesen... 13%\r", + "\r", + "Paketlisten werden gelesen... 13%\r", + "\r", + "Paketlisten werden gelesen... 19%\r", + "\r", + "Paketlisten werden gelesen... 30%\r", + "\r", + "Paketlisten werden gelesen... 39%\r", + "\r", + "Paketlisten werden gelesen... 40%\r", + "\r", + "Paketlisten werden gelesen... 40%\r", + "\r", + "Paketlisten werden gelesen... 51%\r", + "\r", + "Paketlisten werden gelesen... 63%\r", + "\r", + "Paketlisten werden gelesen... 66%\r", + "\r", + "Paketlisten werden gelesen... 66%\r", + "\r", + "Paketlisten werden gelesen... 72%\r", + "\r", + "Paketlisten werden gelesen... 72%\r", + "\r", + "Paketlisten werden gelesen... 80%\r", + "\r", + "Paketlisten werden gelesen... 87%\r", + "\r", + "Paketlisten werden gelesen... 87%\r", + "\r", + "Paketlisten werden gelesen... 88%\r", + "\r", + "Paketlisten werden gelesen... 88%\r", + "\r", + "Paketlisten werden gelesen... 88%\r", + "\r", + "Paketlisten werden gelesen... 88%\r", + "\r", + "Paketlisten werden gelesen... 88%\r", + "\r", + "Paketlisten werden gelesen... 88%\r", + "\r", + "Paketlisten werden gelesen... 89%\r", + "\r", + "Paketlisten werden gelesen... 89%\r", + "\r", + "Paketlisten werden gelesen... 90%\r", + "\r", + "Paketlisten werden gelesen... 90%\r", + "\r", + "Paketlisten werden gelesen... 92%\r", + "\r", + "Paketlisten werden gelesen... 92%\r", + "\r", + "Paketlisten werden gelesen... 93%\r", + "\r", + "Paketlisten werden gelesen... 93%\r", + "\r", + "Paketlisten werden gelesen... 94%\r", + "\r", + "Paketlisten werden gelesen... 94%\r", + "\r", + "Paketlisten werden gelesen... 95%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", + "Paketlisten werden gelesen... 97%\r", + "\r", + "Paketlisten werden gelesen... 97%\r", + "\r", + "Paketlisten werden gelesen... 98%\r", + "\r", + "Paketlisten werden gelesen... 98%\r", + "\r", + "Paketlisten werden gelesen... 98%\r", + "\r", + "Paketlisten werden gelesen... 98%\r", + "\r", + "Paketlisten werden gelesen... 98%\r", + "\r", + "Paketlisten werden gelesen... 98%\r", + "\r", + "Paketlisten werden gelesen... 98%\r", + "\r", + "Paketlisten werden gelesen... 98%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... 99%\r", + "\r", + "Paketlisten werden gelesen... Fertig\r", + "\r\n", + "\r", + "Paketlisten werden gelesen... 0%\r", + "\r", + "Paketlisten werden gelesen... 100%\r", + "\r", + "Paketlisten werden gelesen... Fertig\r", + "\r\n", + "\r", + "Abhängigkeitsbaum wird aufgebaut.... 0%\r", + "\r", + "Abhängigkeitsbaum wird aufgebaut.... 0%\r", + "\r", + "Abhängigkeitsbaum wird aufgebaut.... 50%\r", + "\r", + "Abhängigkeitsbaum wird aufgebaut.... 50%\r", + "\r", + "Abhängigkeitsbaum wird aufgebaut.... 88%\r", + "\r", + "Abhängigkeitsbaum wird aufgebaut. \r", + "\r\n", + "\r", + "Statusinformationen werden eingelesen.... 0%\r", + "\r", + "Statusinformationen werden eingelesen.... 0%\r", + "\r", + "Statusinformationen werden eingelesen.... Fertig\r", + "\r\n", + "Die folgenden NEUEN Pakete werden installiert:\r\n", + " sshpass\r\n", + "0 aktualisiert, 1 neu installiert, 0 zu entfernen und 56 nicht aktualisiert.\r\n", + "Es müssen 10,5 kB an Archiven heruntergeladen werden.\r\n", + "Nach dieser Operation werden 56,3 kB Plattenplatz zusätzlich benutzt.\r\n", + "\r", + "0% [Wird verarbeitet]\r", + " \r", + "Holen:1 http://de.archive.ubuntu.com/ubuntu xenial/universe amd64 sshpass amd64 1.05-1 [10,5 kB]\r\n", + "\r", + "20% [1 sshpass 2.606 B/10,5 kB 25%]\r", + " \r", + "100% [Wird verarbeitet]\r", + " \r", + "Es wurden 10,5 kB in 0 s geholt (112 kB/s).\r\n", + "debconf: kann Oberfläche nicht initialisieren: Dialog\r\n", + "debconf: (Die Dialog-Oberfläche funktioniert nicht auf einem Dumb-Terminal, einem Emacs-Shellbuffer oder ohne ein steuerndes Terminal.)\r\n", + "debconf: greife zurück auf die Oberfläche: Readline\r\n", + "Vormals nicht ausgewähltes Paket sshpass wird gewählt.\r\n", + "(Lese Datenbank ... \r", + "(Lese Datenbank ... 5%\r", + "(Lese Datenbank ... 10%\r", + "(Lese Datenbank ... 15%\r", + "(Lese Datenbank ... 20%\r", + "(Lese Datenbank ... 25%\r", + "(Lese Datenbank ... 30%\r", + "(Lese Datenbank ... 35%\r", + "(Lese Datenbank ... 40%\r", + "(Lese Datenbank ... 45%\r", + "(Lese Datenbank ... 50%\r", + "(Lese Datenbank ... 55%\r", + "(Lese Datenbank ... 60%\r", + "(Lese Datenbank ... 65%\r", + "(Lese Datenbank ... 70%\r", + "(Lese Datenbank ... 75%\r", + "(Lese Datenbank ... 80%\r", + "(Lese Datenbank ... 85%\r", + "(Lese Datenbank ... 90%\r", + "(Lese Datenbank ... 95%\r", + "(Lese Datenbank ... 100%\r", + "(Lese Datenbank ... 216383 Dateien und Verzeichnisse sind derzeit installiert.)\r\n", + "Vorbereitung zum Entpacken von .../sshpass_1.05-1_amd64.deb ...\r\n", + "Entpacken von sshpass (1.05-1) ...\r\n", + "Trigger für man-db (2.7.5-1) werden verarbeitet ...\r\n", + "sshpass (1.05-1) wird eingerichtet ...\r\n" + ] + } + ], + "source": [ + "sudo apt-get update\n", + "sudo apt-get install -y sshpass" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: \"/home/vagrant/.ssh/id_rsa.pub\"\r\n", + "/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed\r\n", + "/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys\r\n", + "\r\n", + "Number of key(s) added: 1\r\n", + "\r\n", + "Now try logging into the machine, with: \"ssh 'vagrant@192.168.60.2'\"\r\n", + "and check to make sure that only the key(s) you wanted were added.\r\n", + "\r\n" + ] + } + ], + "source": [ + "echo 'vagrant' > passwort\n", + "sshpass -f passwort ssh-copy-id vagrant@192.168.60.2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Da wir keine passphrase in jupyter eingeben können hier ein Workaround. Mit dem Kommando expect.\n", + "\n", + "https://wiki.ubuntuusers.de/Tcl/#Installation-ueber-Download" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r", + "Paketlisten werden gelesen... 0%\r", + "\r", + "Paketlisten werden gelesen... 100%\r", + "\r", + "Paketlisten werden gelesen... Fertig\r", + "\r\n", + "\r", + "Abhängigkeitsbaum wird aufgebaut.... 0%\r", + "\r", + "Abhängigkeitsbaum wird aufgebaut.... 0%\r", + "\r", + "Abhängigkeitsbaum wird aufgebaut.... 50%\r", + "\r", + "Abhängigkeitsbaum wird aufgebaut.... 50%\r", + "\r", + "Abhängigkeitsbaum wird aufgebaut.... 95%\r", + "\r", + "Abhängigkeitsbaum wird aufgebaut. \r", + "\r\n", + "\r", + "Statusinformationen werden eingelesen.... 0%\r", + "\r", + "Statusinformationen werden eingelesen.... 0%\r", + "\r", + "Statusinformationen werden eingelesen.... Fertig\r", + "\r\n", + "Die folgenden zusätzlichen Pakete werden Installiert\r\n", + " tcl-expect\r\n", + "Die folgenden NEUEN Pakete werden installiert:\r\n", + " expect tcl-expect\r\n", + "0 aktualisiert, 2 neu installiert, 0 zu entfernen und 56 nicht aktualisiert.\r\n", + "Es müssen 241 kB an Archiven heruntergeladen werden.\r\n", + "Nach dieser Operation werden 538 kB Plattenplatz zusätzlich benutzt.\r\n", + "\r", + "0% [Wird verarbeitet]\r", + " \r", + "Holen:1 http://de.archive.ubuntu.com/ubuntu xenial/universe amd64 tcl-expect amd64 5.45-7 [104 kB]\r\n", + "\r", + "0% [1 tcl-expect 1.164 B/104 kB 1%]\r", + " \r", + "44% [Warten auf Kopfzeilen]\r", + " \r", + "Holen:2 http://de.archive.ubuntu.com/ubuntu xenial/universe amd64 expect amd64 5.45-7 [137 kB]\r\n", + "\r", + "45% [2 expect 2.604 B/137 kB 2%]\r", + " \r", + "100% [Wird verarbeitet]\r", + " \r", + "Es wurden 241 kB in 0 s geholt (740 kB/s).\r\n", + "debconf: kann Oberfläche nicht initialisieren: Dialog\r\n", + "debconf: (Die Dialog-Oberfläche funktioniert nicht auf einem Dumb-Terminal, einem Emacs-Shellbuffer oder ohne ein steuerndes Terminal.)\r\n", + "debconf: greife zurück auf die Oberfläche: Readline\r\n", + "Vormals nicht ausgewähltes Paket tcl-expect:amd64 wird gewählt.\r\n", + "(Lese Datenbank ... \r", + "(Lese Datenbank ... 5%\r", + "(Lese Datenbank ... 10%\r", + "(Lese Datenbank ... 15%\r", + "(Lese Datenbank ... 20%\r", + "(Lese Datenbank ... 25%\r", + "(Lese Datenbank ... 30%\r", + "(Lese Datenbank ... 35%\r", + "(Lese Datenbank ... 40%\r", + "(Lese Datenbank ... 45%\r", + "(Lese Datenbank ... 50%\r", + "(Lese Datenbank ... 55%\r", + "(Lese Datenbank ... 60%\r", + "(Lese Datenbank ... 65%\r", + "(Lese Datenbank ... 70%\r", + "(Lese Datenbank ... 75%\r", + "(Lese Datenbank ... 80%\r", + "(Lese Datenbank ... 85%\r", + "(Lese Datenbank ... 90%\r", + "(Lese Datenbank ... 95%\r", + "(Lese Datenbank ... 100%\r", + "(Lese Datenbank ... 216388 Dateien und Verzeichnisse sind derzeit installiert.)\r\n", + "Vorbereitung zum Entpacken von .../tcl-expect_5.45-7_amd64.deb ...\r\n", + "Entpacken von tcl-expect:amd64 (5.45-7) ...\r\n", + "Vormals nicht ausgewähltes Paket expect wird gewählt.\r\n", + "Vorbereitung zum Entpacken von .../expect_5.45-7_amd64.deb ...\r\n", + "Entpacken von expect (5.45-7) ...\r\n", + "Trigger für libc-bin (2.23-0ubuntu3) werden verarbeitet ...\r\n", + "Trigger für man-db (2.7.5-1) werden verarbeitet ...\r\n", + "tcl-expect:amd64 (5.45-7) wird eingerichtet ...\r\n", + "expect (5.45-7) wird eingerichtet ...\r\n", + "Trigger für libc-bin (2.23-0ubuntu3) werden verarbeitet ...\r\n" + ] + } + ], + "source": [ + "sudo apt-get install -y expect" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [] + } + ], + "source": [ + "cp /vagrant/ssh-add-passphrase.sh ./\n", + "chmod u+x ssh-add-passphrase.sh" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "#!/usr/bin/expect -f\r\n", + "spawn ssh-add /home/vagrant/.ssh/id_rsa\r\n", + "expect \"Enter passphrase for /home/vagrant/.ssh/id_rsa:\"\r\n", + "send \"geheim\\n\";\r\n", + "interact\r\n" + ] + } + ], + "source": [ + "cat ssh-add-passphrase.sh" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "spawn ssh-add /home/vagrant/.ssh/id_rsa\r", + "\r", + "\r\n", + "Enter passphrase for /home/vagrant/.ssh/id_rsa: \r\n", + "Identity added: /home/vagrant/.ssh/id_rsa (/home/vagrant/.ssh/id_rsa)\r\n" + ] + } + ], + "source": [ + "eval `ssh-agent -s` > /dev/null\n", + "./ssh-add-passphrase.sh" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SSH_AGENT_PID=6657\r\n", + "XDG_SESSION_ID=c1\r\n", + "SHELL=/bin/bash\r\n", + "USER=vagrant\r\n", + "LS_COLORS=\r\n", + "SSH_AUTH_SOCK=/tmp/ssh-vHzlQtH7bjYk/agent.6656\r\n", + "JPY_PARENT_PID=1353\r\n", + "PAGER=cat\r\n", + "PATH=/home/vagrant/.gem/ruby/2.3.0/bin:/home/vagrant/bin:/home/vagrant/.local/bin:/usr/local/lib/npm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin\r\n", + "MAIL=/var/mail/vagrant\r\n", + "NPM_CONFIG_PREFIX=/usr/local/lib/npm\r\n", + "PWD=/home/vagrant/projects\r\n", + "LANG=de_DE.UTF-8\r\n", + "NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript:/usr/local/lib/npm/lib/node_modules\r\n", + "PS1=[PEXP\\[\\]ECT_PROMPT>\r\n", + "SHLVL=2\r\n", + "HOME=/home/vagrant\r\n", + "LOGNAME=vagrant\r\n", + "LESSOPEN=| /usr/bin/lesspipe %s\r\n", + "XDG_RUNTIME_DIR=/run/user/1000\r\n", + "LESSCLOSE=/usr/bin/lesspipe %s %s\r\n", + "_=/usr/bin/env\r\n" + ] + } + ], + "source": [ + "env" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2048 SHA256:Ycn+Ezz9avfYnhbmGjVGAJdLszSMz1IG6jAv/V52EYk /home/vagrant/.ssh/id_rsa (RSA)\r\n" + ] + } + ], + "source": [ + "ssh-add -l" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "192.168.60.2 | SUCCESS => {\r\n", + " \"changed\": false, \r\n", + " \"ping\": \"pong\"\r\n", + "}\r\n" + ] + } + ], + "source": [ + "ansible lb -m ping" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For Schleife in der Bash. Achtung erst die Maschienen einfügen und dann den Schlüssel verteilen." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# 192.168.60.11:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "# 192.168.60.11:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "# 192.168.60.11:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed\r\n", + "/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys\r\n", + "\r\n", + "Number of key(s) added: 1\r\n", + "\r\n", + "Now try logging into the machine, with: \"ssh 'vagrant@192.168.60.11'\"\r\n", + "and check to make sure that only the key(s) you wanted were added.\r\n", + "\r\n", + "# 192.168.60.12:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "# 192.168.60.12:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "# 192.168.60.12:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed\r\n", + "/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys\r\n", + "\r\n", + "Number of key(s) added: 1\r\n", + "\r\n", + "Now try logging into the machine, with: \"ssh 'vagrant@192.168.60.12'\"\r\n", + "and check to make sure that only the key(s) you wanted were added.\r\n", + "\r\n", + "# 192.168.60.13:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "# 192.168.60.13:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "# 192.168.60.13:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed\r\n", + "/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys\r\n", + "\r\n", + "Number of key(s) added: 1\r\n", + "\r\n", + "Now try logging into the machine, with: \"ssh 'vagrant@192.168.60.13'\"\r\n", + "and check to make sure that only the key(s) you wanted were added.\r\n", + "\r\n", + "# 192.168.60.21:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "# 192.168.60.21:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "# 192.168.60.21:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed\r\n", + "/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys\r\n", + "\r\n", + "Number of key(s) added: 1\r\n", + "\r\n", + "Now try logging into the machine, with: \"ssh 'vagrant@192.168.60.21'\"\r\n", + "and check to make sure that only the key(s) you wanted were added.\r\n", + "\r\n", + "# 192.168.60.22:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "# 192.168.60.22:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "# 192.168.60.22:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1\r\n", + "/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed\r\n", + "/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys\r\n", + "\r\n", + "Number of key(s) added: 1\r\n", + "\r\n", + "Now try logging into the machine, with: \"ssh 'vagrant@192.168.60.22'\"\r\n", + "and check to make sure that only the key(s) you wanted were added.\r\n", + "\r\n" + ] + } + ], + "source": [ + "for i in 11 12 13 21 22\n", + "do \n", + " ssh-keyscan -H 192.168.60.${i} >> ~/.ssh/known_hosts\n", + " sshpass -f passwort ssh-copy-id vagrant@192.168.60.${i}\n", + "done" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "192.168.60.2 | SUCCESS => {\r\n", + " \"changed\": false, \r\n", + " \"ping\": \"pong\"\r\n", + "}\r\n", + "192.168.60.21 | SUCCESS => {\r\n", + " \"changed\": false, \r\n", + " \"ping\": \"pong\"\r\n", + "}\r\n", + "192.168.60.22 | SUCCESS => {\r\n", + " \"changed\": false, \r\n", + " \"ping\": \"pong\"\r\n", + "}\r\n", + "192.168.60.12 | SUCCESS => {\r\n", + " \"changed\": false, \r\n", + " \"ping\": \"pong\"\r\n", + "}\r\n", + "192.168.60.11 | SUCCESS => {\r\n", + " \"changed\": false, \r\n", + " \"ping\": \"pong\"\r\n", + "}\r\n", + "localhost | SUCCESS => {\r\n", + " \"changed\": false, \r\n", + " \"ping\": \"pong\"\r\n", + "}\r\n", + "192.168.60.13 | SUCCESS => {\r\n", + " \"changed\": false, \r\n", + " \"ping\": \"pong\"\r\n", + "}\r\n" + ] + } + ], + "source": [ + "ansible all -m ping" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 1 echo $?\r\n", + " 2 ansible --version\r\n", + " 3 echo $?\r\n", + " 4 sudo pip install --upgrade ansible\r\n", + " 5 echo $?\r\n", + " 6 ansible --version\r\n", + " 7 echo $?\r\n", + " 8 ls -lachi /etc/ansible/\r\n", + " 9 echo $?\r\n", + " 10 sudo cp /vagrant/hosts /etc/ansible\r\n", + " 11 echo $?\r\n", + " 12 cat /etc/ansible/hosts\r\n", + " 13 echo $?\r\n", + " 14 ansible local -m ping\r\n", + " 15 echo $?\r\n", + " 16 if [ -f ~/.ssh/id_rsa ]; then rm ~/.ssh/id_rsa*; fi && ssh-keygen -t rsa -f ~/.ssh/id_rsa -N geheim\r\n", + " 17 echo $?\r\n", + " 18 ssh-keygen -R 192.168.60.2\r\n", + " 19 echo $?\r\n", + " 20 ssh-keygen -R 192.168.60.2\r\n", + " 21 echo $?\r\n", + " 22 ssh-keyscan -H 192.168.60.2 >> ~/.ssh/known_hosts\r\n", + " 23 echo $?\r\n", + " 24 cat ~/.ssh/known_hosts\r\n", + " 25 echo $?\r\n", + " 26 sudo apt-get update\r\n", + " 27 sudo apt-get install -y sshpass\r\n", + " 28 echo $?\r\n", + " 29 echo 'vagrant' > passwort\r\n", + " 30 sshpass -f passwort ssh-copy-id vagrant@192.168.60.2\r\n", + " 31 echo $?\r\n", + " 32 sudo apt-get install -y expect\r\n", + " 33 echo $?\r\n", + " 34 cp /vagrant/ssh-add-passphrase.sh ./\r\n", + " 35 chmod u+x ssh-add-passphrase.sh\r\n", + " 36 echo $?\r\n", + " 37 cat ssh-add-passphrase.sh\r\n", + " 38 echo $?\r\n", + " 39 eval `ssh-agent -s` > /dev/null\r\n", + " 40 ./ssh-add-passphrase.sh\r\n", + " 41 echo $?\r\n", + " 42 env\r\n", + " 43 echo $?\r\n", + " 44 ssh-add -l\r\n", + " 45 echo $?\r\n", + " 46 ansible lb -m ping\r\n", + " 47 echo $?\r\n", + " 48 for i in 11 12 13 21 22; do ssh-keyscan -H 192.168.60.${i} >> ~/.ssh/known_hosts; sshpass -f passwort ssh-copy-id vagrant@192.168.60.${i}; done\r\n", + " 49 echo $?\r\n", + " 50 ansible all -m ping\r\n", + " 51 echo $?\r\n", + " 52 history\r\n" + ] + } + ], + "source": [ + "history " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Der Ansible Test funktioniert. Somit können wir wieter machen mit den Playbooks." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Bash", + "language": "bash", + "name": "bash" + }, + "language_info": { + "codemirror_mode": "shell", + "file_extension": ".sh", + "mimetype": "text/x-sh", + "name": "bash" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 8b0c1bfc4aef20065a1340a4ffe3262b8a560c41 Mon Sep 17 00:00:00 2001 From: kraeml Date: Sun, 16 Oct 2016 10:03:53 +0200 Subject: [PATCH 2/7] =?UTF-8?q?Kapitel=202=20=C3=BCberarbeitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ynb => 00 Erste Schritte mit ansible.ipynb | 554 +++++++++--------- 01_Playbooks.ipynb | 84 +-- 02_Rollen.ipynb | 253 +++++--- 3 files changed, 476 insertions(+), 415 deletions(-) rename Erste Schritte mit ansible.ipynb => 00 Erste Schritte mit ansible.ipynb (85%) diff --git a/Erste Schritte mit ansible.ipynb b/00 Erste Schritte mit ansible.ipynb similarity index 85% rename from Erste Schritte mit ansible.ipynb rename to 00 Erste Schritte mit ansible.ipynb index 8c1277a..53a0a7a 100644 --- a/Erste Schritte mit ansible.ipynb +++ b/00 Erste Schritte mit ansible.ipynb @@ -32,6 +32,15 @@ "history -c" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Löscht die Bash-History. Siehe https://wiki.ubuntuusers.de/Bash/#History\n", + "\n", + "Dann kann getestet werden ob ansible installiert ist." + ] + }, { "cell_type": "code", "execution_count": 2, @@ -78,15 +87,15 @@ "Collecting ansible\r\n", " Downloading ansible-2.1.2.0.tar.gz (1.9MB)\r\n", "\u001b[?25l\r", - "\u001b[K 0% |▏ | 10kB 1.3MB/s eta 0:00:02\r", - "\u001b[K 1% |▍ | 20kB 1.5MB/s eta 0:00:02\r", - "\u001b[K 1% |▌ | 30kB 1.6MB/s eta 0:00:02\r", - "\u001b[K 2% |▊ | 40kB 1.5MB/s eta 0:00:02\r", - "\u001b[K 2% |▉ | 51kB 1.4MB/s eta 0:00:02\r", + "\u001b[K 0% |▏ | 10kB 1.0MB/s eta 0:00:02\r", + "\u001b[K 1% |▍ | 20kB 1.3MB/s eta 0:00:02\r", + "\u001b[K 1% |▌ | 30kB 1.4MB/s eta 0:00:02\r", + "\u001b[K 2% |▊ | 40kB 1.4MB/s eta 0:00:02\r", + "\u001b[K 2% |▉ | 51kB 1.3MB/s eta 0:00:02\r", "\u001b[K 3% |█ | 61kB 1.6MB/s eta 0:00:02\r", - "\u001b[K 3% |█▏ | 71kB 1.6MB/s eta 0:00:02\r", - "\u001b[K 4% |█▍ | 81kB 1.5MB/s eta 0:00:02\r", - "\u001b[K 4% |█▋ | 92kB 1.7MB/s eta 0:00:02\r", + "\u001b[K 3% |█▏ | 71kB 1.5MB/s eta 0:00:02\r", + "\u001b[K 4% |█▍ | 81kB 1.4MB/s eta 0:00:02\r", + "\u001b[K 4% |█▋ | 92kB 1.6MB/s eta 0:00:02\r", "\u001b[K 5% |█▊ | 102kB 1.6MB/s eta 0:00:02\r", "\u001b[K 5% |██ | 112kB 1.8MB/s eta 0:00:01\r", "\u001b[K 6% |██ | 122kB 1.7MB/s eta 0:00:02\r", @@ -98,58 +107,58 @@ "\u001b[K 9% |███▏ | 184kB 1.9MB/s eta 0:00:01\r", "\u001b[K 10% |███▎ | 194kB 1.9MB/s eta 0:00:01\r", "\u001b[K 10% |███▌ | 204kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 11% |███▋ | 215kB 1.7MB/s eta 0:00:02\r", + "\u001b[K 11% |███▋ | 215kB 1.6MB/s eta 0:00:02\r", "\u001b[K 11% |███▉ | 225kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 12% |████ | 235kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 12% |████ | 235kB 1.8MB/s eta 0:00:01\r", "\u001b[K 13% |████▏ | 245kB 1.7MB/s eta 0:00:01\r", "\u001b[K 13% |████▍ | 256kB 1.9MB/s eta 0:00:01\r", "\u001b[K 14% |████▌ | 266kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 14% |████▊ | 276kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 14% |████▊ | 276kB 1.8MB/s eta 0:00:01\r", "\u001b[K 15% |████▉ | 286kB 1.9MB/s eta 0:00:01\r", "\u001b[K 15% |█████ | 296kB 1.6MB/s eta 0:00:01\r", "\u001b[K 16% |█████▎ | 307kB 1.9MB/s eta 0:00:01\r", "\u001b[K 16% |█████▍ | 317kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 17% |█████▋ | 327kB 1.6MB/s eta 0:00:01\r", - "\u001b[K 17% |█████▊ | 337kB 1.8MB/s eta 0:00:01\r", + "\u001b[K 17% |█████▋ | 327kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 17% |█████▊ | 337kB 2.0MB/s eta 0:00:01\r", "\u001b[K 18% |██████ | 348kB 1.9MB/s eta 0:00:01\r", "\u001b[K 19% |██████ | 358kB 1.9MB/s eta 0:00:01\r", "\u001b[K 19% |██████▎ | 368kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 20% |██████▌ | 378kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 20% |██████▌ | 378kB 1.7MB/s eta 0:00:01\r", "\u001b[K 20% |██████▋ | 389kB 1.9MB/s eta 0:00:01\r", "\u001b[K 21% |██████▉ | 399kB 1.9MB/s eta 0:00:01\r", "\u001b[K 21% |███████ | 409kB 1.6MB/s eta 0:00:01\r", "\u001b[K 22% |███████▏ | 419kB 1.9MB/s eta 0:00:01\r", "\u001b[K 22% |███████▎ | 430kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 23% |███████▌ | 440kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 23% |███████▌ | 440kB 1.9MB/s eta 0:00:01\r", "\u001b[K 23% |███████▋ | 450kB 1.9MB/s eta 0:00:01\r", "\u001b[K 24% |███████▉ | 460kB 1.7MB/s eta 0:00:01\r", "\u001b[K 25% |████████ | 471kB 1.9MB/s eta 0:00:01\r", "\u001b[K 25% |████████▏ | 481kB 1.9MB/s eta 0:00:01\r", "\u001b[K 26% |████████▍ | 491kB 1.7MB/s eta 0:00:01\r", "\u001b[K 26% |████████▌ | 501kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 27% |████████▊ | 512kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 27% |████████▉ | 522kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 27% |████████▊ | 512kB 1.8MB/s eta 0:00:01\r", + "\u001b[K 27% |████████▉ | 522kB 1.8MB/s eta 0:00:01\r", "\u001b[K 28% |█████████ | 532kB 1.9MB/s eta 0:00:01\r", "\u001b[K 28% |█████████▎ | 542kB 1.7MB/s eta 0:00:01\r", "\u001b[K 29% |█████████▍ | 552kB 1.9MB/s eta 0:00:01\r", "\u001b[K 29% |█████████▋ | 563kB 1.9MB/s eta 0:00:01\r", "\u001b[K 30% |█████████▊ | 573kB 1.6MB/s eta 0:00:01\r", - "\u001b[K 31% |██████████ | 583kB 1.8MB/s eta 0:00:01\r", + "\u001b[K 31% |██████████ | 583kB 1.9MB/s eta 0:00:01\r", "\u001b[K 31% |██████████ | 593kB 1.9MB/s eta 0:00:01\r", "\u001b[K 32% |██████████▎ | 604kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 32% |██████████▌ | 614kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 33% |██████████▋ | 624kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 32% |██████████▌ | 614kB 2.1MB/s eta 0:00:01\r", + "\u001b[K 33% |██████████▋ | 624kB 1.8MB/s eta 0:00:01\r", "\u001b[K 33% |██████████▉ | 634kB 1.9MB/s eta 0:00:01\r", "\u001b[K 34% |███████████ | 645kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 34% |███████████▏ | 655kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 34% |███████████▏ | 655kB 1.7MB/s eta 0:00:01\r", "\u001b[K 35% |███████████▎ | 665kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 35% |███████████▌ | 675kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 36% |███████████▊ | 686kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 35% |███████████▌ | 675kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 36% |███████████▊ | 686kB 1.9MB/s eta 0:00:01\r", "\u001b[K 37% |███████████▉ | 696kB 1.9MB/s eta 0:00:01\r", "\u001b[K 37% |████████████ | 706kB 1.7MB/s eta 0:00:01\r", "\u001b[K 38% |████████████▏ | 716kB 1.9MB/s eta 0:00:01\r", "\u001b[K 38% |████████████▍ | 727kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 39% |████████████▌ | 737kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 39% |████████████▌ | 737kB 1.6MB/s eta 0:00:01\r", "\u001b[K 39% |████████████▊ | 747kB 1.9MB/s eta 0:00:01\r", "\u001b[K 40% |█████████████ | 757kB 1.9MB/s eta 0:00:01\r", "\u001b[K 40% |█████████████ | 768kB 1.9MB/s eta 0:00:01\r", @@ -157,7 +166,7 @@ "\u001b[K 41% |█████████████▍ | 788kB 1.7MB/s eta 0:00:01\r", "\u001b[K 42% |█████████████▋ | 798kB 1.9MB/s eta 0:00:01\r", "\u001b[K 43% |█████████████▊ | 808kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 43% |██████████████ | 819kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 43% |██████████████ | 819kB 1.6MB/s eta 0:00:01\r", "\u001b[K 44% |██████████████ | 829kB 1.9MB/s eta 0:00:01\r", "\u001b[K 44% |██████████████▎ | 839kB 1.9MB/s eta 0:00:01\r", "\u001b[K 45% |██████████████▌ | 849kB 1.9MB/s eta 0:00:01\r", @@ -181,7 +190,7 @@ "\u001b[K 54% |█████████████████▋ | 1.0MB 1.6MB/s eta 0:00:01\r", "\u001b[K 55% |█████████████████▊ | 1.0MB 1.9MB/s eta 0:00:01\r", "\u001b[K 56% |██████████████████ | 1.1MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 56% |██████████████████▏ | 1.1MB 1.6MB/s eta 0:00:01\r", + "\u001b[K 56% |██████████████████▏ | 1.1MB 1.7MB/s eta 0:00:01\r", "\u001b[K 57% |██████████████████▎ | 1.1MB 1.9MB/s eta 0:00:01\r", "\u001b[K 57% |██████████████████▌ | 1.1MB 1.9MB/s eta 0:00:01\r", "\u001b[K 58% |██████████████████▋ | 1.1MB 1.9MB/s eta 0:00:01\r", @@ -189,104 +198,104 @@ "\u001b[K 59% |███████████████████ | 1.1MB 1.7MB/s eta 0:00:01\r", "\u001b[K 59% |███████████████████▏ | 1.1MB 1.9MB/s eta 0:00:01\r", "\u001b[K 60% |███████████████████▍ | 1.1MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 60% |███████████████████▌ | 1.1MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 61% |███████████████████▊ | 1.2MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 62% |███████████████████▉ | 1.2MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 60% |███████████████████▌ | 1.1MB 1.5MB/s eta 0:00:01\r", + "\u001b[K 61% |███████████████████▊ | 1.2MB 1.6MB/s eta 0:00:01\r", + "\u001b[K 62% |███████████████████▉ | 1.2MB 1.8MB/s eta 0:00:01\r", "\u001b[K 62% |████████████████████ | 1.2MB 1.8MB/s eta 0:00:01\r", "\u001b[K 63% |████████████████████▏ | 1.2MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 63% |████████████████████▍ | 1.2MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 63% |████████████████████▍ | 1.2MB 1.6MB/s eta 0:00:01\r", "\u001b[K 64% |████████████████████▌ | 1.2MB 1.9MB/s eta 0:00:01\r", "\u001b[K 64% |████████████████████▊ | 1.2MB 1.9MB/s eta 0:00:01\r", "\u001b[K 65% |█████████████████████ | 1.2MB 1.7MB/s eta 0:00:01\r", "\u001b[K 65% |█████████████████████ | 1.2MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 66% |█████████████████████▎ | 1.2MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 66% |█████████████████████▍ | 1.3MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 67% |█████████████████████▋ | 1.3MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 66% |█████████████████████▎ | 1.2MB 2.3MB/s eta 0:00:01\r", + "\u001b[K 66% |█████████████████████▍ | 1.3MB 2.3MB/s eta 0:00:01\r", + "\u001b[K 67% |█████████████████████▋ | 1.3MB 2.0MB/s eta 0:00:01\r", "\u001b[K 68% |█████████████████████▊ | 1.3MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 68% |██████████████████████ | 1.3MB 2.0MB/s eta 0:00:01\r", + "\u001b[K 68% |██████████████████████ | 1.3MB 1.9MB/s eta 0:00:01\r", "\u001b[K 69% |██████████████████████▏ | 1.3MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 69% |██████████████████████▎ | 1.3MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 70% |██████████████████████▌ | 1.3MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 69% |██████████████████████▎ | 1.3MB 1.6MB/s eta 0:00:01\r", + "\u001b[K 70% |██████████████████████▌ | 1.3MB 1.8MB/s eta 0:00:01\r", "\u001b[K 70% |██████████████████████▋ | 1.3MB 1.9MB/s eta 0:00:01\r", "\u001b[K 71% |██████████████████████▉ | 1.3MB 1.9MB/s eta 0:00:01\r", "\u001b[K 71% |███████████████████████ | 1.4MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 72% |███████████████████████▏ | 1.4MB 1.6MB/s eta 0:00:01\r", - "\u001b[K 72% |███████████████████████▍ | 1.4MB 1.8MB/s eta 0:00:01\r", + "\u001b[K 72% |███████████████████████▏ | 1.4MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 72% |███████████████████████▍ | 1.4MB 1.9MB/s eta 0:00:01\r", "\u001b[K 73% |███████████████████████▌ | 1.4MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 74% |███████████████████████▊ | 1.4MB 1.6MB/s eta 0:00:01\r", - "\u001b[K 74% |███████████████████████▉ | 1.4MB 1.8MB/s eta 0:00:01\r", + "\u001b[K 74% |███████████████████████▊ | 1.4MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 74% |███████████████████████▉ | 1.4MB 1.9MB/s eta 0:00:01\r", "\u001b[K 75% |████████████████████████ | 1.4MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 75% |████████████████████████▏ | 1.4MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 75% |████████████████████████▏ | 1.4MB 2.0MB/s eta 0:00:01\r", "\u001b[K 76% |████████████████████████▍ | 1.4MB 1.9MB/s eta 0:00:01\r", "\u001b[K 76% |████████████████████████▋ | 1.4MB 1.7MB/s eta 0:00:01\r", "\u001b[K 77% |████████████████████████▊ | 1.5MB 1.9MB/s eta 0:00:01\r", "\u001b[K 77% |█████████████████████████ | 1.5MB 1.9MB/s eta 0:00:01\r", "\u001b[K 78% |█████████████████████████ | 1.5MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 78% |█████████████████████████▎ | 1.5MB 2.0MB/s eta 0:00:01\r", + "\u001b[K 78% |█████████████████████████▎ | 1.5MB 1.9MB/s eta 0:00:01\r", "\u001b[K 79% |█████████████████████████▍ | 1.5MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 80% |█████████████████████████▋ | 1.5MB 1.8MB/s eta 0:00:01\r", + "\u001b[K 80% |█████████████████████████▋ | 1.5MB 1.9MB/s eta 0:00:01\r", "\u001b[K 80% |█████████████████████████▉ | 1.5MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 81% |██████████████████████████ | 1.5MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 81% |██████████████████████████▏ | 1.5MB 1.8MB/s eta 0:00:01\r", + "\u001b[K 81% |██████████████████████████ | 1.5MB 1.6MB/s eta 0:00:01\r", + "\u001b[K 81% |██████████████████████████▏ | 1.5MB 1.9MB/s eta 0:00:01\r", "\u001b[K 82% |██████████████████████████▎ | 1.5MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 82% |██████████████████████████▌ | 1.6MB 1.6MB/s eta 0:00:01\r", + "\u001b[K 82% |██████████████████████████▌ | 1.6MB 1.7MB/s eta 0:00:01\r", "\u001b[K 83% |██████████████████████████▋ | 1.6MB 1.9MB/s eta 0:00:01\r", "\u001b[K 83% |██████████████████████████▉ | 1.6MB 1.9MB/s eta 0:00:01\r", "\u001b[K 84% |███████████████████████████ | 1.6MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 84% |███████████████████████████▏ | 1.6MB 2.0MB/s eta 0:00:01\r", - "\u001b[K 85% |███████████████████████████▍ | 1.6MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 86% |███████████████████████████▌ | 1.6MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 86% |███████████████████████████▊ | 1.6MB 1.8MB/s eta 0:00:01\r", + "\u001b[K 84% |███████████████████████████▏ | 1.6MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 85% |███████████████████████████▍ | 1.6MB 1.6MB/s eta 0:00:01\r", + "\u001b[K 86% |███████████████████████████▌ | 1.6MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 86% |███████████████████████████▊ | 1.6MB 1.9MB/s eta 0:00:01\r", "\u001b[K 87% |███████████████████████████▉ | 1.6MB 1.7MB/s eta 0:00:01\r", "\u001b[K 87% |████████████████████████████ | 1.6MB 1.9MB/s eta 0:00:01\r", "\u001b[K 88% |████████████████████████████▏ | 1.7MB 1.9MB/s eta 0:00:01\r", "\u001b[K 88% |████████████████████████████▍ | 1.7MB 1.9MB/s eta 0:00:01\r", "\u001b[K 89% |████████████████████████████▋ | 1.7MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 89% |████████████████████████████▊ | 1.7MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 90% |█████████████████████████████ | 1.7MB 2.0MB/s eta 0:00:01\r", + "\u001b[K 89% |████████████████████████████▊ | 1.7MB 1.6MB/s eta 0:00:01\r", + "\u001b[K 90% |█████████████████████████████ | 1.7MB 1.9MB/s eta 0:00:01\r", "\u001b[K 90% |█████████████████████████████ | 1.7MB 2.0MB/s eta 0:00:01\r", - "\u001b[K 91% |█████████████████████████████▎ | 1.7MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 91% |█████████████████████████████▍ | 1.7MB 2.0MB/s eta 0:00:01\r", + "\u001b[K 91% |█████████████████████████████▎ | 1.7MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 91% |█████████████████████████████▍ | 1.7MB 1.9MB/s eta 0:00:01\r", "\u001b[K 92% |█████████████████████████████▋ | 1.7MB 1.9MB/s eta 0:00:01\r", "\u001b[K 93% |█████████████████████████████▉ | 1.8MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 93% |██████████████████████████████ | 1.8MB 2.0MB/s eta 0:00:01\r", - "\u001b[K 94% |██████████████████████████████▏ | 1.8MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 93% |██████████████████████████████ | 1.8MB 1.9MB/s eta 0:00:01\r", + "\u001b[K 94% |██████████████████████████████▏ | 1.8MB 1.6MB/s eta 0:00:01\r", "\u001b[K 94% |██████████████████████████████▎ | 1.8MB 1.9MB/s eta 0:00:01\r", "\u001b[K 95% |██████████████████████████████▌ | 1.8MB 1.9MB/s eta 0:00:01\r", "\u001b[K 95% |██████████████████████████████▋ | 1.8MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 96% |██████████████████████████████▉ | 1.8MB 1.8MB/s eta 0:00:01\r", + "\u001b[K 96% |██████████████████████████████▉ | 1.8MB 1.9MB/s eta 0:00:01\r", "\u001b[K 96% |███████████████████████████████ | 1.8MB 1.9MB/s eta 0:00:01\r", "\u001b[K 97% |███████████████████████████████▏| 1.8MB 1.9MB/s eta 0:00:01\r", "\u001b[K 97% |███████████████████████████████▍| 1.8MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 98% |███████████████████████████████▌| 1.9MB 1.7MB/s eta 0:00:01\r", + "\u001b[K 98% |███████████████████████████████▌| 1.9MB 1.6MB/s eta 0:00:01\r", "\u001b[K 99% |███████████████████████████████▊| 1.9MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 99% |███████████████████████████████▉| 1.9MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 100% |████████████████████████████████| 1.9MB 175kB/s \r\n", + "\u001b[K 99% |███████████████████████████████▉| 1.9MB 2.0MB/s eta 0:00:01\r", + "\u001b[K 100% |████████████████████████████████| 1.9MB 185kB/s \r\n", "\u001b[?25hRequirement already up-to-date: paramiko in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", "Requirement already up-to-date: jinja2 in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", "Requirement already up-to-date: PyYAML in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", "Collecting setuptools (from ansible)\r\n", " Downloading setuptools-28.5.0-py2.py3-none-any.whl (471kB)\r\n", "\u001b[?25l\r", - "\u001b[K 2% |▊ | 10kB 17.5MB/s eta 0:00:01\r", - "\u001b[K 4% |█▍ | 20kB 16.0MB/s eta 0:00:01\r", - "\u001b[K 6% |██ | 30kB 18.9MB/s eta 0:00:01\r", - "\u001b[K 8% |██▉ | 40kB 20.6MB/s eta 0:00:01\r", - "\u001b[K 10% |███▌ | 51kB 18.3MB/s eta 0:00:01\r", - "\u001b[K 13% |████▏ | 61kB 18.2MB/s eta 0:00:01\r", - "\u001b[K 15% |████▉ | 71kB 16.8MB/s eta 0:00:01\r", - "\u001b[K 17% |█████▋ | 81kB 6.1MB/s eta 0:00:01\r", - "\u001b[K 19% |██████▎ | 92kB 6.1MB/s eta 0:00:01\r", - "\u001b[K 21% |███████ | 102kB 4.9MB/s eta 0:00:01\r", - "\u001b[K 23% |███████▋ | 112kB 4.4MB/s eta 0:00:01\r", - "\u001b[K 26% |████████▍ | 122kB 3.6MB/s eta 0:00:01\r", - "\u001b[K 28% |█████████ | 133kB 2.8MB/s eta 0:00:01\r", - "\u001b[K 30% |█████████▊ | 143kB 2.7MB/s eta 0:00:01\r", - "\u001b[K 32% |██████████▍ | 153kB 2.3MB/s eta 0:00:01\r", - "\u001b[K 34% |███████████▏ | 163kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 36% |███████████▉ | 174kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 39% |████████████▌ | 184kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 41% |█████████████▏ | 194kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 2% |▊ | 10kB 23.8MB/s eta 0:00:01\r", + "\u001b[K 4% |█▍ | 20kB 3.5MB/s eta 0:00:01\r", + "\u001b[K 6% |██ | 30kB 4.7MB/s eta 0:00:01\r", + "\u001b[K 8% |██▉ | 40kB 1.2MB/s eta 0:00:01\r", + "\u001b[K 10% |███▌ | 51kB 1.5MB/s eta 0:00:01\r", + "\u001b[K 13% |████▏ | 61kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 15% |████▉ | 71kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 17% |█████▋ | 81kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 19% |██████▎ | 92kB 2.2MB/s eta 0:00:01\r", + "\u001b[K 21% |███████ | 102kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 23% |███████▋ | 112kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 26% |████████▍ | 122kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 28% |█████████ | 133kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 30% |█████████▊ | 143kB 2.9MB/s eta 0:00:01\r", + "\u001b[K 32% |██████████▍ | 153kB 2.4MB/s eta 0:00:01\r", + "\u001b[K 34% |███████████▏ | 163kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 36% |███████████▉ | 174kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 39% |████████████▌ | 184kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 41% |█████████████▏ | 194kB 1.9MB/s eta 0:00:01\r", "\u001b[K 43% |██████████████ | 204kB 1.9MB/s eta 0:00:01\r", "\u001b[K 45% |██████████████▋ | 215kB 1.7MB/s eta 0:00:01\r", "\u001b[K 47% |███████████████▎ | 225kB 1.9MB/s eta 0:00:01\r", @@ -299,7 +308,7 @@ "\u001b[K 62% |████████████████████▏ | 296kB 1.7MB/s eta 0:00:01\r", "\u001b[K 65% |████████████████████▉ | 307kB 1.9MB/s eta 0:00:01\r", "\u001b[K 67% |█████████████████████▌ | 317kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 69% |██████████████████████▎ | 327kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 69% |██████████████████████▎ | 327kB 1.7MB/s eta 0:00:01\r", "\u001b[K 71% |███████████████████████ | 337kB 1.9MB/s eta 0:00:01\r", "\u001b[K 73% |███████████████████████▋ | 348kB 1.9MB/s eta 0:00:01\r", "\u001b[K 75% |████████████████████████▎ | 358kB 1.9MB/s eta 0:00:01\r", @@ -307,43 +316,43 @@ "\u001b[K 80% |█████████████████████████▊ | 378kB 1.7MB/s eta 0:00:01\r", "\u001b[K 82% |██████████████████████████▍ | 389kB 1.9MB/s eta 0:00:01\r", "\u001b[K 84% |███████████████████████████ | 399kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 86% |███████████████████████████▉ | 409kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 86% |███████████████████████████▉ | 409kB 1.7MB/s eta 0:00:01\r", "\u001b[K 88% |████████████████████████████▌ | 419kB 1.9MB/s eta 0:00:01\r", "\u001b[K 91% |█████████████████████████████▏ | 430kB 1.9MB/s eta 0:00:01\r", "\u001b[K 93% |█████████████████████████████▉ | 440kB 1.9MB/s eta 0:00:01\r", "\u001b[K 95% |██████████████████████████████▋ | 450kB 1.9MB/s eta 0:00:01\r", "\u001b[K 97% |███████████████████████████████▎| 460kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 99% |████████████████████████████████| 471kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 100% |████████████████████████████████| 481kB 719kB/s \r\n", + "\u001b[K 99% |████████████████████████████████| 471kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 100% |████████████████████████████████| 481kB 679kB/s \r\n", "\u001b[?25hRequirement already up-to-date: pycrypto>=2.6 in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", "Requirement already up-to-date: pyasn1>=0.1.7 in /usr/local/lib/python2.7/dist-packages (from paramiko->ansible)\r\n", "Collecting cryptography>=1.1 (from paramiko->ansible)\r\n", " Downloading cryptography-1.5.2.tar.gz (400kB)\r\n", "\u001b[?25l\r", - "\u001b[K 2% |▉ | 10kB 22.2MB/s eta 0:00:01\r", - "\u001b[K 5% |█▋ | 20kB 3.1MB/s eta 0:00:01\r", - "\u001b[K 7% |██▌ | 30kB 4.3MB/s eta 0:00:01\r", - "\u001b[K 10% |███▎ | 40kB 2.7MB/s eta 0:00:01\r", - "\u001b[K 12% |████ | 51kB 2.1MB/s eta 0:00:01\r", - "\u001b[K 15% |█████ | 61kB 2.5MB/s eta 0:00:01\r", - "\u001b[K 17% |█████▊ | 71kB 2.2MB/s eta 0:00:01\r", - "\u001b[K 20% |██████▌ | 81kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 23% |███████▍ | 92kB 2.2MB/s eta 0:00:01\r", - "\u001b[K 25% |████████▏ | 102kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 28% |█████████ | 112kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 30% |█████████▉ | 122kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 33% |██████████▋ | 133kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 35% |███████████▌ | 143kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 38% |████████████▎ | 153kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 40% |█████████████ | 163kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 43% |██████████████ | 174kB 1.9MB/s eta 0:00:01\r", + "\u001b[K 2% |▉ | 10kB 12.0MB/s eta 0:00:01\r", + "\u001b[K 5% |█▋ | 20kB 10.9MB/s eta 0:00:01\r", + "\u001b[K 7% |██▌ | 30kB 13.0MB/s eta 0:00:01\r", + "\u001b[K 10% |███▎ | 40kB 12.5MB/s eta 0:00:01\r", + "\u001b[K 12% |████ | 51kB 12.7MB/s eta 0:00:01\r", + "\u001b[K 15% |█████ | 61kB 13.3MB/s eta 0:00:01\r", + "\u001b[K 17% |█████▊ | 71kB 12.9MB/s eta 0:00:01\r", + "\u001b[K 20% |██████▌ | 81kB 6.7MB/s eta 0:00:01\r", + "\u001b[K 23% |███████▍ | 92kB 7.1MB/s eta 0:00:01\r", + "\u001b[K 25% |████████▏ | 102kB 4.8MB/s eta 0:00:01\r", + "\u001b[K 28% |█████████ | 112kB 4.9MB/s eta 0:00:01\r", + "\u001b[K 30% |█████████▉ | 122kB 3.6MB/s eta 0:00:01\r", + "\u001b[K 33% |██████████▋ | 133kB 2.8MB/s eta 0:00:01\r", + "\u001b[K 35% |███████████▌ | 143kB 2.8MB/s eta 0:00:01\r", + "\u001b[K 38% |████████████▎ | 153kB 2.3MB/s eta 0:00:01\r", + "\u001b[K 40% |█████████████ | 163kB 2.0MB/s eta 0:00:01\r", + "\u001b[K 43% |██████████████ | 174kB 2.0MB/s eta 0:00:01\r", "\u001b[K 46% |██████████████▊ | 184kB 1.9MB/s eta 0:00:01\r", "\u001b[K 48% |███████████████▌ | 194kB 1.9MB/s eta 0:00:01\r", "\u001b[K 51% |████████████████▍ | 204kB 1.9MB/s eta 0:00:01\r", "\u001b[K 53% |█████████████████▏ | 215kB 1.7MB/s eta 0:00:01\r", "\u001b[K 56% |██████████████████ | 225kB 1.9MB/s eta 0:00:01\r", "\u001b[K 58% |██████████████████▉ | 235kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 61% |███████████████████▋ | 245kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 61% |███████████████████▋ | 245kB 1.6MB/s eta 0:00:01\r", "\u001b[K 63% |████████████████████▌ | 256kB 1.9MB/s eta 0:00:01\r", "\u001b[K 66% |█████████████████████▎ | 266kB 1.9MB/s eta 0:00:01\r", "\u001b[K 69% |██████████████████████ | 276kB 1.9MB/s eta 0:00:01\r", @@ -351,15 +360,15 @@ "\u001b[K 74% |███████████████████████▊ | 296kB 1.7MB/s eta 0:00:01\r", "\u001b[K 76% |████████████████████████▌ | 307kB 1.9MB/s eta 0:00:01\r", "\u001b[K 79% |█████████████████████████▍ | 317kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 81% |██████████████████████████▏ | 327kB 1.6MB/s eta 0:00:01\r", + "\u001b[K 81% |██████████████████████████▏ | 327kB 1.7MB/s eta 0:00:01\r", "\u001b[K 84% |███████████████████████████ | 337kB 1.9MB/s eta 0:00:01\r", "\u001b[K 86% |███████████████████████████▉ | 348kB 1.9MB/s eta 0:00:01\r", "\u001b[K 89% |████████████████████████████▋ | 358kB 1.9MB/s eta 0:00:01\r", "\u001b[K 92% |█████████████████████████████▍ | 368kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 94% |██████████████████████████████▎ | 378kB 1.7MB/s eta 0:00:01\r", + "\u001b[K 94% |██████████████████████████████▎ | 378kB 1.6MB/s eta 0:00:01\r", "\u001b[K 97% |███████████████████████████████ | 389kB 1.9MB/s eta 0:00:01\r", "\u001b[K 99% |████████████████████████████████| 399kB 2.1MB/s eta 0:00:01\r", - "\u001b[K 100% |████████████████████████████████| 409kB 1.0MB/s \r\n", + "\u001b[K 100% |████████████████████████████████| 409kB 995kB/s \r\n", "\u001b[?25hRequirement already up-to-date: MarkupSafe in /usr/local/lib/python2.7/dist-packages (from jinja2->ansible)\r\n", "Requirement already up-to-date: idna>=2.0 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", "Requirement already up-to-date: six>=1.4.1 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", @@ -378,7 +387,7 @@ "\u001b[?25h Found existing installation: cryptography 1.5\r\n", " Uninstalling cryptography-1.5:\r\n", " Successfully uninstalled cryptography-1.5\r\n", - " Running setup.py install for cryptography ... \u001b[?25l-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \bdone\r\n", + " Running setup.py install for cryptography ... \u001b[?25l-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \bdone\r\n", "\u001b[?25hSuccessfully installed ansible-2.1.2.0 cryptography-1.5.2 setuptools-28.5.0\r\n" ] } @@ -430,35 +439,19 @@ "text": [ "insgesamt 12K\r\n", "525129 drwxr-xr-x 3 root root 4,0K Sep 21 17:17 .\r\n", - "262145 drwxr-xr-x 115 root root 4,0K Okt 15 21:36 ..\r\n", + "262145 drwxr-xr-x 115 root root 4,0K Okt 16 09:47 ..\r\n", "525175 drwxr-xr-x 10 root root 4,0K Sep 29 15:11 roles\r\n" ] } ], "source": [ - "ls -lachi /etc/ansible/" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [] - } - ], - "source": [ + "ls -lachi /etc/ansible/\n", "sudo cp /vagrant/hosts /etc/ansible" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -490,7 +483,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -527,7 +520,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -540,18 +533,18 @@ "Your identification has been saved in /home/vagrant/.ssh/id_rsa.\r\n", "Your public key has been saved in /home/vagrant/.ssh/id_rsa.pub.\r\n", "The key fingerprint is:\r\n", - "SHA256:Ycn+Ezz9avfYnhbmGjVGAJdLszSMz1IG6jAv/V52EYk vagrant@ctl\r\n", + "SHA256:DXoe1DItKK98DdCEjxA/sbuWEfPV8BO6phx3eBRvTtE vagrant@ctl\r\n", "The key's randomart image is:\r\n", "+---[RSA 2048]----+\r\n", - "| o=o. |\r\n", - "| . ....Xo .|\r\n", - "| o=. BE=+ |\r\n", - "| o*o o =. .|\r\n", - "| .S++ o = |\r\n", - "| ...o .ooo|\r\n", - "| o. ++..|\r\n", - "| ..+.+=.|\r\n", - "| o.o+++|\r\n", + "| ..... . o .. |\r\n", + "| ...= . B + .E |\r\n", + "| .Ooo O B + |\r\n", + "| .X.+ X = |\r\n", + "| o * S + . |\r\n", + "| . * X + |\r\n", + "| * + o |\r\n", + "| . . |\r\n", + "| |\r\n", "+----[SHA256]-----+\r\n" ] } @@ -566,34 +559,9 @@ "source": [ "Automatisches verteilen mit ssh-cop-id\n", "\n", - "http://serverfault.com/questions/306541/automating-ssh-copy-id" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Den Rechner mit der IP 192.168.60.2 in der Datei `known_hosts` löschen." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "do_known_hosts: hostkeys_foreach failed: No such file or directory\r", - "\r\n" - ] - } - ], - "source": [ - "ssh-keygen -R 192.168.60.2" + "http://serverfault.com/questions/306541/automating-ssh-copy-id\n", + "\n", + "Achtung: Der Host-Key muss als erstes akzeptiert werden." ] }, { @@ -609,7 +577,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -630,7 +598,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -639,9 +607,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "|1|P8I6Mt2vBKHT66gtERqcBHD96kk=|bT9TxJc0dTgcr/HsnW03UHO3pzQ= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOUj8l+Ejj53rTy5+9bMcbINLRZ6UFxaK6fRE6uklH7YvPh08DepyspTONUWuwwYSwJuHBldP8Joafx5jNuW2sI=\r\n", - "|1|VcU7J3x6HDTTWMaDnZV8VC8udP4=|ZyfzS78SrSOktj/pMU7t4PNmYxQ= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU171qwSgbEtEal2fCozSU7wsNRzA2H/DuUaLku6xRazRkfQZnFHcDn5pFk/GhHLTCwDRXz7nnnbBFFJK3jr03AsOr6rtqJuojQEIh1Yz1wKI4Dvvawteb8UnveKcef7OGs6a2nphGC+ZYX8txu+gdSF9HNVxGbUyFtbNeKRpAPCRgAkHfh1stxwPK8BQiaPQbEHSWzPer1G38Qsq1QzbKXWrizU057i5pw38cdRQ8CaVYe9u+rUnNEOfGjpESh06lb1vdZDEmily7D0jWDW7+Tw7hbr3uw+wUiJaVEGrBbQQotIqcrWTz6AqrwXKdZpklJZkcPx5JGS3Ym13AUBDB\r\n", - "|1|yT+jo2acKu/kz3SadsT5S3GmMjw=|Z99P6GkKWwrjctj27r1aET2TYDE= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAc42trNYnv58q3PiJSJ+lLhkHY9NOX4kVrrJdC8fJLf\r\n" + "|1|7nLSZ+5ZbQ0DnckT1P5xBpTOdwI=|dp5f+PDFq7ZBMJxFh5ssRyXKglo= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU171qwSgbEtEal2fCozSU7wsNRzA2H/DuUaLku6xRazRkfQZnFHcDn5pFk/GhHLTCwDRXz7nnnbBFFJK3jr03AsOr6rtqJuojQEIh1Yz1wKI4Dvvawteb8UnveKcef7OGs6a2nphGC+ZYX8txu+gdSF9HNVxGbUyFtbNeKRpAPCRgAkHfh1stxwPK8BQiaPQbEHSWzPer1G38Qsq1QzbKXWrizU057i5pw38cdRQ8CaVYe9u+rUnNEOfGjpESh06lb1vdZDEmily7D0jWDW7+Tw7hbr3uw+wUiJaVEGrBbQQotIqcrWTz6AqrwXKdZpklJZkcPx5JGS3Ym13AUBDB\r\n", + "|1|wl6MhE8ZQYoTrO8iTBA7bD1bD88=|cpj96pgPj3L3JOQVFdox14diBCo= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOUj8l+Ejj53rTy5+9bMcbINLRZ6UFxaK6fRE6uklH7YvPh08DepyspTONUWuwwYSwJuHBldP8Joafx5jNuW2sI=\r\n", + "|1|ebyV+znGTlPi3HMGLVfL1cokRLY=|zInwZSPr+XNpNz3m6Wpv0p9wBgA= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAc42trNYnv58q3PiJSJ+lLhkHY9NOX4kVrrJdC8fJLf\r\n" ] } ], @@ -658,7 +626,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -670,73 +638,74 @@ "\r", "0% [Wird verarbeitet]\r", " \r", - "Holen:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [94,5 kB]\r\n", + "OK:1 http://ppa.launchpad.net/chronitis/jupyter/ubuntu xenial InRelease\r\n", "\r", - "0% [Warten auf Kopfzeilen] [1 InRelease 14,0 kB/94,5 kB 15%] [Warten auf Kopfze\r", + "0% [Warten auf Kopfzeilen] [Warten auf Kopfzeilen] [Warten auf Kopfzeilen] [Ver\r", " \r", "OK:2 http://de.archive.ubuntu.com/ubuntu xenial InRelease\r\n", "\r", - "0% [Warten auf Kopfzeilen] [1 InRelease 34,0 kB/94,5 kB 36%] [Warten auf Kopfze\r", " \r", - "OK:3 http://ppa.launchpad.net/chronitis/jupyter/ubuntu xenial InRelease\r\n", + "Holen:3 http://security.ubuntu.com/ubuntu xenial-security InRelease [94,5 kB]\r\n", "\r", - "0% [Warten auf Kopfzeilen] [1 InRelease 34,0 kB/94,5 kB 36%] [Warten auf Kopfze\r", - "0% [2 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [1 InRelease 39,7 kB/94,5 \r", + "0% [Warten auf Kopfzeilen] [3 InRelease 14,0 kB/94,5 kB 15%] [Warten auf Kopfze\r", + "0% [1 InRelease gpgv 18,1 kB] [Warten auf Kopfzeilen] [3 InRelease 14,0 kB/94,5\r", " \r", - "OK:4 http://de.archive.ubuntu.com/ubuntu xenial-updates InRelease\r\n", + "OK:4 http://ppa.launchpad.net/nginx/stable/ubuntu xenial InRelease\r\n", "\r", + "0% [1 InRelease gpgv 18,1 kB] [Warten auf Kopfzeilen] [3 InRelease 19,7 kB/94,5\r", " \r", - "OK:5 http://ppa.launchpad.net/nginx/stable/ubuntu xenial InRelease\r\n", + "OK:5 http://de.archive.ubuntu.com/ubuntu xenial-updates InRelease\r\n", "\r", - "0% [2 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [1 InRelease 45,4 kB/94,5 \r", + "0% [1 InRelease gpgv 18,1 kB] [3 InRelease 41,1 kB/94,5 kB 44%] [Warten auf Kop\r", " \r", - "Ign:6 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 InRelease\r\n", + "OK:6 http://ppa.launchpad.net/nijel/phpmyadmin/ubuntu xenial InRelease\r\n", "\r", - "0% [2 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [1 InRelease 46,8 kB/94,5 \r", + "0% [1 InRelease gpgv 18,1 kB] [Warten auf Kopfzeilen] [3 InRelease 41,1 kB/94,5\r", " \r", - "OK:7 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 Release\r\n", + "OK:7 http://de.archive.ubuntu.com/ubuntu xenial-backports InRelease\r\n", "\r", - "0% [2 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [1 InRelease 92,5 kB/94,5 \r", + "0% [1 InRelease gpgv 18,1 kB] [3 InRelease 93,9 kB/94,5 kB 99%] [Warten auf Kop\r", " \r", - "OK:8 http://ppa.launchpad.net/nijel/phpmyadmin/ubuntu xenial InRelease\r\n", + "Ign:8 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 InRelease\r\n", "\r", - "0% [2 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [1 InRelease 94,5 kB/94,5 \r", " \r", - "0% [2 InRelease gpgv 247 kB] [Warten auf Kopfzeilen]\r", - " \r", - "OK:9 http://de.archive.ubuntu.com/ubuntu xenial-backports InRelease\r\n", - "\r", - " \r", - "0% [2 InRelease gpgv 247 kB]\r", - " \r", - "0% [Wird verarbeitet]\r", - "0% [3 InRelease gpgv 18,1 kB]\r", + "0% [1 InRelease gpgv 18,1 kB] [3 InRelease 93,9 kB/94,5 kB 99%]\r", + " \r", + "0% [1 InRelease gpgv 18,1 kB] [Warten auf Kopfzeilen]\r", + " \r", + "OK:9 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 Release\r\n", + "\r", + " \r", + "0% [1 InRelease gpgv 18,1 kB]\r", " \r", "0% [Wird verarbeitet]\r", - "0% [4 InRelease gpgv 95,7 kB]\r", - " \r", + "0% [2 InRelease gpgv 247 kB]\r", + " \r", "OK:10 https://apt.dockerproject.org/repo ubuntu-xenial InRelease\r\n", "\r", - "0% [4 InRelease gpgv 95,7 kB]\r", - " \r", + "0% [2 InRelease gpgv 247 kB]\r", + " \r", "OK:11 https://deb.nodesource.com/node_4.x xenial InRelease\r\n", "\r", - "0% [4 InRelease gpgv 95,7 kB]\r", + "0% [2 InRelease gpgv 247 kB]\r", + " \r", + "0% [Wird verarbeitet]\r", + "0% [4 InRelease gpgv 17,5 kB]\r", " \r", "0% [Wird verarbeitet]\r", - "0% [5 InRelease gpgv 17,5 kB]\r", + "0% [5 InRelease gpgv 95,7 kB]\r", " \r", "0% [Wird verarbeitet]\r", - "0% [Release.gpg gpgv 3.462 B]\r", + "0% [6 InRelease gpgv 17,5 kB]\r", " \r", "0% [Wird verarbeitet]\r", - "0% [8 InRelease gpgv 17,5 kB]\r", + "0% [7 InRelease gpgv 92,2 kB]\r", " \r", "0% [Wird verarbeitet]\r", - "0% [1 InRelease gpgv 94,5 kB]\r", + "0% [3 InRelease gpgv 94,5 kB]\r", " \r", "0% [Wird verarbeitet]\r", - "0% [9 InRelease gpgv 92,2 kB]\r", + "0% [Release.gpg gpgv 3.462 B]\r", " \r", "0% [Wird verarbeitet]\r", "0% [10 InRelease gpgv 30,2 kB]\r", @@ -746,7 +715,7 @@ " \r", "100% [Wird verarbeitet]\r", " \r", - "Es wurden 94,5 kB in 1 s geholt (50,3 kB/s).\r\n", + "Es wurden 94,5 kB in 1 s geholt (53,0 kB/s).\r\n", "\r", "Paketlisten werden gelesen... 0%\r", "\r", @@ -786,19 +755,17 @@ "\r", "Paketlisten werden gelesen... 13%\r", "\r", - "Paketlisten werden gelesen... 19%\r", + "Paketlisten werden gelesen... 17%\r", "\r", - "Paketlisten werden gelesen... 30%\r", - "\r", - "Paketlisten werden gelesen... 39%\r", + "Paketlisten werden gelesen... 32%\r", "\r", "Paketlisten werden gelesen... 40%\r", "\r", "Paketlisten werden gelesen... 40%\r", "\r", - "Paketlisten werden gelesen... 51%\r", + "Paketlisten werden gelesen... 47%\r", "\r", - "Paketlisten werden gelesen... 63%\r", + "Paketlisten werden gelesen... 65%\r", "\r", "Paketlisten werden gelesen... 66%\r", "\r", @@ -808,8 +775,6 @@ "\r", "Paketlisten werden gelesen... 72%\r", "\r", - "Paketlisten werden gelesen... 80%\r", - "\r", "Paketlisten werden gelesen... 87%\r", "\r", "Paketlisten werden gelesen... 87%\r", @@ -834,6 +799,8 @@ "\r", "Paketlisten werden gelesen... 90%\r", "\r", + "Paketlisten werden gelesen... 90%\r", + "\r", "Paketlisten werden gelesen... 92%\r", "\r", "Paketlisten werden gelesen... 92%\r", @@ -846,8 +813,6 @@ "\r", "Paketlisten werden gelesen... 94%\r", "\r", - "Paketlisten werden gelesen... 95%\r", - "\r", "Paketlisten werden gelesen... 96%\r", "\r", "Paketlisten werden gelesen... 96%\r", @@ -998,9 +963,9 @@ "\r", "Abhängigkeitsbaum wird aufgebaut.... 50%\r", "\r", - "Abhängigkeitsbaum wird aufgebaut.... 88%\r", + "Abhängigkeitsbaum wird aufgebaut.... 100%\r", "\r", - "Abhängigkeitsbaum wird aufgebaut. \r", + "Abhängigkeitsbaum wird aufgebaut. \r", "\r\n", "\r", "Statusinformationen werden eingelesen.... 0%\r", @@ -1023,7 +988,7 @@ " \r", "100% [Wird verarbeitet]\r", " \r", - "Es wurden 10,5 kB in 0 s geholt (112 kB/s).\r\n", + "Es wurden 10,5 kB in 0 s geholt (127 kB/s).\r\n", "debconf: kann Oberfläche nicht initialisieren: Dialog\r\n", "debconf: (Die Dialog-Oberfläche funktioniert nicht auf einem Dumb-Terminal, einem Emacs-Shellbuffer oder ohne ein steuerndes Terminal.)\r\n", "debconf: greife zurück auf die Oberfläche: Readline\r\n", @@ -1064,7 +1029,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -1094,14 +1059,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Da wir keine passphrase in jupyter eingeben können hier ein Workaround. Mit dem Kommando expect.\n", + "Da wir in Jupyter bzw. in einem Skript keine passphrase eingeben können, hier ein Workaround mit dem Kommando expect.\n", "\n", "https://wiki.ubuntuusers.de/Tcl/#Installation-ueber-Download" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -1126,7 +1091,7 @@ "\r", "Abhängigkeitsbaum wird aufgebaut.... 50%\r", "\r", - "Abhängigkeitsbaum wird aufgebaut.... 95%\r", + "Abhängigkeitsbaum wird aufgebaut.... 86%\r", "\r", "Abhängigkeitsbaum wird aufgebaut. \r", "\r\n", @@ -1149,17 +1114,17 @@ " \r", "Holen:1 http://de.archive.ubuntu.com/ubuntu xenial/universe amd64 tcl-expect amd64 5.45-7 [104 kB]\r\n", "\r", - "0% [1 tcl-expect 1.164 B/104 kB 1%]\r", + "1% [1 tcl-expect 4.044 B/104 kB 4%]\r", " \r", - "44% [Warten auf Kopfzeilen]\r", - " \r", + "44% [Wird verarbeitet]\r", + " \r", "Holen:2 http://de.archive.ubuntu.com/ubuntu xenial/universe amd64 expect amd64 5.45-7 [137 kB]\r\n", "\r", - "45% [2 expect 2.604 B/137 kB 2%]\r", - " \r", + "44% [2 expect 0 B/137 kB 0%]\r", + " \r", "100% [Wird verarbeitet]\r", " \r", - "Es wurden 241 kB in 0 s geholt (740 kB/s).\r\n", + "Es wurden 241 kB in 0 s geholt (739 kB/s).\r\n", "debconf: kann Oberfläche nicht initialisieren: Dialog\r\n", "debconf: (Die Dialog-Oberfläche funktioniert nicht auf einem Dumb-Terminal, einem Emacs-Shellbuffer oder ohne ein steuerndes Terminal.)\r\n", "debconf: greife zurück auf die Oberfläche: Readline\r\n", @@ -1205,7 +1170,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -1223,7 +1188,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -1244,9 +1209,16 @@ "cat ssh-add-passphrase.sh" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Setzen der ssh-agent Umgebung für die jetzige Bashsitzung. Dies muss für jede neue Bashsitzung erneut durchgeführt werden." + ] + }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -1270,7 +1242,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -1279,23 +1251,23 @@ "name": "stdout", "output_type": "stream", "text": [ - "SSH_AGENT_PID=6657\r\n", + "SSH_AGENT_PID=6583\r\n", "XDG_SESSION_ID=c1\r\n", "SHELL=/bin/bash\r\n", "USER=vagrant\r\n", "LS_COLORS=\r\n", - "SSH_AUTH_SOCK=/tmp/ssh-vHzlQtH7bjYk/agent.6656\r\n", - "JPY_PARENT_PID=1353\r\n", + "SSH_AUTH_SOCK=/tmp/ssh-8ALBajNVCqA4/agent.6582\r\n", + "JPY_PARENT_PID=1365\r\n", "PAGER=cat\r\n", - "PATH=/home/vagrant/.gem/ruby/2.3.0/bin:/home/vagrant/bin:/home/vagrant/.local/bin:/usr/local/lib/npm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin\r\n", "MAIL=/var/mail/vagrant\r\n", + "PATH=/home/vagrant/.gem/ruby/2.3.0/bin:/home/vagrant/bin:/home/vagrant/.local/bin:/usr/local/lib/npm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin\r\n", "NPM_CONFIG_PREFIX=/usr/local/lib/npm\r\n", "PWD=/home/vagrant/projects\r\n", "LANG=de_DE.UTF-8\r\n", "NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript:/usr/local/lib/npm/lib/node_modules\r\n", "PS1=[PEXP\\[\\]ECT_PROMPT>\r\n", - "SHLVL=2\r\n", "HOME=/home/vagrant\r\n", + "SHLVL=2\r\n", "LOGNAME=vagrant\r\n", "LESSOPEN=| /usr/bin/lesspipe %s\r\n", "XDG_RUNTIME_DIR=/run/user/1000\r\n", @@ -1310,7 +1282,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -1319,7 +1291,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "2048 SHA256:Ycn+Ezz9avfYnhbmGjVGAJdLszSMz1IG6jAv/V52EYk /home/vagrant/.ssh/id_rsa (RSA)\r\n" + "2048 SHA256:DXoe1DItKK98DdCEjxA/sbuWEfPV8BO6phx3eBRvTtE /home/vagrant/.ssh/id_rsa (RSA)\r\n" ] } ], @@ -1329,7 +1301,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -1353,12 +1325,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For Schleife in der Bash. Achtung erst die Maschienen einfügen und dann den Schlüssel verteilen." + "For Schleife in der Bash. Achtung erst den Maschienen-Fingerprint akzeptieren und dann den Schlüssel verteilen.\n", + "\n", + "Mehr zu Bash-Skripte unter:\n", + "\n", + "* https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_f%C3%BCr_Anf%C3%A4nger/" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -1435,7 +1411,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 21, "metadata": { "collapsed": false }, @@ -1448,7 +1424,7 @@ " \"changed\": false, \r\n", " \"ping\": \"pong\"\r\n", "}\r\n", - "192.168.60.21 | SUCCESS => {\r\n", + "192.168.60.12 | SUCCESS => {\r\n", " \"changed\": false, \r\n", " \"ping\": \"pong\"\r\n", "}\r\n", @@ -1456,11 +1432,11 @@ " \"changed\": false, \r\n", " \"ping\": \"pong\"\r\n", "}\r\n", - "192.168.60.12 | SUCCESS => {\r\n", + "192.168.60.11 | SUCCESS => {\r\n", " \"changed\": false, \r\n", " \"ping\": \"pong\"\r\n", "}\r\n", - "192.168.60.11 | SUCCESS => {\r\n", + "192.168.60.21 | SUCCESS => {\r\n", " \"changed\": false, \r\n", " \"ping\": \"pong\"\r\n", "}\r\n", @@ -1481,7 +1457,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -1498,50 +1474,45 @@ " 6 ansible --version\r\n", " 7 echo $?\r\n", " 8 ls -lachi /etc/ansible/\r\n", - " 9 echo $?\r\n", - " 10 sudo cp /vagrant/hosts /etc/ansible\r\n", - " 11 echo $?\r\n", - " 12 cat /etc/ansible/hosts\r\n", - " 13 echo $?\r\n", - " 14 ansible local -m ping\r\n", - " 15 echo $?\r\n", - " 16 if [ -f ~/.ssh/id_rsa ]; then rm ~/.ssh/id_rsa*; fi && ssh-keygen -t rsa -f ~/.ssh/id_rsa -N geheim\r\n", - " 17 echo $?\r\n", - " 18 ssh-keygen -R 192.168.60.2\r\n", - " 19 echo $?\r\n", - " 20 ssh-keygen -R 192.168.60.2\r\n", - " 21 echo $?\r\n", - " 22 ssh-keyscan -H 192.168.60.2 >> ~/.ssh/known_hosts\r\n", + " 9 sudo cp /vagrant/hosts /etc/ansible\r\n", + " 10 echo $?\r\n", + " 11 cat /etc/ansible/hosts\r\n", + " 12 echo $?\r\n", + " 13 ansible local -m ping\r\n", + " 14 echo $?\r\n", + " 15 if [ -f ~/.ssh/id_rsa ]; then rm ~/.ssh/id_rsa*; fi && ssh-keygen -t rsa -f ~/.ssh/id_rsa -N geheim\r\n", + " 16 echo $?\r\n", + " 17 ssh-keyscan -H 192.168.60.2 >> ~/.ssh/known_hosts\r\n", + " 18 echo $?\r\n", + " 19 cat ~/.ssh/known_hosts\r\n", + " 20 echo $?\r\n", + " 21 sudo apt-get update\r\n", + " 22 sudo apt-get install -y sshpass\r\n", " 23 echo $?\r\n", - " 24 cat ~/.ssh/known_hosts\r\n", - " 25 echo $?\r\n", - " 26 sudo apt-get update\r\n", - " 27 sudo apt-get install -y sshpass\r\n", + " 24 echo 'vagrant' > passwort\r\n", + " 25 sshpass -f passwort ssh-copy-id vagrant@192.168.60.2\r\n", + " 26 echo $?\r\n", + " 27 sudo apt-get install -y expect\r\n", " 28 echo $?\r\n", - " 29 echo 'vagrant' > passwort\r\n", - " 30 sshpass -f passwort ssh-copy-id vagrant@192.168.60.2\r\n", + " 29 cp /vagrant/ssh-add-passphrase.sh ./\r\n", + " 30 chmod u+x ssh-add-passphrase.sh\r\n", " 31 echo $?\r\n", - " 32 sudo apt-get install -y expect\r\n", + " 32 cat ssh-add-passphrase.sh\r\n", " 33 echo $?\r\n", - " 34 cp /vagrant/ssh-add-passphrase.sh ./\r\n", - " 35 chmod u+x ssh-add-passphrase.sh\r\n", + " 34 eval `ssh-agent -s` > /dev/null\r\n", + " 35 ./ssh-add-passphrase.sh\r\n", " 36 echo $?\r\n", - " 37 cat ssh-add-passphrase.sh\r\n", + " 37 env\r\n", " 38 echo $?\r\n", - " 39 eval `ssh-agent -s` > /dev/null\r\n", - " 40 ./ssh-add-passphrase.sh\r\n", - " 41 echo $?\r\n", - " 42 env\r\n", - " 43 echo $?\r\n", - " 44 ssh-add -l\r\n", - " 45 echo $?\r\n", - " 46 ansible lb -m ping\r\n", - " 47 echo $?\r\n", - " 48 for i in 11 12 13 21 22; do ssh-keyscan -H 192.168.60.${i} >> ~/.ssh/known_hosts; sshpass -f passwort ssh-copy-id vagrant@192.168.60.${i}; done\r\n", - " 49 echo $?\r\n", - " 50 ansible all -m ping\r\n", - " 51 echo $?\r\n", - " 52 history\r\n" + " 39 ssh-add -l\r\n", + " 40 echo $?\r\n", + " 41 ansible lb -m ping\r\n", + " 42 echo $?\r\n", + " 43 for i in 11 12 13 21 22; do ssh-keyscan -H 192.168.60.${i} >> ~/.ssh/known_hosts; sshpass -f passwort ssh-copy-id vagrant@192.168.60.${i}; done\r\n", + " 44 echo $?\r\n", + " 45 ansible all -m ping\r\n", + " 46 echo $?\r\n", + " 47 history\r\n" ] } ], @@ -1555,8 +1526,19 @@ "collapsed": true }, "source": [ - "Der Ansible Test funktioniert. Somit können wir wieter machen mit den Playbooks." + "__Aufgabe__: Da wir öfters ein ```bash vagrant destroy``` ausführen. Wäre es sinnvoll ein Skript für das automatische Einrichten von Ansible und ssh zu haben. Erstellen Sie dieses Skript.\n", + "\n", + "Der Ansible Test funktioniert. Somit können wir mit den Playbooks weiter machen." ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/01_Playbooks.ipynb b/01_Playbooks.ipynb index 605475c..47fb7e4 100644 --- a/01_Playbooks.ipynb +++ b/01_Playbooks.ipynb @@ -15,6 +15,14 @@ "* Einrückungen sind wichtig. Alle Mitglieder einer Liste sollten gleich sein Eingerückt sein.\n", "* Jede Spielanwiesung kann Schlüssel-Wert-Paare enthalten, getrennt durch \":\", um Hosts, Variablen, Rollen, Aufgaben und so weiter.\n", "\n", + "## Weblinks\n", + "\n", + "* https://de.wikipedia.org/wiki/YAML\n", + "* http://www.yaml.org/\n", + "* http://docs.ansible.com/ansible/YAMLSyntax.html\n", + "\n", + "## Playbooks\n", + "\n", "simple_playbook.yml\n", "\n", "```yaml\n", @@ -138,29 +146,29 @@ "PLAY [all] *********************************************************************\r\n", "\r\n", "TASK [setup] *******************************************************************\r\n", + "ok: [192.168.60.21]\r\n", "ok: [192.168.60.11]\r\n", - "ok: [192.168.60.22]\r\n", "ok: [192.168.60.2]\r\n", "ok: [192.168.60.12]\r\n", - "ok: [192.168.60.21]\r\n", - "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.22]\r\n", "ok: [localhost]\r\n", + "ok: [192.168.60.13]\r\n", "\r\n", "TASK [group] *******************************************************************\r\n", - "changed: [192.168.60.22]\r\n", - "changed: [192.168.60.11]\r\n", "changed: [192.168.60.21]\r\n", - "changed: [192.168.60.12]\r\n", "changed: [192.168.60.2]\r\n", - "changed: [192.168.60.13]\r\n", + "changed: [192.168.60.12]\r\n", + "changed: [192.168.60.22]\r\n", + "changed: [192.168.60.11]\r\n", "changed: [localhost]\r\n", + "changed: [192.168.60.13]\r\n", "\r\n", "TASK [create devops user with admin previleges] ********************************\r\n", - "changed: [192.168.60.21]\r\n", - "changed: [192.168.60.12]\r\n", - "changed: [192.168.60.2]\r\n", "changed: [192.168.60.22]\r\n", "changed: [192.168.60.11]\r\n", + "changed: [192.168.60.12]\r\n", + "changed: [192.168.60.2]\r\n", + "changed: [192.168.60.21]\r\n", "changed: [192.168.60.13]\r\n", "changed: [localhost]\r\n", "\r\n", @@ -168,32 +176,32 @@ "ok: [192.168.60.22]\r\n", "ok: [192.168.60.2]\r\n", "ok: [192.168.60.11]\r\n", - "ok: [192.168.60.21]\r\n", "ok: [192.168.60.12]\r\n", - "ok: [localhost]\r\n", + "ok: [192.168.60.21]\r\n", "ok: [192.168.60.13]\r\n", + "ok: [localhost]\r\n", "\r\n", "PLAY [www] *********************************************************************\r\n", "\r\n", "TASK [setup] *******************************************************************\r\n", - "ok: [192.168.60.12]\r\n", - "ok: [192.168.60.13]\r\n", "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.12]\r\n", "\r\n", "TASK [add official nginx repository] *******************************************\r\n", "ok: [192.168.60.13]\r\n", - "ok: [192.168.60.11]\r\n", "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.11]\r\n", "\r\n", "TASK [install nginx web server and ensure its at the latest version] ***********\r\n", - "changed: [192.168.60.13]\r\n", - "changed: [192.168.60.12]\r\n", "changed: [192.168.60.11]\r\n", + "changed: [192.168.60.12]\r\n", + "changed: [192.168.60.13]\r\n", "\r\n", "TASK [service] *****************************************************************\r\n", - "ok: [192.168.60.12]\r\n", - "ok: [192.168.60.13]\r\n", "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.12]\r\n", "\r\n", "PLAY RECAP *********************************************************************\r\n", "192.168.60.11 : ok=8 changed=3 unreachable=0 failed=0 \r\n", @@ -235,7 +243,7 @@ "Die Pattern können eine der folgenden Liste, oder ihre Kobinationen, sein:\n", "\n", " Pattern Beispiele\n", - " Gruppenname Name_des_Rechner (ansible inventory)\n", + " Gruppenname Name_der_Rechner (ansible inventory)\n", " Spiel alle all oder *\n", " Range Name_des_Rechner[0:100]\n", " Hostnamen globs *.example.com, host01.example.com\n", @@ -283,62 +291,62 @@ "PLAY [all] *********************************************************************\r\n", "\r\n", "TASK [setup] *******************************************************************\r\n", - "ok: [192.168.60.11]\r\n", - "ok: [192.168.60.22]\r\n", "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.11]\r\n", "ok: [192.168.60.21]\r\n", "ok: [192.168.60.2]\r\n", + "ok: [192.168.60.22]\r\n", "ok: [192.168.60.13]\r\n", "ok: [localhost]\r\n", "\r\n", "TASK [group] *******************************************************************\r\n", - "ok: [192.168.60.22]\r\n", - "ok: [192.168.60.11]\r\n", "ok: [192.168.60.2]\r\n", - "ok: [192.168.60.21]\r\n", "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.21]\r\n", + "ok: [192.168.60.22]\r\n", + "ok: [192.168.60.11]\r\n", "ok: [localhost]\r\n", "ok: [192.168.60.13]\r\n", "\r\n", "TASK [create devops user with admin previleges] ********************************\r\n", - "ok: [192.168.60.22]\r\n", - "ok: [192.168.60.2]\r\n", "ok: [192.168.60.21]\r\n", - "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.2]\r\n", "ok: [192.168.60.12]\r\n", - "ok: [localhost]\r\n", + "ok: [192.168.60.22]\r\n", + "ok: [192.168.60.11]\r\n", "ok: [192.168.60.13]\r\n", + "ok: [localhost]\r\n", "\r\n", "TASK [install htop package] ****************************************************\r\n", "ok: [192.168.60.21]\r\n", - "ok: [192.168.60.22]\r\n", - "ok: [192.168.60.12]\r\n", - "ok: [192.168.60.11]\r\n", "ok: [192.168.60.2]\r\n", - "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.22]\r\n", "ok: [localhost]\r\n", + "ok: [192.168.60.13]\r\n", "\r\n", "PLAY [www] *********************************************************************\r\n", "\r\n", "TASK [setup] *******************************************************************\r\n", "ok: [192.168.60.13]\r\n", - "ok: [192.168.60.12]\r\n", "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.12]\r\n", "\r\n", "TASK [add official nginx repository] *******************************************\r\n", - "ok: [192.168.60.13]\r\n", "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.13]\r\n", "ok: [192.168.60.12]\r\n", "\r\n", "TASK [install nginx web server and ensure its at the latest version] ***********\r\n", - "ok: [192.168.60.13]\r\n", - "ok: [192.168.60.11]\r\n", "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.13]\r\n", "\r\n", "TASK [service] *****************************************************************\r\n", - "ok: [192.168.60.13]\r\n", "ok: [192.168.60.11]\r\n", "ok: [192.168.60.12]\r\n", + "ok: [192.168.60.13]\r\n", "\r\n", "PLAY RECAP *********************************************************************\r\n", "192.168.60.11 : ok=8 changed=0 unreachable=0 failed=0 \r\n", diff --git a/02_Rollen.ipynb b/02_Rollen.ipynb index 2ffcb47..67273ad 100644 --- a/02_Rollen.ipynb +++ b/02_Rollen.ipynb @@ -10,7 +10,15 @@ "\n", "Darüber hinaus kann man eine Teil z.B. Datenbanken nicht in anderen Projekten wieter verwenden.\n", "\n", - "Hier kommen Rollen ins Spiel." + "Hier kommen Rollen ins Spiel. Zum Beispiel für:\n", + "\n", + "* nginx\n", + "* mysql\n", + "* mongodb\n", + "* tomcat\n", + "* ...\n", + "\n", + "Hier zunächst die Rolle für den Webserver nginx." ] }, { @@ -60,27 +68,6 @@ "metadata": { "collapsed": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "01_Playbooks.ipynb Kap2_Rollen ssh-add-passphrase.sh\r\n", - "02_Rollen.ipynb passwort\r\n", - "Erste Schritte mit ansible.ipynb simple_playbook.yml\r\n" - ] - } - ], - "source": [ - "ls" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, "outputs": [ { "name": "stdout", @@ -94,7 +81,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -113,7 +100,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -124,27 +111,6 @@ "text": [ ".\r\n", "├── customhosts\r\n", - "├── Kap2_Rollen\r\n", - "│   ├── customhosts\r\n", - "│   ├── roles\r\n", - "│   │   ├── base\r\n", - "│   │   │   └── tasks\r\n", - "│   │   │   └── main.yml\r\n", - "│   │   └── nginx\r\n", - "│   │   ├── files\r\n", - "│   │   │   ├── default.conf\r\n", - "│   │   │   └── index.html\r\n", - "│   │   ├── handlers\r\n", - "│   │   │   └── main.yml\r\n", - "│   │   ├── meta\r\n", - "│   │   │   └── main.yml\r\n", - "│   │   └── tasks\r\n", - "│   │   ├── configure.yml\r\n", - "│   │   ├── install.yml\r\n", - "│   │   ├── main.yml\r\n", - "│   │   └── service.yml\r\n", - "│   ├── site.yml\r\n", - "│   └── www.yml\r\n", "├── roles\r\n", "│   ├── base\r\n", "│   │   └── tasks\r\n", @@ -165,7 +131,7 @@ "├── site.yml\r\n", "└── www.yml\r\n", "\r\n", - "17 directories, 24 files\r\n" + "8 directories, 12 files\r\n" ] } ], @@ -173,9 +139,27 @@ "tree" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Rollen werden u.a. unter dem Ordner roles/ abgelegt. Können aber auch über mehrere Ordner verteilt abgelegt werden wie z.B. /deploy/ansible/roles und /deploy/ansible/community/roles.\n", + "Dies kann über eine Datei ansible.cfg mit dem Eitrag\n", + " \n", + " roles_path = /deploy/ansible/roles:/deploy/ansible/community/roles\n", + " \n", + "geschehen.\n", + "\n", + "Mehr über Rollen hier: http://docs.ansible.com/ansible/playbooks_roles.html\n", + "\n", + "Jede Rolle bekommt einen Ornder mit ihrem Rolen-Namen. Diese Ornder können weitere Unterordner haben. Der wichtigste ist der tasks/ Ordner. Es gibt aber noch weitere wichtige Ordner wie handlers/, templates/, files/, meta/, vars/ uvw. Normalerweise beinhalten alle diese Ornder eine Datei main.yml.\n", + "\n", + "Wie können Rollen aufgerufen werden? Schauen wir uns das Playbook site.yml an:" + ] + }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -194,9 +178,18 @@ "cat site.yml" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In Playbooks können Teile mit include eingebunden werde. Diese werden im aktuellen Verzeichnis gesucht, wenn kein absoluter/relativer Pfad angegeben wurde.\n", + "\n", + "Hier der Inhalt von www.yml" + ] + }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -226,9 +219,22 @@ "cat www.yml" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Diese Playbook wird nur für die Gruppe www ausgeführt.\n", + "\n", + "Der Abschnitt pre_tasks bzw. post_tasks wird vor bzw. nachdem Task Abschnitt ausgeführt.\n", + "\n", + "Unser Task Block wird hier durch eine Rolle nginx abgebildet.\n", + "\n", + "Schauen wir uns zunächst den Meta (Beschreibung) zu dieser Rolle an." + ] + }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -248,9 +254,16 @@ "cat roles/nginx/meta/main.yml" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Rolle nginx ist Abhängig von der Rolle base. Daher hier die Rolle base." + ] + }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -274,9 +287,18 @@ "cat roles/base/tasks/main.yml" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hier werden unser User, Gruppen und Grundlegende Pakete installiert.\n", + "\n", + "Schauen wir uns die Rolle nginx im Ordner tasks/ näher an." + ] + }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -312,12 +334,26 @@ } ], "source": [ - "cat roles/nginx/tasks/main.yml roles/nginx/tasks/install.yml roles/nginx/tasks/configure.yml roles/nginx/tasks/service.yml" + "cat roles/nginx/tasks/main.yml \\\n", + " roles/nginx/tasks/install.yml \\\n", + " roles/nginx/tasks/configure.yml \\\n", + " roles/nginx/tasks/service.yml" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die install.yml sorgt fügt das nginx repro ein und installiert die neuster Version von nginx. Auch wenn diese schon installiert wurde.\n", + "\n", + "In der configure.yml wird die Datei default.conf aus dem Ordner files/ der Rolle nginx auf dem entsprechenden Pfad kopiert.\n", + "\n", + "ACHTUNG: Das Modul copy schaut im Ordner files/ nach ob die Datei default.conf existiert. Somit sind Rollen unabhängig von ihrer Installation." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -344,7 +380,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -366,9 +402,16 @@ "cat roles/nginx/files/index.html" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In der Datei configure.yml wird der Handler \"restart nginx serice\" aufgerufen. Dieser wird über den Ordner handlers/ in der main.yml gesucht und gefunden." + ] + }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -388,9 +431,16 @@ "cat roles/nginx/handlers/main.yml" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Eine lokales Inventory wird hier auch definiert." + ] + }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -420,9 +470,16 @@ "cat customhosts" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hier der Auffruf:" + ] + }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "metadata": { "collapsed": false, "scrolled": true @@ -440,14 +497,14 @@ "\r\n", "TASK [setup] *******************************************************************\r\n", "ok: [192.168.60.12]\r\n", - "ok: [192.168.60.13]\r\n", "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.13]\r\n", "\r\n", "TASK [debug] *******************************************************************\r\n", - "ok: [192.168.60.12] => {\r\n", + "ok: [192.168.60.11] => {\r\n", " \"msg\": \"I\\\":\\\" Beginning to configure web server..\"\r\n", "}\r\n", - "ok: [192.168.60.11] => {\r\n", + "ok: [192.168.60.12] => {\r\n", " \"msg\": \"I\\\":\\\" Beginning to configure web server..\"\r\n", "}\r\n", "ok: [192.168.60.13] => {\r\n", @@ -455,19 +512,19 @@ "}\r\n", "\r\n", "TASK [base : creating devops group] ********************************************\r\n", - "ok: [192.168.60.12]\r\n", - "ok: [192.168.60.11]\r\n", - "ok: [192.168.60.13]\r\n", + "changed: [192.168.60.11]\r\n", + "changed: [192.168.60.12]\r\n", + "changed: [192.168.60.13]\r\n", "\r\n", "TASK [base : create devops user with admin previleges] *************************\r\n", - "ok: [192.168.60.11]\r\n", - "ok: [192.168.60.12]\r\n", - "ok: [192.168.60.13]\r\n", + "changed: [192.168.60.13]\r\n", + "changed: [192.168.60.12]\r\n", + "changed: [192.168.60.11]\r\n", "\r\n", "TASK [base : install htop package] *********************************************\r\n", - "ok: [192.168.60.12]\r\n", - "ok: [192.168.60.13]\r\n", "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.12]\r\n", "\r\n", "TASK [nginx : add official nginx repository] ***********************************\r\n", "changed: [192.168.60.12]\r\n", @@ -475,13 +532,13 @@ "changed: [192.168.60.11]\r\n", "\r\n", "TASK [nginx : install nginx web server and ensure its at the latest version] ***\r\n", - "ok: [192.168.60.12]\r\n", - "ok: [192.168.60.11]\r\n", - "ok: [192.168.60.13]\r\n", + "changed: [192.168.60.12]\r\n", + "changed: [192.168.60.13]\r\n", + "changed: [192.168.60.11]\r\n", "\r\n", "TASK [nginx : create default site configurations] ******************************\r\n", - "changed: [192.168.60.13]\r\n", "changed: [192.168.60.11]\r\n", + "changed: [192.168.60.13]\r\n", "changed: [192.168.60.12]\r\n", "\r\n", "TASK [nginx : create home page for default site] *******************************\r\n", @@ -490,20 +547,20 @@ "changed: [192.168.60.12]\r\n", "\r\n", "TASK [nginx : start nginx service] *********************************************\r\n", - "ok: [192.168.60.12]\r\n", - "ok: [192.168.60.11]\r\n", "ok: [192.168.60.13]\r\n", + "ok: [192.168.60.11]\r\n", + "ok: [192.168.60.12]\r\n", "\r\n", "RUNNING HANDLER [nginx : restart nginx service] ********************************\r\n", - "changed: [192.168.60.13]\r\n", "changed: [192.168.60.11]\r\n", + "changed: [192.168.60.13]\r\n", "changed: [192.168.60.12]\r\n", "\r\n", "TASK [debug] *******************************************************************\r\n", - "ok: [192.168.60.12] => {\r\n", + "ok: [192.168.60.11] => {\r\n", " \"msg\": \"I\\\":\\\" Done configuring nginx web server...\"\r\n", "}\r\n", - "ok: [192.168.60.11] => {\r\n", + "ok: [192.168.60.12] => {\r\n", " \"msg\": \"I\\\":\\\" Done configuring nginx web server...\"\r\n", "}\r\n", "ok: [192.168.60.13] => {\r\n", @@ -511,9 +568,9 @@ "}\r\n", "\r\n", "PLAY RECAP *********************************************************************\r\n", - "192.168.60.11 : ok=12 changed=4 unreachable=0 failed=0 \r\n", - "192.168.60.12 : ok=12 changed=4 unreachable=0 failed=0 \r\n", - "192.168.60.13 : ok=12 changed=4 unreachable=0 failed=0 \r\n", + "192.168.60.11 : ok=12 changed=7 unreachable=0 failed=0 \r\n", + "192.168.60.12 : ok=12 changed=7 unreachable=0 failed=0 \r\n", + "192.168.60.13 : ok=12 changed=7 unreachable=0 failed=0 \r\n", "\r\n" ] } @@ -522,9 +579,21 @@ "ansible-playbook -i customhosts site.yml" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Beachten Sie dabie folgendes:\n", + "\n", + "* Die pre_tasks und post_tasks Ausführung.\n", + "* Die Rolle base wird ausgeführt. Warum?\n", + "\n", + "Der Funktiontest könnte so aussehen:" + ] + }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -533,17 +602,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "phpMyAdmin
\r\n", "
\r\n", " \"phpMyAdmin\"\r\n", "

Welcome to phpMyAdmin

\r\n", - "
Language
\r\n", + "
Language
\r\n", "
\r\n", " \r\n", "
\r\n", @@ -561,7 +630,7 @@ "\r\n", "
\r\n", "
\r\n", - "
\r\n", + " \r\n", "
" ] } @@ -571,13 +640,15 @@ ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": { "collapsed": true }, - "outputs": [], - "source": [] + "source": [ + "OOPS: Da leckt noch Öl raus, da muss man noch bei.\n", + "\n", + "M.a.W: Es wird noch die pma geladen und nicht unsere Webseite. Unsere Rolle muss noch angepasste werden." + ] } ], "metadata": { From e3267a338ab30b86de28374a79723d0b5d2d4f33 Mon Sep 17 00:00:00 2001 From: kraeml Date: Sun, 16 Oct 2016 10:07:15 +0200 Subject: [PATCH 3/7] =?UTF-8?q?Einf=C3=BCgen=20des=20handler=20Links?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02_Rollen.ipynb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/02_Rollen.ipynb b/02_Rollen.ipynb index 67273ad..ad708ed 100644 --- a/02_Rollen.ipynb +++ b/02_Rollen.ipynb @@ -406,7 +406,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In der Datei configure.yml wird der Handler \"restart nginx serice\" aufgerufen. Dieser wird über den Ordner handlers/ in der main.yml gesucht und gefunden." + "In der Datei configure.yml wird der Handler \"restart nginx serice\" aufgerufen. Dieser wird über den Ordner handlers/ in der main.yml gesucht und gefunden.\n", + "\n", + "Mehr hierzu unter: http://docs.ansible.com/ansible/playbooks_intro.html#handlers-running-operations-on-change" ] }, { From a7b728b4092f9445369c73c8dd1a7a25e517a093 Mon Sep 17 00:00:00 2001 From: kraeml Date: Sun, 16 Oct 2016 10:10:34 +0200 Subject: [PATCH 4/7] Rechtschreibfehler ausgemerzt --- 02_Rollen.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/02_Rollen.ipynb b/02_Rollen.ipynb index ad708ed..79d44b7 100644 --- a/02_Rollen.ipynb +++ b/02_Rollen.ipynb @@ -6,9 +6,9 @@ "source": [ "# Modular mit Ansible Rollen\n", "\n", - "Würde man seine Infrastruktur mit Webservern, Datenbanken, Loadbalancer, Queues und so weiter in einem Playbook verwalten, würde dies zu einer riesigen Abfolge von Aktionen führen.\n", + "Würde man seine Infrastruktur mit Webservern, Datenbanken, Loadbalancer, Queues und so weiter in einem Playbook verwalten, würde dies zu einer riesigen Abfolge von Aktionen in __einem__ Skript führen.\n", "\n", - "Darüber hinaus kann man eine Teil z.B. Datenbanken nicht in anderen Projekten wieter verwenden.\n", + "Darüber hinaus kann man eine Teil z.B. Datenbanken nicht in anderen Projekten weiter verwenden.\n", "\n", "Hier kommen Rollen ins Spiel. Zum Beispiel für:\n", "\n", From 7e7b0458c4d9933fa1691217f5a12bee9195debb Mon Sep 17 00:00:00 2001 From: kraeml Date: Sun, 16 Oct 2016 10:19:20 +0200 Subject: [PATCH 5/7] Rechtschreibung und Formatierung --- 02_Rollen.ipynb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/02_Rollen.ipynb b/02_Rollen.ipynb index 79d44b7..8a629d9 100644 --- a/02_Rollen.ipynb +++ b/02_Rollen.ipynb @@ -144,7 +144,7 @@ "metadata": {}, "source": [ "Rollen werden u.a. unter dem Ordner roles/ abgelegt. Können aber auch über mehrere Ordner verteilt abgelegt werden wie z.B. /deploy/ansible/roles und /deploy/ansible/community/roles.\n", - "Dies kann über eine Datei ansible.cfg mit dem Eitrag\n", + "Dies kann über eine Datei ansible.cfg mit dem Eintrag\n", " \n", " roles_path = /deploy/ansible/roles:/deploy/ansible/community/roles\n", " \n", @@ -152,7 +152,9 @@ "\n", "Mehr über Rollen hier: http://docs.ansible.com/ansible/playbooks_roles.html\n", "\n", - "Jede Rolle bekommt einen Ornder mit ihrem Rolen-Namen. Diese Ornder können weitere Unterordner haben. Der wichtigste ist der tasks/ Ordner. Es gibt aber noch weitere wichtige Ordner wie handlers/, templates/, files/, meta/, vars/ uvw. Normalerweise beinhalten alle diese Ornder eine Datei main.yml.\n", + "und über ansible.cfg: http://docs.ansible.com/ansible/intro_configuration.html\n", + "\n", + "Jede Rolle bekommt einen Ornder mit ihrem Rolen-Namen. Diese Ornder können weitere Unterordner haben. Der wichtigste ist der tasks/ Ordner. Es gibt aber noch weitere wichtige Ordner wie handlers/, templates/, files/, meta/, vars/ uvw. Normalerweise beinhalten alle diese Ornder eine Datei mit dem Namen main.yml.\n", "\n", "Wie können Rollen aufgerufen werden? Schauen wir uns das Playbook site.yml an:" ] @@ -184,6 +186,8 @@ "source": [ "In Playbooks können Teile mit include eingebunden werde. Diese werden im aktuellen Verzeichnis gesucht, wenn kein absoluter/relativer Pfad angegeben wurde.\n", "\n", + "Mehr über Include: http://docs.ansible.com/ansible/playbooks_roles.html#task-include-files-and-encouraging-reuse\n", + "\n", "Hier der Inhalt von www.yml" ] }, @@ -223,11 +227,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Diese Playbook wird nur für die Gruppe www ausgeführt.\n", + "Diese Playbook wird nur für die Gruppe __www__ ausgeführt.\n", "\n", - "Der Abschnitt pre_tasks bzw. post_tasks wird vor bzw. nachdem Task Abschnitt ausgeführt.\n", + "Der Abschnitt __pre_tasks__ bzw. __post_tasks__ wird vor bzw. nachdem Task Abschnitt ausgeführt.\n", "\n", - "Unser Task Block wird hier durch eine Rolle nginx abgebildet.\n", + "Unser Task Block wird hier durch eine Rolle __nginx__ abgebildet.\n", "\n", "Schauen wir uns zunächst den Meta (Beschreibung) zu dieser Rolle an." ] From 74745eacb270627f9dcafa12367e209640efc3d4 Mon Sep 17 00:00:00 2001 From: kraeml Date: Sun, 6 Nov 2016 20:16:26 +0100 Subject: [PATCH 6/7] Kapitel 2 eingearbeitet --- .gitignore | 4 - .gitignore_github | 5 + .gitignore_gitlab | 1 + 00 Erste Schritte mit ansible.ipynb | 674 +++++++------------- 01_Playbooks.ipynb | 11 +- 02_Rollen.ipynb | 48 +- Kap2_Rollen/customhosts | 14 + Kap2_Rollen/roles/base/tasks/main.yml | 8 + Kap2_Rollen/roles/nginx/files/default.conf | 9 + Kap2_Rollen/roles/nginx/files/index.html | 6 + Kap2_Rollen/roles/nginx/handlers/main.yml | 4 + Kap2_Rollen/roles/nginx/meta/main.yml | 4 + Kap2_Rollen/roles/nginx/tasks/configure.yml | 8 + Kap2_Rollen/roles/nginx/tasks/install.yml | 5 + Kap2_Rollen/roles/nginx/tasks/main.yml | 7 + Kap2_Rollen/roles/nginx/tasks/service.yml | 3 + Kap2_Rollen/site.yml | 3 + Kap2_Rollen/www.yml | 14 + passwort | 1 + simple_playbook.yml | 21 + ssh-add-passphrase.sh | 5 + 21 files changed, 389 insertions(+), 466 deletions(-) create mode 100644 .gitignore_github create mode 100644 .gitignore_gitlab create mode 100644 Kap2_Rollen/customhosts create mode 100644 Kap2_Rollen/roles/base/tasks/main.yml create mode 100644 Kap2_Rollen/roles/nginx/files/default.conf create mode 100644 Kap2_Rollen/roles/nginx/files/index.html create mode 100644 Kap2_Rollen/roles/nginx/handlers/main.yml create mode 100644 Kap2_Rollen/roles/nginx/meta/main.yml create mode 100644 Kap2_Rollen/roles/nginx/tasks/configure.yml create mode 100644 Kap2_Rollen/roles/nginx/tasks/install.yml create mode 100644 Kap2_Rollen/roles/nginx/tasks/main.yml create mode 100644 Kap2_Rollen/roles/nginx/tasks/service.yml create mode 100644 Kap2_Rollen/site.yml create mode 100644 Kap2_Rollen/www.yml create mode 100644 passwort create mode 100644 simple_playbook.yml create mode 100755 ssh-add-passphrase.sh diff --git a/.gitignore b/.gitignore index 1d4b9f0..87620ac 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1 @@ .ipynb_checkpoints/ -passwort -Kap2_Rollen/ -simple_playbook.yml -ssh-add-passphrase.sh diff --git a/.gitignore_github b/.gitignore_github new file mode 100644 index 0000000..1d4b9f0 --- /dev/null +++ b/.gitignore_github @@ -0,0 +1,5 @@ +.ipynb_checkpoints/ +passwort +Kap2_Rollen/ +simple_playbook.yml +ssh-add-passphrase.sh diff --git a/.gitignore_gitlab b/.gitignore_gitlab new file mode 100644 index 0000000..87620ac --- /dev/null +++ b/.gitignore_gitlab @@ -0,0 +1 @@ +.ipynb_checkpoints/ diff --git a/00 Erste Schritte mit ansible.ipynb b/00 Erste Schritte mit ansible.ipynb index 53a0a7a..4a72aab 100644 --- a/00 Erste Schritte mit ansible.ipynb +++ b/00 Erste Schritte mit ansible.ipynb @@ -52,7 +52,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "ansible 2.1.1.0\r\n", + "ansible 2.1.2.0\r\n", " config file = \r\n", " configured module search path = Default w/o overrides\r\n" ] @@ -84,311 +84,75 @@ "text": [ "\u001b[33mThe directory '/home/vagrant/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.\u001b[0m\r\n", "\u001b[33mThe directory '/home/vagrant/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.\u001b[0m\r\n", - "Collecting ansible\r\n", - " Downloading ansible-2.1.2.0.tar.gz (1.9MB)\r\n", - "\u001b[?25l\r", - "\u001b[K 0% |▏ | 10kB 1.0MB/s eta 0:00:02\r", - "\u001b[K 1% |▍ | 20kB 1.3MB/s eta 0:00:02\r", - "\u001b[K 1% |▌ | 30kB 1.4MB/s eta 0:00:02\r", - "\u001b[K 2% |▊ | 40kB 1.4MB/s eta 0:00:02\r", - "\u001b[K 2% |▉ | 51kB 1.3MB/s eta 0:00:02\r", - "\u001b[K 3% |█ | 61kB 1.6MB/s eta 0:00:02\r", - "\u001b[K 3% |█▏ | 71kB 1.5MB/s eta 0:00:02\r", - "\u001b[K 4% |█▍ | 81kB 1.4MB/s eta 0:00:02\r", - "\u001b[K 4% |█▋ | 92kB 1.6MB/s eta 0:00:02\r", - "\u001b[K 5% |█▊ | 102kB 1.6MB/s eta 0:00:02\r", - "\u001b[K 5% |██ | 112kB 1.8MB/s eta 0:00:01\r", - "\u001b[K 6% |██ | 122kB 1.7MB/s eta 0:00:02\r", - "\u001b[K 7% |██▎ | 133kB 1.6MB/s eta 0:00:02\r", - "\u001b[K 7% |██▍ | 143kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 8% |██▋ | 153kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 8% |██▉ | 163kB 1.7MB/s eta 0:00:02\r", - "\u001b[K 9% |███ | 174kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 9% |███▏ | 184kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 10% |███▎ | 194kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 10% |███▌ | 204kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 11% |███▋ | 215kB 1.6MB/s eta 0:00:02\r", - "\u001b[K 11% |███▉ | 225kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 12% |████ | 235kB 1.8MB/s eta 0:00:01\r", - "\u001b[K 13% |████▏ | 245kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 13% |████▍ | 256kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 14% |████▌ | 266kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 14% |████▊ | 276kB 1.8MB/s eta 0:00:01\r", - "\u001b[K 15% |████▉ | 286kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 15% |█████ | 296kB 1.6MB/s eta 0:00:01\r", - "\u001b[K 16% |█████▎ | 307kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 16% |█████▍ | 317kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 17% |█████▋ | 327kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 17% |█████▊ | 337kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 18% |██████ | 348kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 19% |██████ | 358kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 19% |██████▎ | 368kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 20% |██████▌ | 378kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 20% |██████▋ | 389kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 21% |██████▉ | 399kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 21% |███████ | 409kB 1.6MB/s eta 0:00:01\r", - "\u001b[K 22% |███████▏ | 419kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 22% |███████▎ | 430kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 23% |███████▌ | 440kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 23% |███████▋ | 450kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 24% |███████▉ | 460kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 25% |████████ | 471kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 25% |████████▏ | 481kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 26% |████████▍ | 491kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 26% |████████▌ | 501kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 27% |████████▊ | 512kB 1.8MB/s eta 0:00:01\r", - "\u001b[K 27% |████████▉ | 522kB 1.8MB/s eta 0:00:01\r", - "\u001b[K 28% |█████████ | 532kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 28% |█████████▎ | 542kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 29% |█████████▍ | 552kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 29% |█████████▋ | 563kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 30% |█████████▊ | 573kB 1.6MB/s eta 0:00:01\r", - "\u001b[K 31% |██████████ | 583kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 31% |██████████ | 593kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 32% |██████████▎ | 604kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 32% |██████████▌ | 614kB 2.1MB/s eta 0:00:01\r", - "\u001b[K 33% |██████████▋ | 624kB 1.8MB/s eta 0:00:01\r", - "\u001b[K 33% |██████████▉ | 634kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 34% |███████████ | 645kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 34% |███████████▏ | 655kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 35% |███████████▎ | 665kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 35% |███████████▌ | 675kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 36% |███████████▊ | 686kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 37% |███████████▉ | 696kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 37% |████████████ | 706kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 38% |████████████▏ | 716kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 38% |████████████▍ | 727kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 39% |████████████▌ | 737kB 1.6MB/s eta 0:00:01\r", - "\u001b[K 39% |████████████▊ | 747kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 40% |█████████████ | 757kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 40% |█████████████ | 768kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 41% |█████████████▎ | 778kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 41% |█████████████▍ | 788kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 42% |█████████████▋ | 798kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 43% |█████████████▊ | 808kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 43% |██████████████ | 819kB 1.6MB/s eta 0:00:01\r", - "\u001b[K 44% |██████████████ | 829kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 44% |██████████████▎ | 839kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 45% |██████████████▌ | 849kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 45% |██████████████▋ | 860kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 46% |██████████████▉ | 870kB 1.6MB/s eta 0:00:01\r", - "\u001b[K 46% |███████████████ | 880kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 47% |███████████████▏ | 890kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 47% |███████████████▎ | 901kB 1.6MB/s eta 0:00:01\r", - "\u001b[K 48% |███████████████▌ | 911kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 48% |███████████████▊ | 921kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 49% |███████████████▉ | 931kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 50% |████████████████ | 942kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 50% |████████████████▏ | 952kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 51% |████████████████▍ | 962kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 51% |████████████████▌ | 972kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 52% |████████████████▊ | 983kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 52% |█████████████████ | 993kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 53% |█████████████████ | 1.0MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 53% |█████████████████▎ | 1.0MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 54% |█████████████████▍ | 1.0MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 54% |█████████████████▋ | 1.0MB 1.6MB/s eta 0:00:01\r", - "\u001b[K 55% |█████████████████▊ | 1.0MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 56% |██████████████████ | 1.1MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 56% |██████████████████▏ | 1.1MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 57% |██████████████████▎ | 1.1MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 57% |██████████████████▌ | 1.1MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 58% |██████████████████▋ | 1.1MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 58% |██████████████████▉ | 1.1MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 59% |███████████████████ | 1.1MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 59% |███████████████████▏ | 1.1MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 60% |███████████████████▍ | 1.1MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 60% |███████████████████▌ | 1.1MB 1.5MB/s eta 0:00:01\r", - "\u001b[K 61% |███████████████████▊ | 1.2MB 1.6MB/s eta 0:00:01\r", - "\u001b[K 62% |███████████████████▉ | 1.2MB 1.8MB/s eta 0:00:01\r", - "\u001b[K 62% |████████████████████ | 1.2MB 1.8MB/s eta 0:00:01\r", - "\u001b[K 63% |████████████████████▏ | 1.2MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 63% |████████████████████▍ | 1.2MB 1.6MB/s eta 0:00:01\r", - "\u001b[K 64% |████████████████████▌ | 1.2MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 64% |████████████████████▊ | 1.2MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 65% |█████████████████████ | 1.2MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 65% |█████████████████████ | 1.2MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 66% |█████████████████████▎ | 1.2MB 2.3MB/s eta 0:00:01\r", - "\u001b[K 66% |█████████████████████▍ | 1.3MB 2.3MB/s eta 0:00:01\r", - "\u001b[K 67% |█████████████████████▋ | 1.3MB 2.0MB/s eta 0:00:01\r", - "\u001b[K 68% |█████████████████████▊ | 1.3MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 68% |██████████████████████ | 1.3MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 69% |██████████████████████▏ | 1.3MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 69% |██████████████████████▎ | 1.3MB 1.6MB/s eta 0:00:01\r", - "\u001b[K 70% |██████████████████████▌ | 1.3MB 1.8MB/s eta 0:00:01\r", - "\u001b[K 70% |██████████████████████▋ | 1.3MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 71% |██████████████████████▉ | 1.3MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 71% |███████████████████████ | 1.4MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 72% |███████████████████████▏ | 1.4MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 72% |███████████████████████▍ | 1.4MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 73% |███████████████████████▌ | 1.4MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 74% |███████████████████████▊ | 1.4MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 74% |███████████████████████▉ | 1.4MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 75% |████████████████████████ | 1.4MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 75% |████████████████████████▏ | 1.4MB 2.0MB/s eta 0:00:01\r", - "\u001b[K 76% |████████████████████████▍ | 1.4MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 76% |████████████████████████▋ | 1.4MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 77% |████████████████████████▊ | 1.5MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 77% |█████████████████████████ | 1.5MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 78% |█████████████████████████ | 1.5MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 78% |█████████████████████████▎ | 1.5MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 79% |█████████████████████████▍ | 1.5MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 80% |█████████████████████████▋ | 1.5MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 80% |█████████████████████████▉ | 1.5MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 81% |██████████████████████████ | 1.5MB 1.6MB/s eta 0:00:01\r", - "\u001b[K 81% |██████████████████████████▏ | 1.5MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 82% |██████████████████████████▎ | 1.5MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 82% |██████████████████████████▌ | 1.6MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 83% |██████████████████████████▋ | 1.6MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 83% |██████████████████████████▉ | 1.6MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 84% |███████████████████████████ | 1.6MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 84% |███████████████████████████▏ | 1.6MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 85% |███████████████████████████▍ | 1.6MB 1.6MB/s eta 0:00:01\r", - "\u001b[K 86% |███████████████████████████▌ | 1.6MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 86% |███████████████████████████▊ | 1.6MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 87% |███████████████████████████▉ | 1.6MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 87% |████████████████████████████ | 1.6MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 88% |████████████████████████████▏ | 1.7MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 88% |████████████████████████████▍ | 1.7MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 89% |████████████████████████████▋ | 1.7MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 89% |████████████████████████████▊ | 1.7MB 1.6MB/s eta 0:00:01\r", - "\u001b[K 90% |█████████████████████████████ | 1.7MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 90% |█████████████████████████████ | 1.7MB 2.0MB/s eta 0:00:01\r", - "\u001b[K 91% |█████████████████████████████▎ | 1.7MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 91% |█████████████████████████████▍ | 1.7MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 92% |█████████████████████████████▋ | 1.7MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 93% |█████████████████████████████▉ | 1.8MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 93% |██████████████████████████████ | 1.8MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 94% |██████████████████████████████▏ | 1.8MB 1.6MB/s eta 0:00:01\r", - "\u001b[K 94% |██████████████████████████████▎ | 1.8MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 95% |██████████████████████████████▌ | 1.8MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 95% |██████████████████████████████▋ | 1.8MB 1.7MB/s eta 0:00:01\r", - "\u001b[K 96% |██████████████████████████████▉ | 1.8MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 96% |███████████████████████████████ | 1.8MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 97% |███████████████████████████████▏| 1.8MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 97% |███████████████████████████████▍| 1.8MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 98% |███████████████████████████████▌| 1.9MB 1.6MB/s eta 0:00:01\r", - "\u001b[K 99% |███████████████████████████████▊| 1.9MB 1.9MB/s eta 0:00:01\r", - "\u001b[K 99% |███████████████████████████████▉| 1.9MB 2.0MB/s eta 0:00:01\r", - "\u001b[K 100% |████████████████████████████████| 1.9MB 185kB/s \r\n", - "\u001b[?25hRequirement already up-to-date: paramiko in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", - "Requirement already up-to-date: jinja2 in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", + "Requirement already up-to-date: ansible in /usr/local/lib/python2.7/dist-packages\r\n", "Requirement already up-to-date: PyYAML in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", "Collecting setuptools (from ansible)\r\n", - " Downloading setuptools-28.5.0-py2.py3-none-any.whl (471kB)\r\n", + " Downloading setuptools-28.6.0-py2.py3-none-any.whl (471kB)\r\n", "\u001b[?25l\r", - "\u001b[K 2% |▊ | 10kB 23.8MB/s eta 0:00:01\r", - "\u001b[K 4% |█▍ | 20kB 3.5MB/s eta 0:00:01\r", - "\u001b[K 6% |██ | 30kB 4.7MB/s eta 0:00:01\r", - "\u001b[K 8% |██▉ | 40kB 1.2MB/s eta 0:00:01\r", - "\u001b[K 10% |███▌ | 51kB 1.5MB/s eta 0:00:01\r", - "\u001b[K 13% |████▏ | 61kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 15% |████▉ | 71kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 17% |█████▋ | 81kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 19% |██████▎ | 92kB 2.2MB/s eta 0:00:01\r", - "\u001b[K 21% |███████ | 102kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 23% |███████▋ | 112kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 26% |████████▍ | 122kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 28% |█████████ | 133kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 30% |█████████▊ | 143kB 2.9MB/s eta 0:00:01\r", - "\u001b[K 32% |██████████▍ | 153kB 2.4MB/s eta 0:00:01\r", - "\u001b[K 34% |███████████▏ | 163kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 36% |███████████▉ | 174kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 39% |████████████▌ | 184kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 41% |█████████████▏ | 194kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 43% |██████████████ | 204kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 45% |██████████████▋ | 215kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 47% |███████████████▎ | 225kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 49% |████████████████ | 235kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 52% |████████████████▊ | 245kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 54% |█████████████████▍ | 256kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 56% |██████████████████ | 266kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 58% |██████████████████▊ | 276kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 60% |███████████████████▌ | 286kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 62% |████████████████████▏ | 296kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 65% |████████████████████▉ | 307kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 67% |█████████████████████▌ | 317kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 69% |██████████████████████▎ | 327kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 71% |███████████████████████ | 337kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 73% |███████████████████████▋ | 348kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 75% |████████████████████████▎ | 358kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 78% |█████████████████████████ | 368kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 80% |█████████████████████████▊ | 378kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 82% |██████████████████████████▍ | 389kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 84% |███████████████████████████ | 399kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 86% |███████████████████████████▉ | 409kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 88% |████████████████████████████▌ | 419kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 91% |█████████████████████████████▏ | 430kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 93% |█████████████████████████████▉ | 440kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 95% |██████████████████████████████▋ | 450kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 97% |███████████████████████████████▎| 460kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 99% |████████████████████████████████| 471kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 100% |████████████████████████████████| 481kB 679kB/s \r\n", - "\u001b[?25hRequirement already up-to-date: pycrypto>=2.6 in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", + "\u001b[K 2% |▊ | 10kB 32.6MB/s eta 0:00:01\r", + "\u001b[K 4% |█▍ | 20kB 1.5MB/s eta 0:00:01\r", + "\u001b[K 6% |██ | 30kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 8% |██▊ | 40kB 1.4MB/s eta 0:00:01\r", + "\u001b[K 10% |███▌ | 51kB 1.2MB/s eta 0:00:01\r", + "\u001b[K 13% |████▏ | 61kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 15% |████▉ | 71kB 1.2MB/s eta 0:00:01\r", + "\u001b[K 17% |█████▌ | 81kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 19% |██████▎ | 92kB 1.2MB/s eta 0:00:01\r", + "\u001b[K 21% |███████ | 102kB 1.2MB/s eta 0:00:01\r", + "\u001b[K 23% |███████▋ | 112kB 993kB/s eta 0:00:01\r", + "\u001b[K 26% |████████▎ | 122kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 28% |█████████ | 133kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 30% |█████████▊ | 143kB 972kB/s eta 0:00:01\r", + "\u001b[K 32% |██████████▍ | 153kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 34% |███████████ | 163kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 36% |███████████▉ | 174kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 39% |████████████▌ | 184kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 41% |█████████████▏ | 194kB 972kB/s eta 0:00:01\r", + "\u001b[K 43% |█████████████▉ | 204kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 45% |██████████████▋ | 215kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 47% |███████████████▎ | 225kB 969kB/s eta 0:00:01\r", + "\u001b[K 49% |████████████████ | 235kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 52% |████████████████▋ | 245kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 54% |█████████████████▍ | 256kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 56% |██████████████████ | 266kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 58% |██████████████████▊ | 276kB 970kB/s eta 0:00:01\r", + "\u001b[K 60% |███████████████████▍ | 286kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 62% |████████████████████▏ | 296kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 65% |████████████████████▉ | 307kB 971kB/s eta 0:00:01\r", + "\u001b[K 67% |█████████████████████▌ | 317kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 69% |██████████████████████▏ | 327kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 71% |███████████████████████ | 337kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 73% |███████████████████████▋ | 348kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 75% |████████████████████████▎ | 358kB 970kB/s eta 0:00:01\r", + "\u001b[K 78% |█████████████████████████ | 368kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 80% |█████████████████████████▊ | 378kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 82% |██████████████████████████▍ | 389kB 969kB/s eta 0:00:01\r", + "\u001b[K 84% |███████████████████████████ | 399kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 86% |███████████████████████████▊ | 409kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 88% |████████████████████████████▌ | 419kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 91% |█████████████████████████████▏ | 430kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 93% |█████████████████████████████▉ | 440kB 970kB/s eta 0:00:01\r", + "\u001b[K 95% |██████████████████████████████▌ | 450kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 97% |███████████████████████████████▎| 460kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 99% |████████████████████████████████| 471kB 1.1MB/s eta 0:00:01\r", + "\u001b[K 100% |████████████████████████████████| 481kB 864kB/s \r\n", + "\u001b[?25hRequirement already up-to-date: jinja2 in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", + "Requirement already up-to-date: paramiko in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", + "Requirement already up-to-date: pycrypto>=2.6 in /usr/local/lib/python2.7/dist-packages (from ansible)\r\n", + "Requirement already up-to-date: MarkupSafe in /usr/local/lib/python2.7/dist-packages (from jinja2->ansible)\r\n", "Requirement already up-to-date: pyasn1>=0.1.7 in /usr/local/lib/python2.7/dist-packages (from paramiko->ansible)\r\n", - "Collecting cryptography>=1.1 (from paramiko->ansible)\r\n", - " Downloading cryptography-1.5.2.tar.gz (400kB)\r\n", - "\u001b[?25l\r", - "\u001b[K 2% |▉ | 10kB 12.0MB/s eta 0:00:01\r", - "\u001b[K 5% |█▋ | 20kB 10.9MB/s eta 0:00:01\r", - "\u001b[K 7% |██▌ | 30kB 13.0MB/s eta 0:00:01\r", - "\u001b[K 10% |███▎ | 40kB 12.5MB/s eta 0:00:01\r", - "\u001b[K 12% |████ | 51kB 12.7MB/s eta 0:00:01\r", - "\u001b[K 15% |█████ | 61kB 13.3MB/s eta 0:00:01\r", - "\u001b[K 17% |█████▊ | 71kB 12.9MB/s eta 0:00:01\r", - "\u001b[K 20% |██████▌ | 81kB 6.7MB/s eta 0:00:01\r", - "\u001b[K 23% |███████▍ | 92kB 7.1MB/s eta 0:00:01\r", - "\u001b[K 25% |████████▏ | 102kB 4.8MB/s eta 0:00:01\r", - "\u001b[K 28% |█████████ | 112kB 4.9MB/s eta 0:00:01\r", - "\u001b[K 30% |█████████▉ | 122kB 3.6MB/s eta 0:00:01\r", - "\u001b[K 33% |██████████▋ | 133kB 2.8MB/s eta 0:00:01\r", - "\u001b[K 35% |███████████▌ | 143kB 2.8MB/s eta 0:00:01\r", - "\u001b[K 38% |████████████▎ | 153kB 2.3MB/s eta 0:00:01\r", - "\u001b[K 40% |█████████████ | 163kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 43% |██████████████ | 174kB 2.0MB/s eta 0:00:01\r", - "\u001b[K 46% |██████████████▊ | 184kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 48% |███████████████▌ | 194kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 51% |████████████████▍ | 204kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 53% |█████████████████▏ | 215kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 56% |██████████████████ | 225kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 58% |██████████████████▉ | 235kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 61% |███████████████████▋ | 245kB 1.6MB/s eta 0:00:01\r", - "\u001b[K 63% |████████████████████▌ | 256kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 66% |█████████████████████▎ | 266kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 69% |██████████████████████ | 276kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 71% |███████████████████████ | 286kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 74% |███████████████████████▊ | 296kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 76% |████████████████████████▌ | 307kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 79% |█████████████████████████▍ | 317kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 81% |██████████████████████████▏ | 327kB 1.7MB/s eta 0:00:01\r", - "\u001b[K 84% |███████████████████████████ | 337kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 86% |███████████████████████████▉ | 348kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 89% |████████████████████████████▋ | 358kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 92% |█████████████████████████████▍ | 368kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 94% |██████████████████████████████▎ | 378kB 1.6MB/s eta 0:00:01\r", - "\u001b[K 97% |███████████████████████████████ | 389kB 1.9MB/s eta 0:00:01\r", - "\u001b[K 99% |████████████████████████████████| 399kB 2.1MB/s eta 0:00:01\r", - "\u001b[K 100% |████████████████████████████████| 409kB 995kB/s \r\n", - "\u001b[?25hRequirement already up-to-date: MarkupSafe in /usr/local/lib/python2.7/dist-packages (from jinja2->ansible)\r\n", - "Requirement already up-to-date: idna>=2.0 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", + "Requirement already up-to-date: cryptography>=1.1 in /usr/local/lib/python2.7/dist-packages (from paramiko->ansible)\r\n", + "Requirement already up-to-date: ipaddress in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", "Requirement already up-to-date: six>=1.4.1 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", "Requirement already up-to-date: enum34 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", - "Requirement already up-to-date: ipaddress in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", + "Requirement already up-to-date: idna>=2.0 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", "Requirement already up-to-date: cffi>=1.4.1 in /usr/local/lib/python2.7/dist-packages (from cryptography>=1.1->paramiko->ansible)\r\n", "Requirement already up-to-date: pycparser in /usr/local/lib/python2.7/dist-packages (from cffi>=1.4.1->cryptography>=1.1->paramiko->ansible)\r\n", - "Installing collected packages: setuptools, ansible, cryptography\r\n", - " Found existing installation: setuptools 28.0.0\r\n", - " Uninstalling setuptools-28.0.0:\r\n", - " Successfully uninstalled setuptools-28.0.0\r\n", - " Found existing installation: ansible 2.1.1.0\r\n", - " Uninstalling ansible-2.1.1.0:\r\n", - " Successfully uninstalled ansible-2.1.1.0\r\n", - " Running setup.py install for ansible ... \u001b[?25l-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \bdone\r\n", - "\u001b[?25h Found existing installation: cryptography 1.5\r\n", - " Uninstalling cryptography-1.5:\r\n", - " Successfully uninstalled cryptography-1.5\r\n", - " Running setup.py install for cryptography ... \u001b[?25l-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \b/\b \b-\b \b\\\b \b|\b \bdone\r\n", - "\u001b[?25hSuccessfully installed ansible-2.1.2.0 cryptography-1.5.2 setuptools-28.5.0\r\n" + "Installing collected packages: setuptools\r\n", + " Found existing installation: setuptools 28.3.0\r\n", + " Uninstalling setuptools-28.3.0:\r\n", + " Successfully uninstalled setuptools-28.3.0\r\n", + "Successfully installed setuptools-28.6.0\r\n" ] } ], @@ -439,8 +203,8 @@ "text": [ "insgesamt 12K\r\n", "525129 drwxr-xr-x 3 root root 4,0K Sep 21 17:17 .\r\n", - "262145 drwxr-xr-x 115 root root 4,0K Okt 16 09:47 ..\r\n", - "525175 drwxr-xr-x 10 root root 4,0K Sep 29 15:11 roles\r\n" + "262145 drwxr-xr-x 115 root root 4,0K Okt 17 08:07 ..\r\n", + "525175 drwxr-xr-x 10 root root 4,0K Okt 12 20:34 roles\r\n" ] } ], @@ -460,20 +224,29 @@ "name": "stdout", "output_type": "stream", "text": [ - "[local]\r\n", - "localhost ansible_connection=local\r\n", + "[ctl]\r\n", + "127.0.0.1 ansible_connection=local\r\n", "\r\n", "[www]\r\n", - "192.168.60.11 ansible_ssh_user=vagrant\r\n", - "192.168.60.12 ansible_ssh_user=vagrant\r\n", - "192.168.60.13 ansible_ssh_user=vagrant\r\n", + "192.168.60.11\r\n", + "192.168.60.12\r\n", + "192.168.60.13\r\n", + "\r\n", + "[db]\r\n", + "192.168.60.21\r\n", + "192.168.60.22\r\n", "\r\n", "[lb]\r\n", - "192.168.60.2 ansible_ssh_user=vagrant\r\n", + "192.168.60.2\r\n", "\r\n", - "[db]\r\n", - "192.168.60.21 ansible_ssh_user=vagrant\r\n", - "192.168.60.22 ansible_ssh_user=vagrant\r\n" + "[backend:children]\r\n", + "www\r\n", + "db\r\n", + "\r\n", + "# Point of entry\r\n", + "[poe:children]\r\n", + "lb\r\n", + "www\r\n" ] } ], @@ -483,7 +256,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -492,7 +265,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "localhost | SUCCESS => {\r\n", + "127.0.0.1 | SUCCESS => {\r\n", " \"changed\": false, \r\n", " \"ping\": \"pong\"\r\n", "}\r\n" @@ -500,7 +273,7 @@ } ], "source": [ - "ansible local -m ping" + "ansible ctl -m ping" ] }, { @@ -520,7 +293,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -533,18 +306,18 @@ "Your identification has been saved in /home/vagrant/.ssh/id_rsa.\r\n", "Your public key has been saved in /home/vagrant/.ssh/id_rsa.pub.\r\n", "The key fingerprint is:\r\n", - "SHA256:DXoe1DItKK98DdCEjxA/sbuWEfPV8BO6phx3eBRvTtE vagrant@ctl\r\n", + "SHA256:KJ1V10SR4xSUA6dhrKkjrYB6CNwiwYPg8rewNjWZqVY vagrant@ctl\r\n", "The key's randomart image is:\r\n", "+---[RSA 2048]----+\r\n", - "| ..... . o .. |\r\n", - "| ...= . B + .E |\r\n", - "| .Ooo O B + |\r\n", - "| .X.+ X = |\r\n", - "| o * S + . |\r\n", - "| . * X + |\r\n", - "| * + o |\r\n", - "| . . |\r\n", - "| |\r\n", + "| ..=*B= |\r\n", + "|. . o.+B |\r\n", + "|= . o.o o |\r\n", + "|++ . + o . |\r\n", + "|ooo..++.S. |\r\n", + "|oo+.E.. + |\r\n", + "|oo.B + o . |\r\n", + "|o B . . |\r\n", + "| + . |\r\n", "+----[SHA256]-----+\r\n" ] } @@ -577,7 +350,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -598,7 +371,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -607,9 +380,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "|1|7nLSZ+5ZbQ0DnckT1P5xBpTOdwI=|dp5f+PDFq7ZBMJxFh5ssRyXKglo= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU171qwSgbEtEal2fCozSU7wsNRzA2H/DuUaLku6xRazRkfQZnFHcDn5pFk/GhHLTCwDRXz7nnnbBFFJK3jr03AsOr6rtqJuojQEIh1Yz1wKI4Dvvawteb8UnveKcef7OGs6a2nphGC+ZYX8txu+gdSF9HNVxGbUyFtbNeKRpAPCRgAkHfh1stxwPK8BQiaPQbEHSWzPer1G38Qsq1QzbKXWrizU057i5pw38cdRQ8CaVYe9u+rUnNEOfGjpESh06lb1vdZDEmily7D0jWDW7+Tw7hbr3uw+wUiJaVEGrBbQQotIqcrWTz6AqrwXKdZpklJZkcPx5JGS3Ym13AUBDB\r\n", - "|1|wl6MhE8ZQYoTrO8iTBA7bD1bD88=|cpj96pgPj3L3JOQVFdox14diBCo= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOUj8l+Ejj53rTy5+9bMcbINLRZ6UFxaK6fRE6uklH7YvPh08DepyspTONUWuwwYSwJuHBldP8Joafx5jNuW2sI=\r\n", - "|1|ebyV+znGTlPi3HMGLVfL1cokRLY=|zInwZSPr+XNpNz3m6Wpv0p9wBgA= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAc42trNYnv58q3PiJSJ+lLhkHY9NOX4kVrrJdC8fJLf\r\n" + "|1|plnagrukktq51R6s86RfFo5LpWc=|Y3qGwPjRHth9gb7tBlbEl24C/jg= ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU171qwSgbEtEal2fCozSU7wsNRzA2H/DuUaLku6xRazRkfQZnFHcDn5pFk/GhHLTCwDRXz7nnnbBFFJK3jr03AsOr6rtqJuojQEIh1Yz1wKI4Dvvawteb8UnveKcef7OGs6a2nphGC+ZYX8txu+gdSF9HNVxGbUyFtbNeKRpAPCRgAkHfh1stxwPK8BQiaPQbEHSWzPer1G38Qsq1QzbKXWrizU057i5pw38cdRQ8CaVYe9u+rUnNEOfGjpESh06lb1vdZDEmily7D0jWDW7+Tw7hbr3uw+wUiJaVEGrBbQQotIqcrWTz6AqrwXKdZpklJZkcPx5JGS3Ym13AUBDB\r\n", + "|1|E2JMOtS40Z89qlsiSDy99ynMaTY=|oIN/lWhb5VoHoPvciSUbAlkpLjA= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOUj8l+Ejj53rTy5+9bMcbINLRZ6UFxaK6fRE6uklH7YvPh08DepyspTONUWuwwYSwJuHBldP8Joafx5jNuW2sI=\r\n", + "|1|WX4OU3NhdMdxeMIsXTI69q932pc=|s9UgWihQrQxhQM4P6004v59Zzb8= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAc42trNYnv58q3PiJSJ+lLhkHY9NOX4kVrrJdC8fJLf\r\n" ] } ], @@ -626,7 +399,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -638,71 +411,69 @@ "\r", "0% [Wird verarbeitet]\r", " \r", - "OK:1 http://ppa.launchpad.net/chronitis/jupyter/ubuntu xenial InRelease\r\n", + "OK:1 http://de.archive.ubuntu.com/ubuntu xenial InRelease\r\n", "\r", - "0% [Warten auf Kopfzeilen] [Warten auf Kopfzeilen] [Warten auf Kopfzeilen] [Ver\r", + "0% [Warten auf Kopfzeilen] [Verbindung mit security.ubuntu.com (91.189.91.26)] \r", + "0% [1 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [Warten auf Kopfzeilen] [W\r", " \r", - "OK:2 http://de.archive.ubuntu.com/ubuntu xenial InRelease\r\n", + "OK:2 http://ppa.launchpad.net/chronitis/jupyter/ubuntu xenial InRelease\r\n", "\r", + "0% [1 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [Warten auf Kopfzeilen] [W\r", " \r", - "Holen:3 http://security.ubuntu.com/ubuntu xenial-security InRelease [94,5 kB]\r\n", + "OK:3 http://de.archive.ubuntu.com/ubuntu xenial-updates InRelease\r\n", "\r", - "0% [Warten auf Kopfzeilen] [3 InRelease 14,0 kB/94,5 kB 15%] [Warten auf Kopfze\r", - "0% [1 InRelease gpgv 18,1 kB] [Warten auf Kopfzeilen] [3 InRelease 14,0 kB/94,5\r", + "0% [1 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [Warten auf Kopfzeilen] [W\r", " \r", - "OK:4 http://ppa.launchpad.net/nginx/stable/ubuntu xenial InRelease\r\n", + "OK:4 http://de.archive.ubuntu.com/ubuntu xenial-backports InRelease\r\n", "\r", - "0% [1 InRelease gpgv 18,1 kB] [Warten auf Kopfzeilen] [3 InRelease 19,7 kB/94,5\r", " \r", - "OK:5 http://de.archive.ubuntu.com/ubuntu xenial-updates InRelease\r\n", + "OK:5 http://ppa.launchpad.net/nginx/stable/ubuntu xenial InRelease\r\n", "\r", - "0% [1 InRelease gpgv 18,1 kB] [3 InRelease 41,1 kB/94,5 kB 44%] [Warten auf Kop\r", " \r", - "OK:6 http://ppa.launchpad.net/nijel/phpmyadmin/ubuntu xenial InRelease\r\n", + "Ign:6 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 InRelease\r\n", "\r", - "0% [1 InRelease gpgv 18,1 kB] [Warten auf Kopfzeilen] [3 InRelease 41,1 kB/94,5\r", " \r", - "OK:7 http://de.archive.ubuntu.com/ubuntu xenial-backports InRelease\r\n", + "0% [1 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [Warten auf Kopfzeilen]\r", + " \r", + "OK:7 http://security.ubuntu.com/ubuntu xenial-security InRelease\r\n", "\r", - "0% [1 InRelease gpgv 18,1 kB] [3 InRelease 93,9 kB/94,5 kB 99%] [Warten auf Kop\r", - " \r", - "Ign:8 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 InRelease\r\n", + "0% [1 InRelease gpgv 247 kB] [Warten auf Kopfzeilen] [Warten auf Kopfzeilen]\r", + " \r", + "OK:8 http://ppa.launchpad.net/nijel/phpmyadmin/ubuntu xenial InRelease\r\n", "\r", - " \r", - "0% [1 InRelease gpgv 18,1 kB] [3 InRelease 93,9 kB/94,5 kB 99%]\r", - " \r", - "0% [1 InRelease gpgv 18,1 kB] [Warten auf Kopfzeilen]\r", - " \r", + " \r", + "0% [1 InRelease gpgv 247 kB] [Warten auf Kopfzeilen]\r", + " \r", "OK:9 http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 Release\r\n", "\r", - " \r", - "0% [1 InRelease gpgv 18,1 kB]\r", - " \r", - "0% [Wird verarbeitet]\r", - "0% [2 InRelease gpgv 247 kB]\r", + " \r", + "0% [1 InRelease gpgv 247 kB]\r", " \r", + "0% [Wird verarbeitet]\r", + "0% [2 InRelease gpgv 18,1 kB]\r", + " \r", "OK:10 https://apt.dockerproject.org/repo ubuntu-xenial InRelease\r\n", "\r", - "0% [2 InRelease gpgv 247 kB]\r", - " \r", + "0% [2 InRelease gpgv 18,1 kB]\r", + " \r", "OK:11 https://deb.nodesource.com/node_4.x xenial InRelease\r\n", "\r", - "0% [2 InRelease gpgv 247 kB]\r", - " \r", + "0% [2 InRelease gpgv 18,1 kB]\r", + " \r", "0% [Wird verarbeitet]\r", - "0% [4 InRelease gpgv 17,5 kB]\r", + "0% [3 InRelease gpgv 95,7 kB]\r", " \r", "0% [Wird verarbeitet]\r", - "0% [5 InRelease gpgv 95,7 kB]\r", + "0% [4 InRelease gpgv 92,2 kB]\r", " \r", "0% [Wird verarbeitet]\r", - "0% [6 InRelease gpgv 17,5 kB]\r", + "0% [5 InRelease gpgv 17,5 kB]\r", " \r", "0% [Wird verarbeitet]\r", - "0% [7 InRelease gpgv 92,2 kB]\r", + "0% [7 InRelease gpgv 94,5 kB]\r", " \r", "0% [Wird verarbeitet]\r", - "0% [3 InRelease gpgv 94,5 kB]\r", + "0% [8 InRelease gpgv 17,5 kB]\r", " \r", "0% [Wird verarbeitet]\r", "0% [Release.gpg gpgv 3.462 B]\r", @@ -713,9 +484,8 @@ "0% [Wird verarbeitet]\r", "0% [11 InRelease gpgv 3.914 B]\r", " \r", - "100% [Wird verarbeitet]\r", - " \r", - "Es wurden 94,5 kB in 1 s geholt (53,0 kB/s).\r\n", + "20% [Wird verarbeitet]\r", + " \r", "\r", "Paketlisten werden gelesen... 0%\r", "\r", @@ -755,15 +525,13 @@ "\r", "Paketlisten werden gelesen... 13%\r", "\r", - "Paketlisten werden gelesen... 17%\r", - "\r", - "Paketlisten werden gelesen... 32%\r", + "Paketlisten werden gelesen... 22%\r", "\r", "Paketlisten werden gelesen... 40%\r", "\r", "Paketlisten werden gelesen... 40%\r", "\r", - "Paketlisten werden gelesen... 47%\r", + "Paketlisten werden gelesen... 40%\r", "\r", "Paketlisten werden gelesen... 65%\r", "\r", @@ -799,8 +567,6 @@ "\r", "Paketlisten werden gelesen... 90%\r", "\r", - "Paketlisten werden gelesen... 90%\r", - "\r", "Paketlisten werden gelesen... 92%\r", "\r", "Paketlisten werden gelesen... 92%\r", @@ -857,6 +623,8 @@ "\r", "Paketlisten werden gelesen... 96%\r", "\r", + "Paketlisten werden gelesen... 96%\r", + "\r", "Paketlisten werden gelesen... 97%\r", "\r", "Paketlisten werden gelesen... 97%\r", @@ -963,9 +731,7 @@ "\r", "Abhängigkeitsbaum wird aufgebaut.... 50%\r", "\r", - "Abhängigkeitsbaum wird aufgebaut.... 100%\r", - "\r", - "Abhängigkeitsbaum wird aufgebaut. \r", + "Abhängigkeitsbaum wird aufgebaut. \r", "\r\n", "\r", "Statusinformationen werden eingelesen.... 0%\r", @@ -976,7 +742,7 @@ "\r\n", "Die folgenden NEUEN Pakete werden installiert:\r\n", " sshpass\r\n", - "0 aktualisiert, 1 neu installiert, 0 zu entfernen und 56 nicht aktualisiert.\r\n", + "0 aktualisiert, 1 neu installiert, 0 zu entfernen und 8 nicht aktualisiert.\r\n", "Es müssen 10,5 kB an Archiven heruntergeladen werden.\r\n", "Nach dieser Operation werden 56,3 kB Plattenplatz zusätzlich benutzt.\r\n", "\r", @@ -984,11 +750,11 @@ " \r", "Holen:1 http://de.archive.ubuntu.com/ubuntu xenial/universe amd64 sshpass amd64 1.05-1 [10,5 kB]\r\n", "\r", - "20% [1 sshpass 2.606 B/10,5 kB 25%]\r", - " \r", + "0% [1 sshpass 0 B/10,5 kB 0%]\r", + " \r", "100% [Wird verarbeitet]\r", " \r", - "Es wurden 10,5 kB in 0 s geholt (127 kB/s).\r\n", + "Es wurden 10,5 kB in 0 s geholt (28,3 kB/s).\r\n", "debconf: kann Oberfläche nicht initialisieren: Dialog\r\n", "debconf: (Die Dialog-Oberfläche funktioniert nicht auf einem Dumb-Terminal, einem Emacs-Shellbuffer oder ohne ein steuerndes Terminal.)\r\n", "debconf: greife zurück auf die Oberfläche: Readline\r\n", @@ -1014,7 +780,7 @@ "(Lese Datenbank ... 90%\r", "(Lese Datenbank ... 95%\r", "(Lese Datenbank ... 100%\r", - "(Lese Datenbank ... 216383 Dateien und Verzeichnisse sind derzeit installiert.)\r\n", + "(Lese Datenbank ... 243033 Dateien und Verzeichnisse sind derzeit installiert.)\r\n", "Vorbereitung zum Entpacken von .../sshpass_1.05-1_amd64.deb ...\r\n", "Entpacken von sshpass (1.05-1) ...\r\n", "Trigger für man-db (2.7.5-1) werden verarbeitet ...\r\n", @@ -1029,7 +795,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -1066,7 +832,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -1091,8 +857,6 @@ "\r", "Abhängigkeitsbaum wird aufgebaut.... 50%\r", "\r", - "Abhängigkeitsbaum wird aufgebaut.... 86%\r", - "\r", "Abhängigkeitsbaum wird aufgebaut. \r", "\r\n", "\r", @@ -1106,7 +870,7 @@ " tcl-expect\r\n", "Die folgenden NEUEN Pakete werden installiert:\r\n", " expect tcl-expect\r\n", - "0 aktualisiert, 2 neu installiert, 0 zu entfernen und 56 nicht aktualisiert.\r\n", + "0 aktualisiert, 2 neu installiert, 0 zu entfernen und 8 nicht aktualisiert.\r\n", "Es müssen 241 kB an Archiven heruntergeladen werden.\r\n", "Nach dieser Operation werden 538 kB Plattenplatz zusätzlich benutzt.\r\n", "\r", @@ -1114,8 +878,8 @@ " \r", "Holen:1 http://de.archive.ubuntu.com/ubuntu xenial/universe amd64 tcl-expect amd64 5.45-7 [104 kB]\r\n", "\r", - "1% [1 tcl-expect 4.044 B/104 kB 4%]\r", - " \r", + "0% [1 tcl-expect 0 B/104 kB 0%]\r", + " \r", "44% [Wird verarbeitet]\r", " \r", "Holen:2 http://de.archive.ubuntu.com/ubuntu xenial/universe amd64 expect amd64 5.45-7 [137 kB]\r\n", @@ -1124,7 +888,7 @@ " \r", "100% [Wird verarbeitet]\r", " \r", - "Es wurden 241 kB in 0 s geholt (739 kB/s).\r\n", + "Es wurden 241 kB in 0 s geholt (548 kB/s).\r\n", "debconf: kann Oberfläche nicht initialisieren: Dialog\r\n", "debconf: (Die Dialog-Oberfläche funktioniert nicht auf einem Dumb-Terminal, einem Emacs-Shellbuffer oder ohne ein steuerndes Terminal.)\r\n", "debconf: greife zurück auf die Oberfläche: Readline\r\n", @@ -1150,7 +914,7 @@ "(Lese Datenbank ... 90%\r", "(Lese Datenbank ... 95%\r", "(Lese Datenbank ... 100%\r", - "(Lese Datenbank ... 216388 Dateien und Verzeichnisse sind derzeit installiert.)\r\n", + "(Lese Datenbank ... 243038 Dateien und Verzeichnisse sind derzeit installiert.)\r\n", "Vorbereitung zum Entpacken von .../tcl-expect_5.45-7_amd64.deb ...\r\n", "Entpacken von tcl-expect:amd64 (5.45-7) ...\r\n", "Vormals nicht ausgewähltes Paket expect wird gewählt.\r\n", @@ -1170,7 +934,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": { "collapsed": false }, @@ -1188,7 +952,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -1218,7 +982,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -1242,7 +1006,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -1251,13 +1015,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "SSH_AGENT_PID=6583\r\n", + "SSH_AGENT_PID=6823\r\n", "XDG_SESSION_ID=c1\r\n", "SHELL=/bin/bash\r\n", "USER=vagrant\r\n", "LS_COLORS=\r\n", - "SSH_AUTH_SOCK=/tmp/ssh-8ALBajNVCqA4/agent.6582\r\n", - "JPY_PARENT_PID=1365\r\n", + "SSH_AUTH_SOCK=/tmp/ssh-RRBJIWd9Q84l/agent.6822\r\n", + "JPY_PARENT_PID=1269\r\n", "PAGER=cat\r\n", "MAIL=/var/mail/vagrant\r\n", "PATH=/home/vagrant/.gem/ruby/2.3.0/bin:/home/vagrant/bin:/home/vagrant/.local/bin:/usr/local/lib/npm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin\r\n", @@ -1266,8 +1030,8 @@ "LANG=de_DE.UTF-8\r\n", "NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript:/usr/local/lib/npm/lib/node_modules\r\n", "PS1=[PEXP\\[\\]ECT_PROMPT>\r\n", - "HOME=/home/vagrant\r\n", "SHLVL=2\r\n", + "HOME=/home/vagrant\r\n", "LOGNAME=vagrant\r\n", "LESSOPEN=| /usr/bin/lesspipe %s\r\n", "XDG_RUNTIME_DIR=/run/user/1000\r\n", @@ -1282,7 +1046,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -1291,12 +1055,33 @@ "name": "stdout", "output_type": "stream", "text": [ - "2048 SHA256:DXoe1DItKK98DdCEjxA/sbuWEfPV8BO6phx3eBRvTtE /home/vagrant/.ssh/id_rsa (RSA)\r\n" + "declare -x HOME=\"/home/vagrant\"\r\n", + "declare -x JPY_PARENT_PID=\"1269\"\r\n", + "declare -x LANG=\"de_DE.UTF-8\"\r\n", + "declare -x LESSCLOSE=\"/usr/bin/lesspipe %s %s\"\r\n", + "declare -x LESSOPEN=\"| /usr/bin/lesspipe %s\"\r\n", + "declare -x LOGNAME=\"vagrant\"\r\n", + "declare -x LS_COLORS=\"\"\r\n", + "declare -x MAIL=\"/var/mail/vagrant\"\r\n", + "declare -x NODE_PATH=\"/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript:/usr/local/lib/npm/lib/node_modules\"\r\n", + "declare -x NPM_CONFIG_PREFIX=\"/usr/local/lib/npm\"\r\n", + "declare -x OLDPWD\r\n", + "declare -x PAGER=\"cat\"\r\n", + "declare -x PATH=\"/home/vagrant/.gem/ruby/2.3.0/bin:/home/vagrant/bin:/home/vagrant/.local/bin:/usr/local/lib/npm/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin\"\r\n", + "declare -x PS1=\"[PEXP\\\\[\\\\]ECT_PROMPT>\"\r\n", + "declare -x PWD=\"/home/vagrant/projects\"\r\n", + "declare -x SHELL=\"/bin/bash\"\r\n", + "declare -x SHLVL=\"2\"\r\n", + "declare -x SSH_AGENT_PID=\"6823\"\r\n", + "declare -x SSH_AUTH_SOCK=\"/tmp/ssh-RRBJIWd9Q84l/agent.6822\"\r\n", + "declare -x USER=\"vagrant\"\r\n", + "declare -x XDG_RUNTIME_DIR=\"/run/user/1000\"\r\n", + "declare -x XDG_SESSION_ID=\"c1\"\r\n" ] } ], "source": [ - "ssh-add -l" + "export" ] }, { @@ -1305,6 +1090,25 @@ "metadata": { "collapsed": false }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2048 SHA256:KJ1V10SR4xSUA6dhrKkjrYB6CNwiwYPg8rewNjWZqVY /home/vagrant/.ssh/id_rsa (RSA)\r\n" + ] + } + ], + "source": [ + "ssh-add -l" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, "outputs": [ { "name": "stdout", @@ -1334,7 +1138,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -1411,7 +1215,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -1420,15 +1224,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "192.168.60.2 | SUCCESS => {\r\n", + "127.0.0.1 | SUCCESS => {\r\n", " \"changed\": false, \r\n", " \"ping\": \"pong\"\r\n", "}\r\n", - "192.168.60.12 | SUCCESS => {\r\n", + "192.168.60.21 | SUCCESS => {\r\n", " \"changed\": false, \r\n", " \"ping\": \"pong\"\r\n", "}\r\n", - "192.168.60.22 | SUCCESS => {\r\n", + "192.168.60.2 | SUCCESS => {\r\n", " \"changed\": false, \r\n", " \"ping\": \"pong\"\r\n", "}\r\n", @@ -1436,15 +1240,15 @@ " \"changed\": false, \r\n", " \"ping\": \"pong\"\r\n", "}\r\n", - "192.168.60.21 | SUCCESS => {\r\n", + "192.168.60.12 | SUCCESS => {\r\n", " \"changed\": false, \r\n", " \"ping\": \"pong\"\r\n", "}\r\n", - "localhost | SUCCESS => {\r\n", + "192.168.60.13 | SUCCESS => {\r\n", " \"changed\": false, \r\n", " \"ping\": \"pong\"\r\n", "}\r\n", - "192.168.60.13 | SUCCESS => {\r\n", + "192.168.60.22 | SUCCESS => {\r\n", " \"changed\": false, \r\n", " \"ping\": \"pong\"\r\n", "}\r\n" @@ -1457,7 +1261,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 24, "metadata": { "collapsed": false }, @@ -1480,39 +1284,43 @@ " 12 echo $?\r\n", " 13 ansible local -m ping\r\n", " 14 echo $?\r\n", - " 15 if [ -f ~/.ssh/id_rsa ]; then rm ~/.ssh/id_rsa*; fi && ssh-keygen -t rsa -f ~/.ssh/id_rsa -N geheim\r\n", + " 15 ansible ctl -m ping\r\n", " 16 echo $?\r\n", - " 17 ssh-keyscan -H 192.168.60.2 >> ~/.ssh/known_hosts\r\n", + " 17 if [ -f ~/.ssh/id_rsa ]; then rm ~/.ssh/id_rsa*; fi && ssh-keygen -t rsa -f ~/.ssh/id_rsa -N geheim\r\n", " 18 echo $?\r\n", - " 19 cat ~/.ssh/known_hosts\r\n", + " 19 ssh-keyscan -H 192.168.60.2 >> ~/.ssh/known_hosts\r\n", " 20 echo $?\r\n", - " 21 sudo apt-get update\r\n", - " 22 sudo apt-get install -y sshpass\r\n", - " 23 echo $?\r\n", - " 24 echo 'vagrant' > passwort\r\n", - " 25 sshpass -f passwort ssh-copy-id vagrant@192.168.60.2\r\n", - " 26 echo $?\r\n", - " 27 sudo apt-get install -y expect\r\n", + " 21 cat ~/.ssh/known_hosts\r\n", + " 22 echo $?\r\n", + " 23 sudo apt-get update\r\n", + " 24 sudo apt-get install -y sshpass\r\n", + " 25 echo $?\r\n", + " 26 echo 'vagrant' > passwort\r\n", + " 27 sshpass -f passwort ssh-copy-id vagrant@192.168.60.2\r\n", " 28 echo $?\r\n", - " 29 cp /vagrant/ssh-add-passphrase.sh ./\r\n", - " 30 chmod u+x ssh-add-passphrase.sh\r\n", - " 31 echo $?\r\n", - " 32 cat ssh-add-passphrase.sh\r\n", + " 29 sudo apt-get install -y expect\r\n", + " 30 echo $?\r\n", + " 31 cp /vagrant/ssh-add-passphrase.sh ./\r\n", + " 32 chmod u+x ssh-add-passphrase.sh\r\n", " 33 echo $?\r\n", - " 34 eval `ssh-agent -s` > /dev/null\r\n", - " 35 ./ssh-add-passphrase.sh\r\n", - " 36 echo $?\r\n", - " 37 env\r\n", + " 34 cat ssh-add-passphrase.sh\r\n", + " 35 echo $?\r\n", + " 36 eval `ssh-agent -s` > /dev/null\r\n", + " 37 ./ssh-add-passphrase.sh\r\n", " 38 echo $?\r\n", - " 39 ssh-add -l\r\n", + " 39 env\r\n", " 40 echo $?\r\n", - " 41 ansible lb -m ping\r\n", + " 41 ssh-add -l\r\n", " 42 echo $?\r\n", - " 43 for i in 11 12 13 21 22; do ssh-keyscan -H 192.168.60.${i} >> ~/.ssh/known_hosts; sshpass -f passwort ssh-copy-id vagrant@192.168.60.${i}; done\r\n", + " 43 export\r\n", " 44 echo $?\r\n", - " 45 ansible all -m ping\r\n", + " 45 ansible lb -m ping\r\n", " 46 echo $?\r\n", - " 47 history\r\n" + " 47 for i in 11 12 13 21 22; do ssh-keyscan -H 192.168.60.${i} >> ~/.ssh/known_hosts; sshpass -f passwort ssh-copy-id vagrant@192.168.60.${i}; done\r\n", + " 48 echo $?\r\n", + " 49 ansible all -m ping\r\n", + " 50 echo $?\r\n", + " 51 history\r\n" ] } ], diff --git a/01_Playbooks.ipynb b/01_Playbooks.ipynb index 47fb7e4..b91dd39 100644 --- a/01_Playbooks.ipynb +++ b/01_Playbooks.ipynb @@ -9,11 +9,12 @@ "# YAML Dateien\n", "\n", "\n", - "* Die erste Zeile eines Playbooks sollte mit \"---\" beginnen (drei Bindestriche), diese zeigt den Beginn des YAML-Dokuments an.\n", - "* Listen in YAML werden mit einem Bindestrich \"-\" dargestellt, gefolgt von einem Leerraum.\n", - "* Ein Playbook enthält eine Liste von Spielanweisungen; Sie werden mit \"-\" dargestellt. Jedes Spiel ist ein assoziatives Array, ein Dictonary oder eine Map in Form von Schlüssel/Wert-Paaren.\n", - "* Einrückungen sind wichtig. Alle Mitglieder einer Liste sollten gleich sein Eingerückt sein.\n", - "* Jede Spielanwiesung kann Schlüssel-Wert-Paare enthalten, getrennt durch \":\", um Hosts, Variablen, Rollen, Aufgaben und so weiter.\n", + "* Die erste Zeile eines Playbooks sollte mit \"---\" beginnen (drei Bindestriche). Diese zeigt den Beginn eines YAML-Dokumentes an.\n", + "* Listen in YAML werden mit einem Bindestrich \"-\" gefolgt von einem Leerraum dargestellt.\n", + "* Ein Playbook enthält eine Liste von Spielanweisungen;\n", + "Sie werden mit \"-\" dargestellt. Jedes Spiel ist ein assoziatives Array, ein Dictonary oder eine Map in Form von Schlüssel/Wert-Paaren.\n", + "* Einrückungen sind wichtig. Alle Mitglieder einer Liste sollten gleich Eingerückt sein.\n", + "* Jede Spielanwiesung kann Schlüssel-Wert-Paare enthalten, getrennt durch \":\", um Hosts, Variablen, Rollen, Aufgaben und so weiter anzugeben.\n", "\n", "## Weblinks\n", "\n", diff --git a/02_Rollen.ipynb b/02_Rollen.ipynb index 8a629d9..1cf6ca9 100644 --- a/02_Rollen.ipynb +++ b/02_Rollen.ipynb @@ -64,7 +64,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -81,7 +81,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -100,7 +100,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -110,33 +110,33 @@ "output_type": "stream", "text": [ ".\r\n", - "├── customhosts\r\n", - "├── roles\r\n", - "│   ├── base\r\n", - "│   │   └── tasks\r\n", - "│   │   └── main.yml\r\n", - "│   └── nginx\r\n", - "│   ├── files\r\n", - "│   │   ├── default.conf\r\n", - "│   │   └── index.html\r\n", - "│   ├── handlers\r\n", - "│   │   └── main.yml\r\n", - "│   ├── meta\r\n", - "│   │   └── main.yml\r\n", - "│   └── tasks\r\n", - "│   ├── configure.yml\r\n", - "│   ├── install.yml\r\n", - "│   ├── main.yml\r\n", - "│   └── service.yml\r\n", - "├── site.yml\r\n", - "└── www.yml\r\n", + "|-- customhosts\r\n", + "|-- roles\r\n", + "| |-- base\r\n", + "| | `-- tasks\r\n", + "| | `-- main.yml\r\n", + "| `-- nginx\r\n", + "| |-- files\r\n", + "| | |-- default.conf\r\n", + "| | `-- index.html\r\n", + "| |-- handlers\r\n", + "| | `-- main.yml\r\n", + "| |-- meta\r\n", + "| | `-- main.yml\r\n", + "| `-- tasks\r\n", + "| |-- configure.yml\r\n", + "| |-- install.yml\r\n", + "| |-- main.yml\r\n", + "| `-- service.yml\r\n", + "|-- site.yml\r\n", + "`-- www.yml\r\n", "\r\n", "8 directories, 12 files\r\n" ] } ], "source": [ - "tree" + "tree --charset=ascii" ] }, { diff --git a/Kap2_Rollen/customhosts b/Kap2_Rollen/customhosts new file mode 100644 index 0000000..da51e9e --- /dev/null +++ b/Kap2_Rollen/customhosts @@ -0,0 +1,14 @@ +[local] +localhost ansible_connection=local + +[www] +192.168.60.11 ansible_ssh_user=vagrant +192.168.60.12 ansible_ssh_user=vagrant +192.168.60.13 ansible_ssh_user=vagrant + +[lb] +192.168.60.2 ansible_ssh_user=vagrant + +[db] +192.168.60.21 ansible_ssh_user=vagrant +192.168.60.22 ansible_ssh_user=vagrant diff --git a/Kap2_Rollen/roles/base/tasks/main.yml b/Kap2_Rollen/roles/base/tasks/main.yml new file mode 100644 index 0000000..95a28ca --- /dev/null +++ b/Kap2_Rollen/roles/base/tasks/main.yml @@ -0,0 +1,8 @@ +--- +# essential tasks. should run on all nodes + - name: creating devops group + group: name=devops state=present + - name: create devops user with admin previleges + user: name=devops comment="Devops User" uid=2001 group=devops + - name: install htop package + action: apt name=htop state=present update_cache=yes diff --git a/Kap2_Rollen/roles/nginx/files/default.conf b/Kap2_Rollen/roles/nginx/files/default.conf new file mode 100644 index 0000000..8272f43 --- /dev/null +++ b/Kap2_Rollen/roles/nginx/files/default.conf @@ -0,0 +1,9 @@ +server { + listen 80; + server_name localhost; + + location / { + root /usr/share/nginx/html; + index index.html; + } +} diff --git a/Kap2_Rollen/roles/nginx/files/index.html b/Kap2_Rollen/roles/nginx/files/index.html new file mode 100644 index 0000000..7ffd81d --- /dev/null +++ b/Kap2_Rollen/roles/nginx/files/index.html @@ -0,0 +1,6 @@ + + +

Ole Ole Ole

+

Welcome to FIFA World Cup News Portal

+ + diff --git a/Kap2_Rollen/roles/nginx/handlers/main.yml b/Kap2_Rollen/roles/nginx/handlers/main.yml new file mode 100644 index 0000000..8b6bf5c --- /dev/null +++ b/Kap2_Rollen/roles/nginx/handlers/main.yml @@ -0,0 +1,4 @@ +--- +- name: restart nginx service + service: name=nginx state=restarted + diff --git a/Kap2_Rollen/roles/nginx/meta/main.yml b/Kap2_Rollen/roles/nginx/meta/main.yml new file mode 100644 index 0000000..5e5bdd6 --- /dev/null +++ b/Kap2_Rollen/roles/nginx/meta/main.yml @@ -0,0 +1,4 @@ +--- +dependencies: + - { role: base} + diff --git a/Kap2_Rollen/roles/nginx/tasks/configure.yml b/Kap2_Rollen/roles/nginx/tasks/configure.yml new file mode 100644 index 0000000..72260d9 --- /dev/null +++ b/Kap2_Rollen/roles/nginx/tasks/configure.yml @@ -0,0 +1,8 @@ +--- + - name: create default site configurations + copy: src=default.conf dest=/etc/nginx/conf.d/default.conf mode=0644 + notify: + - restart nginx service + - name: create home page for default site + copy: src=index.html dest=/usr/share/nginx/html/index.html + diff --git a/Kap2_Rollen/roles/nginx/tasks/install.yml b/Kap2_Rollen/roles/nginx/tasks/install.yml new file mode 100644 index 0000000..c254722 --- /dev/null +++ b/Kap2_Rollen/roles/nginx/tasks/install.yml @@ -0,0 +1,5 @@ +--- + - name: add official nginx repository + apt_repository: repo='deb http://nginx.org/packages/ubuntu/ lucid nginx' + - name: install nginx web server and ensure its at the latest version + apt: name=nginx state=latest force=yes diff --git a/Kap2_Rollen/roles/nginx/tasks/main.yml b/Kap2_Rollen/roles/nginx/tasks/main.yml new file mode 100644 index 0000000..6c179e2 --- /dev/null +++ b/Kap2_Rollen/roles/nginx/tasks/main.yml @@ -0,0 +1,7 @@ +--- +# This is main tasks file for nginx role + - include: install.yml + - include: configure.yml + - include: service.yml + + diff --git a/Kap2_Rollen/roles/nginx/tasks/service.yml b/Kap2_Rollen/roles/nginx/tasks/service.yml new file mode 100644 index 0000000..c34f65e --- /dev/null +++ b/Kap2_Rollen/roles/nginx/tasks/service.yml @@ -0,0 +1,3 @@ +--- + - name: start nginx service + service: name=nginx state=started diff --git a/Kap2_Rollen/site.yml b/Kap2_Rollen/site.yml new file mode 100644 index 0000000..df83c65 --- /dev/null +++ b/Kap2_Rollen/site.yml @@ -0,0 +1,3 @@ +--- +# This is a sitewide playbook +- include: www.yml diff --git a/Kap2_Rollen/www.yml b/Kap2_Rollen/www.yml new file mode 100644 index 0000000..77f6ad6 --- /dev/null +++ b/Kap2_Rollen/www.yml @@ -0,0 +1,14 @@ +--- +- hosts: www + remote_user: vagrant + become: yes + pre_tasks: + - debug: + msg: 'I":" Beginning to configure web server..' + + roles: + - nginx + + post_tasks: + - debug: + msg: 'I":" Done configuring nginx web server...' diff --git a/passwort b/passwort new file mode 100644 index 0000000..d6a9762 --- /dev/null +++ b/passwort @@ -0,0 +1 @@ +vagrant diff --git a/simple_playbook.yml b/simple_playbook.yml new file mode 100644 index 0000000..667ba55 --- /dev/null +++ b/simple_playbook.yml @@ -0,0 +1,21 @@ +--- +- hosts: all + remote_user: vagrant + become: yes + tasks: + - group: name=devops state=present + - name: create devops user with admin previleges + user: name=devops comment="Devops User" uid=2001 group=devops + - name: install htop package + apt: name=htop state=present update_cache=yes + +- hosts: www + user: vagrant + become: yes + tasks: + - name: add official nginx repository + apt_repository: repo='ppa:nginx/stable' + - name: install nginx web server and ensure its at the latest version + apt: name=nginx state=latest + - name: + service: name=nginx state=started diff --git a/ssh-add-passphrase.sh b/ssh-add-passphrase.sh new file mode 100755 index 0000000..16bac9d --- /dev/null +++ b/ssh-add-passphrase.sh @@ -0,0 +1,5 @@ +#!/usr/bin/expect -f +spawn ssh-add /home/vagrant/.ssh/id_rsa +expect "Enter passphrase for /home/vagrant/.ssh/id_rsa:" +send "geheim\n"; +interact From 2e6f5d9d7575007c9f049918f41ee02d2b44a831 Mon Sep 17 00:00:00 2001 From: kraeml Date: Sun, 6 Nov 2016 20:30:24 +0100 Subject: [PATCH 7/7] Kapitel2 eingearbeitet --- .gitignore | 5 +++++ .gitignore_github | 1 + .gitignore_gitlab | 1 - Kap2_Rollen/customhosts | 14 -------------- Kap2_Rollen/roles/base/tasks/main.yml | 8 -------- Kap2_Rollen/roles/nginx/files/default.conf | 9 --------- Kap2_Rollen/roles/nginx/files/index.html | 6 ------ Kap2_Rollen/roles/nginx/handlers/main.yml | 4 ---- Kap2_Rollen/roles/nginx/meta/main.yml | 4 ---- Kap2_Rollen/roles/nginx/tasks/configure.yml | 8 -------- Kap2_Rollen/roles/nginx/tasks/install.yml | 5 ----- Kap2_Rollen/roles/nginx/tasks/main.yml | 7 ------- Kap2_Rollen/roles/nginx/tasks/service.yml | 3 --- Kap2_Rollen/site.yml | 3 --- Kap2_Rollen/www.yml | 14 -------------- passwort | 1 - simple_playbook.yml | 21 --------------------- ssh-add-passphrase.sh | 5 ----- 18 files changed, 6 insertions(+), 113 deletions(-) delete mode 100644 .gitignore_gitlab delete mode 100644 Kap2_Rollen/customhosts delete mode 100644 Kap2_Rollen/roles/base/tasks/main.yml delete mode 100644 Kap2_Rollen/roles/nginx/files/default.conf delete mode 100644 Kap2_Rollen/roles/nginx/files/index.html delete mode 100644 Kap2_Rollen/roles/nginx/handlers/main.yml delete mode 100644 Kap2_Rollen/roles/nginx/meta/main.yml delete mode 100644 Kap2_Rollen/roles/nginx/tasks/configure.yml delete mode 100644 Kap2_Rollen/roles/nginx/tasks/install.yml delete mode 100644 Kap2_Rollen/roles/nginx/tasks/main.yml delete mode 100644 Kap2_Rollen/roles/nginx/tasks/service.yml delete mode 100644 Kap2_Rollen/site.yml delete mode 100644 Kap2_Rollen/www.yml delete mode 100644 passwort delete mode 100644 simple_playbook.yml delete mode 100755 ssh-add-passphrase.sh diff --git a/.gitignore b/.gitignore index 87620ac..6c17944 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,6 @@ .ipynb_checkpoints/ +passwort +Kap2_Rollen/ +simple_playbook.yml +ssh-add-passphrase.sh +.gitignore_gitlab diff --git a/.gitignore_github b/.gitignore_github index 1d4b9f0..6c17944 100644 --- a/.gitignore_github +++ b/.gitignore_github @@ -3,3 +3,4 @@ passwort Kap2_Rollen/ simple_playbook.yml ssh-add-passphrase.sh +.gitignore_gitlab diff --git a/.gitignore_gitlab b/.gitignore_gitlab deleted file mode 100644 index 87620ac..0000000 --- a/.gitignore_gitlab +++ /dev/null @@ -1 +0,0 @@ -.ipynb_checkpoints/ diff --git a/Kap2_Rollen/customhosts b/Kap2_Rollen/customhosts deleted file mode 100644 index da51e9e..0000000 --- a/Kap2_Rollen/customhosts +++ /dev/null @@ -1,14 +0,0 @@ -[local] -localhost ansible_connection=local - -[www] -192.168.60.11 ansible_ssh_user=vagrant -192.168.60.12 ansible_ssh_user=vagrant -192.168.60.13 ansible_ssh_user=vagrant - -[lb] -192.168.60.2 ansible_ssh_user=vagrant - -[db] -192.168.60.21 ansible_ssh_user=vagrant -192.168.60.22 ansible_ssh_user=vagrant diff --git a/Kap2_Rollen/roles/base/tasks/main.yml b/Kap2_Rollen/roles/base/tasks/main.yml deleted file mode 100644 index 95a28ca..0000000 --- a/Kap2_Rollen/roles/base/tasks/main.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -# essential tasks. should run on all nodes - - name: creating devops group - group: name=devops state=present - - name: create devops user with admin previleges - user: name=devops comment="Devops User" uid=2001 group=devops - - name: install htop package - action: apt name=htop state=present update_cache=yes diff --git a/Kap2_Rollen/roles/nginx/files/default.conf b/Kap2_Rollen/roles/nginx/files/default.conf deleted file mode 100644 index 8272f43..0000000 --- a/Kap2_Rollen/roles/nginx/files/default.conf +++ /dev/null @@ -1,9 +0,0 @@ -server { - listen 80; - server_name localhost; - - location / { - root /usr/share/nginx/html; - index index.html; - } -} diff --git a/Kap2_Rollen/roles/nginx/files/index.html b/Kap2_Rollen/roles/nginx/files/index.html deleted file mode 100644 index 7ffd81d..0000000 --- a/Kap2_Rollen/roles/nginx/files/index.html +++ /dev/null @@ -1,6 +0,0 @@ - - -

Ole Ole Ole

-

Welcome to FIFA World Cup News Portal

- - diff --git a/Kap2_Rollen/roles/nginx/handlers/main.yml b/Kap2_Rollen/roles/nginx/handlers/main.yml deleted file mode 100644 index 8b6bf5c..0000000 --- a/Kap2_Rollen/roles/nginx/handlers/main.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -- name: restart nginx service - service: name=nginx state=restarted - diff --git a/Kap2_Rollen/roles/nginx/meta/main.yml b/Kap2_Rollen/roles/nginx/meta/main.yml deleted file mode 100644 index 5e5bdd6..0000000 --- a/Kap2_Rollen/roles/nginx/meta/main.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- -dependencies: - - { role: base} - diff --git a/Kap2_Rollen/roles/nginx/tasks/configure.yml b/Kap2_Rollen/roles/nginx/tasks/configure.yml deleted file mode 100644 index 72260d9..0000000 --- a/Kap2_Rollen/roles/nginx/tasks/configure.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- - - name: create default site configurations - copy: src=default.conf dest=/etc/nginx/conf.d/default.conf mode=0644 - notify: - - restart nginx service - - name: create home page for default site - copy: src=index.html dest=/usr/share/nginx/html/index.html - diff --git a/Kap2_Rollen/roles/nginx/tasks/install.yml b/Kap2_Rollen/roles/nginx/tasks/install.yml deleted file mode 100644 index c254722..0000000 --- a/Kap2_Rollen/roles/nginx/tasks/install.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- - - name: add official nginx repository - apt_repository: repo='deb http://nginx.org/packages/ubuntu/ lucid nginx' - - name: install nginx web server and ensure its at the latest version - apt: name=nginx state=latest force=yes diff --git a/Kap2_Rollen/roles/nginx/tasks/main.yml b/Kap2_Rollen/roles/nginx/tasks/main.yml deleted file mode 100644 index 6c179e2..0000000 --- a/Kap2_Rollen/roles/nginx/tasks/main.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- -# This is main tasks file for nginx role - - include: install.yml - - include: configure.yml - - include: service.yml - - diff --git a/Kap2_Rollen/roles/nginx/tasks/service.yml b/Kap2_Rollen/roles/nginx/tasks/service.yml deleted file mode 100644 index c34f65e..0000000 --- a/Kap2_Rollen/roles/nginx/tasks/service.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- - - name: start nginx service - service: name=nginx state=started diff --git a/Kap2_Rollen/site.yml b/Kap2_Rollen/site.yml deleted file mode 100644 index df83c65..0000000 --- a/Kap2_Rollen/site.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -# This is a sitewide playbook -- include: www.yml diff --git a/Kap2_Rollen/www.yml b/Kap2_Rollen/www.yml deleted file mode 100644 index 77f6ad6..0000000 --- a/Kap2_Rollen/www.yml +++ /dev/null @@ -1,14 +0,0 @@ ---- -- hosts: www - remote_user: vagrant - become: yes - pre_tasks: - - debug: - msg: 'I":" Beginning to configure web server..' - - roles: - - nginx - - post_tasks: - - debug: - msg: 'I":" Done configuring nginx web server...' diff --git a/passwort b/passwort deleted file mode 100644 index d6a9762..0000000 --- a/passwort +++ /dev/null @@ -1 +0,0 @@ -vagrant diff --git a/simple_playbook.yml b/simple_playbook.yml deleted file mode 100644 index 667ba55..0000000 --- a/simple_playbook.yml +++ /dev/null @@ -1,21 +0,0 @@ ---- -- hosts: all - remote_user: vagrant - become: yes - tasks: - - group: name=devops state=present - - name: create devops user with admin previleges - user: name=devops comment="Devops User" uid=2001 group=devops - - name: install htop package - apt: name=htop state=present update_cache=yes - -- hosts: www - user: vagrant - become: yes - tasks: - - name: add official nginx repository - apt_repository: repo='ppa:nginx/stable' - - name: install nginx web server and ensure its at the latest version - apt: name=nginx state=latest - - name: - service: name=nginx state=started diff --git a/ssh-add-passphrase.sh b/ssh-add-passphrase.sh deleted file mode 100755 index 16bac9d..0000000 --- a/ssh-add-passphrase.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/expect -f -spawn ssh-add /home/vagrant/.ssh/id_rsa -expect "Enter passphrase for /home/vagrant/.ssh/id_rsa:" -send "geheim\n"; -interact