Docker ist schon seit einiger Zeit ein Thema für mich. Aus diesem Grund gibt es auch eine extra Menüeintrag für Docker, um diese Artikel schneller finden zu können.
Um Docker mit Ansible zusammenzubringen, schauen wir uns heute an wie man Docker mittels Ansible installieren kann. Das kann zum Beispiel sinnvoll sein, wenn man Docker Cluster betreiben will und nicht jeden worker für den swarm per Hand installieren will.
Ansible Docker Rolle
Um Docker mittels Ansible zu installieren, brauchen wir erstmal einen Ordner für die neue Rolle mit dem Namen Docker. In diesem Ordner legt man einen weiteren Ordner mit dem Namen files und einen mit dem Namen tasks an. Innerhalb des tasks Ordners wird dann eine Datei mit dem Namen main.yml erstellt. Im files Ordner legt man eine Datei mit dem Namen docker.repo an. Das ganze sollte dann so aussehen:
1 2 3 4 5 | ├── docker │ ├── files │ │ └── docker.repo │ └── tasks │ └── main.yml |
Zuerst öffnet man die Datei docker.repo mit einem beliebigen Editor. In die Datei wird dann folgender Inhalt kopiert:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | [docker-ce-stable] name=Docker CE Stable - $basearch baseurl=https://download.docker.com/linux/centos/7/$basearch/stable enabled=1 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-stable-debuginfo] name=Docker CE Stable - Debuginfo $basearch baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/stable enabled=0 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-stable-source] name=Docker CE Stable - Sources baseurl=https://download.docker.com/linux/centos/7/source/stable enabled=0 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-edge] name=Docker CE Edge - $basearch baseurl=https://download.docker.com/linux/centos/7/$basearch/edge enabled=0 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-edge-debuginfo] name=Docker CE Edge - Debuginfo $basearch baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/edge enabled=0 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-edge-source] name=Docker CE Edge - Sources baseurl=https://download.docker.com/linux/centos/7/source/edge enabled=0 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-test] name=Docker CE Test - $basearch baseurl=https://download.docker.com/linux/centos/7/$basearch/test enabled=0 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-test-debuginfo] name=Docker CE Test - Debuginfo $basearch baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/test enabled=0 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-test-source] name=Docker CE Test - Sources baseurl=https://download.docker.com/linux/centos/7/source/test enabled=0 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-nightly] name=Docker CE Nightly - $basearch baseurl=https://download.docker.com/linux/centos/7/$basearch/nightly enabled=0 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-nightly-debuginfo] name=Docker CE Nightly - Debuginfo $basearch baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/nightly enabled=0 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-nightly-source] name=Docker CE Nightly - Sources baseurl=https://download.docker.com/linux/centos/7/source/nightly enabled=0 gpgcheck=1 gpgkey=https://download.docker.com/linux/centos/gpg |
Die main.yml wird anschließend mit einen Editor geöffnet. Hier müssen wir zwei Blöcke erstellen.
1 2 3 4 5 6 | - name: Docker | add repository copy: src: docker.repo dest: /etc/yum.repos.d/docker.repo mode: 0755 when: ansible_pkg_mgr == "yum" |
In diesem Block fügen wir dem System das Docker Community Repository hinzu, welches wir zuvor im files Ordner angelegt haben.
1 2 3 4 5 6 7 8 | - name: Docker | Install docker ce yum: name="{{ item }}" with_items: - yum-utils - device-mapper-persistent-data - lvm2 - docker-ce |
Anschließend werden vier Pakete installiert, die von Docker benötigt werden.
Nachdem die beiden Blöcke der Datei hinzugefügt wurden, kann die Datei gespeichert und geschlossen werden.
Testen der Ansible Docker Rolle
Um Docker nun auf einem System zu installieren, müssen wir einen Eintrage in der site.yml und der hosts Datei anlegen. Schauen wir uns zuerst die site.yml an:
1 2 3 4 5 | - name: docker hosts: docker remote_user: root roles: - docker |
Wie bereits aus anderen Artikel bekannt, erstellen wir hier eine Gruppe mit dem Namen Docker welche auf allen Hosts in der hosts Datei im Bereich Docker definiert sind. Die ssh Verbindung wird mit dem User root aufgebaut und es soll die Rolle docker ausgeführt werden.
Jetzt muss in der host Datei noch ein Bereich für Docker angelegt werden und der entsprechende Host eingetragen werden.
1 2 | [docker] 192.168.10.108 |
Jetzt können wir das ganze mit ansible-playbook ausführen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ansible-playbook site.yml -i hosts PLAY [docker] ************************************************************************************************************************************************* TASK [Gathering Facts] **************************************************************************************************************************************** ok: [192.168.10.108] TASK [docker : Docker | add repository] *********************************************************************************************************************** changed: [192.168.10.108] TASK [docker : Docker | Install docker ce] ******************************************************************************************************************** changed: [192.168.10.108] => (item=[u'yum-utils', u'device-mapper-persistent-data', u'lvm2', u'docker-ce']) PLAY RECAP **************************************************************************************************************************************************** 192.168.10.108 : ok=3 changed=2 unreachable=0 failed=0 |
Die Installation kann einen Moment dauern. Nach der Installation können wir uns auf das Zielsystem verbinden. Um zu prüfen das Docker installiert ist, kann man hier sich einmal die Version von Docker ausgeben lassen:
1 2 | docker -v Docker version 18.09.6, build 481bc77156 |
Schreibe einen Kommentar